# Diff of /trunk/escript/src/LocalOps.h

revision 2019 by phornby, Mon Nov 10 13:49:00 2008 UTC revision 2777 by jfenwick, Thu Nov 26 01:06:00 2009 UTC
# Line 1  Line 1
1
2  /*******************************************************  /*******************************************************
3  *  *
4  * Copyright (c) 2003-2008 by University of Queensland  * Copyright (c) 2003-2009 by University of Queensland
5  * Earth Systems Science Computational Center (ESSCC)  * Earth Systems Science Computational Center (ESSCC)
6  * http://www.uq.edu.au/esscc  * http://www.uq.edu.au/esscc
7  *  *
# Line 34  For operations on DataVector see DataMat Line 34  For operations on DataVector see DataMat
34
35  namespace escript {  namespace escript {
36
37    /**
38    \brief acts as a wrapper to isnan.
39    \warning if compiler does not support FP_NAN this function will always return false.
40    */
41    inline
42    bool nancheck(double d)
43    {
44    #ifndef isnan       // Q: so why not just test d!=d?
45        return false;   // A: Coz it doesn't always work [I've checked].
46    #else           // One theory is that the optimizer skips the test.
47        return isnan(d);
48    #endif
49    }
50
51    /**
52    \brief returns a NaN.
53    \warning Should probably only used where you know you can test for NaNs
54    */
55    inline
56    double makeNaN()
57    {
58    #ifdef isnan
59        return nan("");
60    #else
61        return sqrt(-1);
62    #endif
63
64    }
65
66
67  /**  /**
68     \brief     \brief
# Line 308  void  normalizeVector3(double* V0,double Line 337  void  normalizeVector3(double* V0,double
337
338     \param A00 Input - A_00     \param A00 Input - A_00
339     \param A01 Input - A_01     \param A01 Input - A_01
340       \param A02 Input - A_02
341     \param A11 Input - A_11     \param A11 Input - A_11
342       \param A12 Input - A_12
343       \param A22 Input - A_22
344     \param ev0 Output - smallest eigenvalue     \param ev0 Output - smallest eigenvalue
345     \param ev1 Output - eigenvalue     \param ev1 Output - eigenvalue
346       \param ev2 Output -
347     \param V00 Output - eigenvector componenent coresponding to ev0     \param V00 Output - eigenvector componenent coresponding to ev0
348     \param V10 Output - eigenvector componenent coresponding to ev0     \param V10 Output - eigenvector componenent coresponding to ev0
349       \param V20 Output -
350     \param V01 Output - eigenvector componenent coresponding to ev1     \param V01 Output - eigenvector componenent coresponding to ev1
351     \param V11 Output - eigenvector componenent coresponding to ev1     \param V11 Output - eigenvector componenent coresponding to ev1
352       \param V21 Output -
353       \param V02 Output -
354       \param V12 Output -
355       \param V22 Output -
356     \param tol Input - tolerance to identify to eigenvalues     \param tol Input - tolerance to identify to eigenvalues
357  */  */
358  inline  inline

Legend:
 Removed from v.2019 changed lines Added in v.2777