[Libreoffice-commits] .: scaddins/idl scaddins/source sc/inc sc/source sc/util

Eike Rathke erack at kemper.freedesktop.org
Tue Jun 12 14:55:54 PDT 2012


 sc/inc/helpids.h                                    |    8 
 sc/source/core/tool/addinhelpid.cxx                 |    8 
 sc/source/core/tool/odffmap.cxx                     |    9 +
 sc/util/hidother.src                                |    8 
 scaddins/idl/com/sun/star/sheet/addin/XAnalysis.idl |   32 +++
 scaddins/source/analysis/analysis.cxx               |   80 +++++++++
 scaddins/source/analysis/analysis.hrc               |   27 ++-
 scaddins/source/analysis/analysis.hxx               |    8 
 scaddins/source/analysis/analysis.src               |  144 ++++++++++++++++
 scaddins/source/analysis/analysis_deffuncnames.src  |   72 ++++++++
 scaddins/source/analysis/analysis_funcnames.src     |   40 ++++
 scaddins/source/analysis/analysishelper.cxx         |  172 +++++++++++++++++++-
 scaddins/source/analysis/analysishelper.hxx         |   13 +
 13 files changed, 608 insertions(+), 13 deletions(-)

New commits:
commit e659fbd2779d1f3e6f871a2405db173c5f70d320
Author: Regina Henschel <rb.henschel at t-online.de>
Date:   Sat Jun 9 17:34:38 2012 +0200

    fdo#51017 ODFF: implement missing imaginary functions [AOO i111609 r1348096]
    
    Adds IMTAN, IMSEC, IMCSC, IMCOT, IMSINH, IMCOSH, IMSECH, IMCSCH spreadsheet
    functions.
    
    Change-Id: I04ce0b1fdf787c3d8b2301cd92400e54049494bf

diff --git a/sc/inc/helpids.h b/sc/inc/helpids.h
index e2f6e06..af03708 100644
--- a/sc/inc/helpids.h
+++ b/sc/inc/helpids.h
@@ -387,6 +387,14 @@
 #define HID_AAI_FUNC_OCT2HEX                                    "SC_HID_AAI_FUNC_OCT2HEX"
 #define HID_AAI_FUNC_CONVERT                                    "SC_HID_AAI_FUNC_CONVERT"
 #define HID_AAI_FUNC_FACTDOUBLE                                 "SC_HID_AAI_FUNC_FACTDOUBLE"
+#define HID_AAI_FUNC_IMTAN                                      "SC_HID_AAI_FUNC_IMTAN"
+#define HID_AAI_FUNC_IMSEC                                      "SC_HID_AAI_FUNC_IMSEC"
+#define HID_AAI_FUNC_IMCSC                                      "SC_HID_AAI_FUNC_IMCSC"
+#define HID_AAI_FUNC_IMCOT                                      "SC_HID_AAI_FUNC_IMCOT"
+#define HID_AAI_FUNC_IMSINH                                     "SC_HID_AAI_FUNC_IMSINH"
+#define HID_AAI_FUNC_IMCOSH                                     "SC_HID_AAI_FUNC_IMCOSH"
+#define HID_AAI_FUNC_IMSECH                                     "SC_HID_AAI_FUNC_IMSECH"
+#define HID_AAI_FUNC_IMCSCH                                     "SC_HID_AAI_FUNC_IMCSCH"
 
 // DateFunc Addin Functions (max.20) -----------------------------------------
 #define HID_DAI_FUNC_DAYSINMONTH                                "SC_HID_DAI_FUNC_DAYSINMONTH"
diff --git a/sc/source/core/tool/addinhelpid.cxx b/sc/source/core/tool/addinhelpid.cxx
index 67bae51..0442b5a 100644
--- a/sc/source/core/tool/addinhelpid.cxx
+++ b/sc/source/core/tool/addinhelpid.cxx
@@ -91,6 +91,10 @@ const ScUnoAddInHelpId pAnalysisHelpIds[] =
     { "getImargument"               , HID_AAI_FUNC_IMARGUMENT       },
     { "getImconjugate"              , HID_AAI_FUNC_IMCONJUGATE      },
     { "getImcos"                    , HID_AAI_FUNC_IMCOS            },
+    { "getImcosh"                   , HID_AAI_FUNC_IMCOSH           },
+    { "getImcot"                    , HID_AAI_FUNC_IMCOT            },
+    { "getImcsc"                    , HID_AAI_FUNC_IMCSC            },
+    { "getImcsch"                   , HID_AAI_FUNC_IMCSCH           },
     { "getImdiv"                    , HID_AAI_FUNC_IMDIV            },
     { "getImexp"                    , HID_AAI_FUNC_IMEXP            },
     { "getImln"                     , HID_AAI_FUNC_IMLN             },
@@ -99,10 +103,14 @@ const ScUnoAddInHelpId pAnalysisHelpIds[] =
     { "getImpower"                  , HID_AAI_FUNC_IMPOWER          },
     { "getImproduct"                , HID_AAI_FUNC_IMPRODUCT        },
     { "getImreal"                   , HID_AAI_FUNC_IMREAL           },
+    { "getImsec"                    , HID_AAI_FUNC_IMSEC            },
+    { "getImsech"                   , HID_AAI_FUNC_IMSECH           },
     { "getImsin"                    , HID_AAI_FUNC_IMSIN            },
+    { "getImsinh"                   , HID_AAI_FUNC_IMSINH           },
     { "getImsqrt"                   , HID_AAI_FUNC_IMSQRT           },
     { "getImsub"                    , HID_AAI_FUNC_IMSUB            },
     { "getImsum"                    , HID_AAI_FUNC_IMSUM            },
+    { "getImtan"                    , HID_AAI_FUNC_IMTAN            },
     { "getIntrate"                  , HID_AAI_FUNC_INTRATE          },
     { "getIseven"                   , HID_AAI_FUNC_ISEVEN           },
     { "getIsodd"                    , HID_AAI_FUNC_ISODD            },
diff --git a/sc/source/core/tool/odffmap.cxx b/sc/source/core/tool/odffmap.cxx
index 2129da3..b61f8ad 100644
--- a/sc/source/core/tool/odffmap.cxx
+++ b/sc/source/core/tool/odffmap.cxx
@@ -95,6 +95,14 @@ ScCompiler::AddInMap ScCompiler::maAddInMap[] =
     { "IMSUB", "IMSUB", false, "com.sun.star.sheet.addin.Analysis.getImsub", "COM.SUN.STAR.SHEET.ADDIN.ANALYSIS.GETIMSUB" },
     { "IMSUM", "IMSUM", false, "com.sun.star.sheet.addin.Analysis.getImsum", "COM.SUN.STAR.SHEET.ADDIN.ANALYSIS.GETIMSUM" },
     { "IMSQRT", "IMSQRT", false, "com.sun.star.sheet.addin.Analysis.getImsqrt", "COM.SUN.STAR.SHEET.ADDIN.ANALYSIS.GETIMSQRT" },
+    { "IMTAN", "IMTAN", false, "com.sun.star.sheet.addin.Analysis.getImtan", "COM.SUN.STAR.SHEET.ADDIN.ANALYSIS.GETIMTAN" },
+    { "IMSEC", "IMSEC", false, "com.sun.star.sheet.addin.Analysis.getImsec", "COM.SUN.STAR.SHEET.ADDIN.ANALYSIS.GETIMSEC" },
+    { "IMCSC", "IMCSC", false, "com.sun.star.sheet.addin.Analysis.getImcsc", "COM.SUN.STAR.SHEET.ADDIN.ANALYSIS.GETIMCSC" },
+    { "IMCOT", "IMCOT", false, "com.sun.star.sheet.addin.Analysis.getImcot", "COM.SUN.STAR.SHEET.ADDIN.ANALYSIS.GETIMCOT" },
+    { "IMSINH", "IMSINH", false, "com.sun.star.sheet.addin.Analysis.getImsinh", "COM.SUN.STAR.SHEET.ADDIN.ANALYSIS.GETIMSINH" },
+    { "IMCOSH", "IMCOSH", false, "com.sun.star.sheet.addin.Analysis.getImcosh", "COM.SUN.STAR.SHEET.ADDIN.ANALYSIS.GETIMCOSH" },
+    { "IMSECH", "IMSECH", false, "com.sun.star.sheet.addin.Analysis.getImsech", "COM.SUN.STAR.SHEET.ADDIN.ANALYSIS.GETIMSECH" },
+    { "IMCSCH", "IMCSCH", false, "com.sun.star.sheet.addin.Analysis.getImcsch", "COM.SUN.STAR.SHEET.ADDIN.ANALYSIS.GETIMCSCH" },
     { "COMPLEX", "COMPLEX", false, "com.sun.star.sheet.addin.Analysis.getComplex", "COM.SUN.STAR.SHEET.ADDIN.ANALYSIS.GETCOMPLEX" },
     { "CONVERT", "CONVERT_ADD", false, "com.sun.star.sheet.addin.Analysis.getConvert", "COM.SUN.STAR.SHEET.ADDIN.ANALYSIS.GETCONVERT" },
     { "AMORDEGRC", "AMORDEGRC", false, "com.sun.star.sheet.addin.Analysis.getAmordegrc", "COM.SUN.STAR.SHEET.ADDIN.ANALYSIS.GETAMORDEGRC" },
@@ -134,6 +142,7 @@ ScCompiler::AddInMap ScCompiler::maAddInMap[] =
     { "COUPPCD", "COUPPCD", false, "com.sun.star.sheet.addin.Analysis.getCouppcd", "COM.SUN.STAR.SHEET.ADDIN.ANALYSIS.GETCOUPPCD" },
     { "COUPNUM", "COUPNUM", false, "com.sun.star.sheet.addin.Analysis.getCoupnum", "COM.SUN.STAR.SHEET.ADDIN.ANALYSIS.GETCOUPNUM" },
     { "FVSCHEDULE", "FVSCHEDULE", false, "com.sun.star.sheet.addin.Analysis.getFvschedule", "COM.SUN.STAR.SHEET.ADDIN.ANALYSIS.GETFVSCHEDULE" },
+
 };
 
 const ScCompiler::AddInMap* ScCompiler::GetAddInMap()
diff --git a/sc/util/hidother.src b/sc/util/hidother.src
index 6a56a81..9b3c3fb 100644
--- a/sc/util/hidother.src
+++ b/sc/util/hidother.src
@@ -464,6 +464,14 @@ hidspecial HID_AAI_FUNC_IMSIN       { HelpID = HID_AAI_FUNC_IMSIN; };
 hidspecial HID_AAI_FUNC_IMSUB       { HelpID = HID_AAI_FUNC_IMSUB; };
 hidspecial HID_AAI_FUNC_IMSUM       { HelpID = HID_AAI_FUNC_IMSUM; };
 hidspecial HID_AAI_FUNC_IMSQRT      { HelpID = HID_AAI_FUNC_IMSQRT; };
+hidspecial HID_AAI_FUNC_IMTAN       { HelpID = HID_AAI_FUNC_IMTAN; };
+hidspecial HID_AAI_FUNC_IMSEC       { HelpID = HID_AAI_FUNC_IMSEC; };
+hidspecial HID_AAI_FUNC_IMCSC       { HelpID = HID_AAI_FUNC_IMCSC; };
+hidspecial HID_AAI_FUNC_IMCOT       { HelpID = HID_AAI_FUNC_IMCOT; };
+hidspecial HID_AAI_FUNC_IMSINH      { HelpID = HID_AAI_FUNC_IMSINH; };
+hidspecial HID_AAI_FUNC_IMCOSH      { HelpID = HID_AAI_FUNC_IMCOSH; };
+hidspecial HID_AAI_FUNC_IMSECH      { HelpID = HID_AAI_FUNC_IMSECH; };
+hidspecial HID_AAI_FUNC_IMCSCH      { HelpID = HID_AAI_FUNC_IMCSCH; };
 hidspecial HID_AAI_FUNC_COMPLEX     { HelpID = HID_AAI_FUNC_COMPLEX; };
 hidspecial HID_AAI_FUNC_OCT2BIN     { HelpID = HID_AAI_FUNC_OCT2BIN; };
 hidspecial HID_AAI_FUNC_OCT2DEZ     { HelpID = HID_AAI_FUNC_OCT2DEZ; };
diff --git a/scaddins/idl/com/sun/star/sheet/addin/XAnalysis.idl b/scaddins/idl/com/sun/star/sheet/addin/XAnalysis.idl
index 1cb0018..daae62b 100644
--- a/scaddins/idl/com/sun/star/sheet/addin/XAnalysis.idl
+++ b/scaddins/idl/com/sun/star/sheet/addin/XAnalysis.idl
@@ -321,6 +321,38 @@ module addin
         string getImsqrt( [in] string Num )
             raises( com::sun::star::lang::IllegalArgumentException );
 
+        /// imtan.
+        string getImtan( [in] string Num )
+            raises( com::sun::star::lang::IllegalArgumentException );
+
+        /// imsec.
+        string getImsec( [in] string Num)
+            raises( com::sun::star::lang::IllegalArgumentException );
+
+        /// imcsc.
+        string getImcsc( [in] string Num )
+            raises( com::sun::star::lang::IllegalArgumentException );
+
+        /// imcot.
+        string getImcot( [in] string Num )
+            raises( com::sun::star::lang::IllegalArgumentException );
+
+        /// imsinh.
+        string getImsinh( [in] string Num )
+            raises( com::sun::star::lang::IllegalArgumentException );
+
+        /// imcosh.
+        string getImcosh( [in] string Num )
+            raises( com::sun::star::lang::IllegalArgumentException );
+
+        /// imsech.
+        string getImsech( [in] string Num)
+            raises( com::sun::star::lang::IllegalArgumentException );
+
+        /// imcsch.
+        string getImcsch( [in] string Num )
+            raises( com::sun::star::lang::IllegalArgumentException );
+
         /// complex.
         string getComplex( [in] double Real, [in] double Imaginary, [in] any Suffix )
             raises( com::sun::star::lang::IllegalArgumentException );
diff --git a/scaddins/source/analysis/analysis.cxx b/scaddins/source/analysis/analysis.cxx
index e62265f..2215f28 100644
--- a/scaddins/source/analysis/analysis.cxx
+++ b/scaddins/source/analysis/analysis.cxx
@@ -1215,6 +1215,86 @@ STRING SAL_CALL AnalysisAddIn::getImsqrt( const STRING& aNum ) THROWDEF_RTE_IAE
 }
 
 
+STRING SAL_CALL AnalysisAddIn::getImtan( const STRING& aNum ) THROWDEF_RTE_IAE
+{
+    Complex     z( aNum );
+
+    z.Tan();
+
+    return z.GetString();
+}
+
+
+STRING SAL_CALL AnalysisAddIn::getImsec( const STRING& aNum ) THROWDEF_RTE_IAE
+{
+    Complex     z( aNum );
+
+    z.Sec();
+
+    return z.GetString();
+}
+
+
+STRING SAL_CALL AnalysisAddIn::getImcsc( const STRING& aNum ) THROWDEF_RTE_IAE
+{
+    Complex     z( aNum );
+
+    z.Csc();
+
+    return z.GetString();
+}
+
+
+STRING SAL_CALL AnalysisAddIn::getImcot( const STRING& aNum ) THROWDEF_RTE_IAE
+{
+    Complex     z( aNum );
+
+    z.Cot();
+
+    return z.GetString();
+}
+
+
+STRING SAL_CALL AnalysisAddIn::getImsinh( const STRING& aNum ) THROWDEF_RTE_IAE
+{
+    Complex     z( aNum );
+
+    z.Sinh();
+
+    return z.GetString();
+}
+
+
+STRING SAL_CALL AnalysisAddIn::getImcosh( const STRING& aNum ) THROWDEF_RTE_IAE
+{
+    Complex     z( aNum );
+
+    z.Cosh();
+
+    return z.GetString();
+}
+
+
+STRING SAL_CALL AnalysisAddIn::getImsech( const STRING& aNum ) THROWDEF_RTE_IAE
+{
+    Complex     z( aNum );
+
+    z.Sech();
+
+    return z.GetString();
+}
+
+
+STRING SAL_CALL AnalysisAddIn::getImcsch( const STRING& aNum ) THROWDEF_RTE_IAE
+{
+    Complex     z( aNum );
+
+    z.Csch();
+
+    return z.GetString();
+}
+
+
 STRING SAL_CALL AnalysisAddIn::getComplex( double fR, double fI, const ANY& rSuff ) THROWDEF_RTE_IAE
 {
     sal_Bool    bi;
diff --git a/scaddins/source/analysis/analysis.hrc b/scaddins/source/analysis/analysis.hrc
index 7b5b94f..d53eb1e 100644
--- a/scaddins/source/analysis/analysis.hrc
+++ b/scaddins/source/analysis/analysis.hrc
@@ -131,7 +131,14 @@
 #define ANALYSIS_Couppcd                    (ANALYSIS_FUNCDESC_START+90)
 #define ANALYSIS_Coupnum                    (ANALYSIS_FUNCDESC_START+91)
 #define ANALYSIS_Fvschedule                 (ANALYSIS_FUNCDESC_START+92)
-
+#define ANALYSIS_Imtan                      (ANALYSIS_FUNCDESC_START+93)
+#define ANALYSIS_Imsec                      (ANALYSIS_FUNCDESC_START+94)
+#define ANALYSIS_Imcsc                      (ANALYSIS_FUNCDESC_START+95)
+#define ANALYSIS_Imcot                      (ANALYSIS_FUNCDESC_START+96)
+#define ANALYSIS_Imsinh                     (ANALYSIS_FUNCDESC_START+97)
+#define ANALYSIS_Imcosh                     (ANALYSIS_FUNCDESC_START+98)
+#define ANALYSIS_Imsech                     (ANALYSIS_FUNCDESC_START+99)
+#define ANALYSIS_Imcsch                     (ANALYSIS_FUNCDESC_START+100)
 
 #define ANALYSIS_FUNCNAME_START             (1)
 
@@ -228,7 +235,14 @@
 #define ANALYSIS_FUNCNAME_Couppcd           (ANALYSIS_FUNCNAME_START+90)
 #define ANALYSIS_FUNCNAME_Coupnum           (ANALYSIS_FUNCNAME_START+91)
 #define ANALYSIS_FUNCNAME_Fvschedule        (ANALYSIS_FUNCNAME_START+92)
-
+#define ANALYSIS_FUNCNAME_Imtan             (ANALYSIS_FUNCNAME_START+93)
+#define ANALYSIS_FUNCNAME_Imsec             (ANALYSIS_FUNCNAME_START+94)
+#define ANALYSIS_FUNCNAME_Imcsc             (ANALYSIS_FUNCNAME_START+95)
+#define ANALYSIS_FUNCNAME_Imcot             (ANALYSIS_FUNCNAME_START+96)
+#define ANALYSIS_FUNCNAME_Imsinh            (ANALYSIS_FUNCNAME_START+97)
+#define ANALYSIS_FUNCNAME_Imcosh            (ANALYSIS_FUNCNAME_START+98)
+#define ANALYSIS_FUNCNAME_Imsech            (ANALYSIS_FUNCNAME_START+99)
+#define ANALYSIS_FUNCNAME_Imcsch            (ANALYSIS_FUNCNAME_START+100)
 
 #define ANALYSIS_DEFFUNCNAME_START          (RID_ANALYSIS_DEFFUNCTION_NAMES+1)
 
@@ -325,6 +339,13 @@
 #define ANALYSIS_DEFFUNCNAME_Couppcd        (ANALYSIS_DEFFUNCNAME_START+90)
 #define ANALYSIS_DEFFUNCNAME_Coupnum        (ANALYSIS_DEFFUNCNAME_START+91)
 #define ANALYSIS_DEFFUNCNAME_Fvschedule     (ANALYSIS_DEFFUNCNAME_START+92)
-
+#define ANALYSIS_DEFFUNCNAME_Imtan          (ANALYSIS_DEFFUNCNAME_START+93)
+#define ANALYSIS_DEFFUNCNAME_Imsec          (ANALYSIS_DEFFUNCNAME_START+94)
+#define ANALYSIS_DEFFUNCNAME_Imcsc          (ANALYSIS_DEFFUNCNAME_START+95)
+#define ANALYSIS_DEFFUNCNAME_Imcot          (ANALYSIS_DEFFUNCNAME_START+96)
+#define ANALYSIS_DEFFUNCNAME_Imsinh         (ANALYSIS_DEFFUNCNAME_START+97)
+#define ANALYSIS_DEFFUNCNAME_Imcosh         (ANALYSIS_DEFFUNCNAME_START+98)
+#define ANALYSIS_DEFFUNCNAME_Imsech         (ANALYSIS_DEFFUNCNAME_START+99)
+#define ANALYSIS_DEFFUNCNAME_Imcsch         (ANALYSIS_DEFFUNCNAME_START+100)
 
 #endif
diff --git a/scaddins/source/analysis/analysis.hxx b/scaddins/source/analysis/analysis.hxx
index 3e0fd4a..b6d58e6 100644
--- a/scaddins/source/analysis/analysis.hxx
+++ b/scaddins/source/analysis/analysis.hxx
@@ -193,6 +193,14 @@ public:
     virtual STRING SAL_CALL     getImsum( constREFXPS& xOpt, const SEQSEQ( STRING )& aNum1, const SEQ( ANY )& aFollowingPars ) THROWDEF_RTE_IAE;
 
     virtual STRING SAL_CALL     getImsqrt( const STRING& aNum ) THROWDEF_RTE_IAE;
+    virtual STRING SAL_CALL     getImtan( const STRING& aNum ) THROWDEF_RTE_IAE;
+    virtual STRING SAL_CALL     getImsec( const STRING& aNum ) THROWDEF_RTE_IAE;
+    virtual STRING SAL_CALL     getImcsc( const STRING& aNum ) THROWDEF_RTE_IAE;
+    virtual STRING SAL_CALL     getImcot( const STRING& aNum ) THROWDEF_RTE_IAE;
+    virtual STRING SAL_CALL     getImsinh( const STRING& aNum ) THROWDEF_RTE_IAE;
+    virtual STRING SAL_CALL     getImcosh( const STRING& aNum ) THROWDEF_RTE_IAE;
+    virtual STRING SAL_CALL     getImsech( const STRING& aNum ) THROWDEF_RTE_IAE;
+    virtual STRING SAL_CALL     getImcsch( const STRING& aNum ) THROWDEF_RTE_IAE;
     virtual STRING SAL_CALL     getComplex( double fReal, double fImaginary, const ANY& rSuffix ) THROWDEF_RTE_IAE;
 
     virtual double SAL_CALL     getConvert( double fVal, const STRING& aFromUnit, const STRING& aToUnit ) THROWDEF_RTE_IAE;
diff --git a/scaddins/source/analysis/analysis.src b/scaddins/source/analysis/analysis.src
index bdff793..8e81e3e 100644
--- a/scaddins/source/analysis/analysis.src
+++ b/scaddins/source/analysis/analysis.src
@@ -1352,6 +1352,150 @@ Resource RID_ANALYSIS_FUNCTION_DESCRIPTIONS
 
     };
 
+    Resource ANALYSIS_Imtan
+    {
+        String 1    // description Imtan
+        {
+            Text [ en-US ] = "Returns the tangent of a complex number";
+        };
+
+        String 2 // name of parameter 1         Imtan
+        {
+            Text [ en-US ] = "Complex number";
+        };
+
+        String 3 // description of parameter 1  Imtan
+        {
+            Text [ en-US ] = "A complex number";
+        };
+    };
+
+    Resource ANALYSIS_Imsec
+    {
+        String 1    // description Imsec
+        {
+            Text [ en-US ] = "Returns the secant of a complex number";
+        };
+
+        String 2 // name of parameter 1         Imsec
+        {
+            Text [ en-US ] = "Complex number";
+        };
+
+        String 3 // description of parameter 1  Imsec
+        {
+            Text [ en-US ] = "A complex number";
+        };
+    };
+
+    Resource ANALYSIS_Imcsc
+    {
+        String 1    // description Imcsc
+        {
+            Text [ en-US ] = "Returns the cosecant of a complex number";
+        };
+
+        String 2 // name of parameter 1         Imcsc
+        {
+            Text [ en-US ] = "Complex number";
+        };
+
+        String 3 // description of parameter 1  Imcsc
+        {
+            Text [ en-US ] = "A complex number";
+        };
+    };
+
+    Resource ANALYSIS_Imcot
+    {
+        String 1    // description Imcot
+        {
+            Text [ en-US ] = "Returns the cotangent of a complex number";
+        };
+
+        String 2 // name of parameter 1         Imcot
+        {
+            Text [ en-US ] = "Complex number";
+        };
+
+        String 3 // description of parameter 1  Imcot
+        {
+            Text [ en-US ] = "A complex number";
+        };
+    };
+
+    Resource ANALYSIS_Imsinh
+    {
+        String 1    // description Imsinh
+        {
+            Text [ en-US ] = "Returns the hyperbolic sine of a complex number";
+        };
+
+        String 2 // name of parameter 1         Imsinh
+        {
+            Text [ en-US ] = "Complex number";
+        };
+
+        String 3 // description of parameter 1  Imsinh
+        {
+            Text [ en-US ] = "A complex number";
+        };
+    };
+
+    Resource ANALYSIS_Imcosh
+    {
+        String 1    // description Imcosh
+        {
+            Text [ en-US ] = "Returns the hyperbolic cosine of a complex number";
+        };
+
+        String 2 // name of parameter 1         Imcosh
+        {
+            Text [ en-US ] = "Complex number";
+        };
+
+        String 3 // description of parameter 1  Imcosh
+        {
+            Text [ en-US ] = "A complex number";
+        };
+    };
+
+    Resource ANALYSIS_Imsech
+    {
+        String 1    // description Imsech
+        {
+            Text [ en-US ] = "Returns the hyperbolic secant of a complex number";
+        };
+
+        String 2 // name of parameter 1         Imsech
+        {
+            Text [ en-US ] = "Complex number";
+        };
+
+        String 3 // description of parameter 1  Imsech
+        {
+            Text [ en-US ] = "A complex number";
+        };
+    };
+
+    Resource ANALYSIS_Imcsch
+    {
+        String 1    // description Imcsch
+        {
+            Text [ en-US ] = "Returns the hyperbolic cosecant of a complex number";
+        };
+
+        String 2 // name of parameter 1         Imcsch
+        {
+            Text [ en-US ] = "Complex number";
+        };
+
+        String 3 // description of parameter 1  Imcsch
+        {
+            Text [ en-US ] = "A complex number";
+        };
+    };
+
     Resource ANALYSIS_Complex
     {
         String 1    // description Complex
diff --git a/scaddins/source/analysis/analysis_deffuncnames.src b/scaddins/source/analysis/analysis_deffuncnames.src
index 2c67e2c..cff3b5d 100644
--- a/scaddins/source/analysis/analysis_deffuncnames.src
+++ b/scaddins/source/analysis/analysis_deffuncnames.src
@@ -813,6 +813,78 @@ Resource RID_ANALYSIS_DEFFUNCTION_NAMES
         };
     };
 
+    StringArray ANALYSIS_DEFFUNCNAME_Imtan
+    {
+        ItemList =
+        {
+            < "IMTAN"; >;
+            < "IMTAN"; >;
+        };
+    };
+
+    StringArray ANALYSIS_DEFFUNCNAME_Imsec
+    {
+        ItemList =
+        {
+            < "IMSEC"; >;
+            < "IMSEC"; >;
+        };
+    };
+
+    StringArray ANALYSIS_DEFFUNCNAME_Imcsc
+    {
+        ItemList =
+        {
+            < "IMCSC"; >;
+            < "IMCSC"; >;
+        };
+    };
+
+    StringArray ANALYSIS_DEFFUNCNAME_Imcot
+    {
+        ItemList =
+        {
+            < "IMCOT"; >;
+            < "IMCOT"; >;
+        };
+    };
+
+    StringArray ANALYSIS_DEFFUNCNAME_Imsinh
+    {
+        ItemList =
+        {
+            < "IMSINH"; >;
+            < "IMSINH"; >;
+        };
+    };
+
+    StringArray ANALYSIS_DEFFUNCNAME_Imcosh
+    {
+        ItemList =
+        {
+            < "IMCOSH"; >;
+            < "IMCOSH"; >;
+        };
+    };
+
+    StringArray ANALYSIS_DEFFUNCNAME_Imsech
+    {
+        ItemList =
+        {
+            < "IMSECH"; >;
+            < "IMSECH"; >;
+        };
+    };
+
+    StringArray ANALYSIS_DEFFUNCNAME_Imcsch
+    {
+        ItemList =
+        {
+            < "IMCSCH"; >;
+            < "IMCSCH"; >;
+        };
+    };
+
     StringArray ANALYSIS_DEFFUNCNAME_Complex
     {
         ItemList =
diff --git a/scaddins/source/analysis/analysis_funcnames.src b/scaddins/source/analysis/analysis_funcnames.src
index 47796f3..fea61a5 100644
--- a/scaddins/source/analysis/analysis_funcnames.src
+++ b/scaddins/source/analysis/analysis_funcnames.src
@@ -465,6 +465,46 @@ Resource RID_ANALYSIS_FUNCTION_NAMES
         Text [ en-US ] = "IMSQRT";
     };
 
+    String ANALYSIS_FUNCNAME_Imtan
+    {
+        Text [ en-US ] = "IMTAN";
+    };
+
+    String ANALYSIS_FUNCNAME_Imsec
+    {
+        Text [ en-US ] = "IMSEC";
+    };
+
+    String ANALYSIS_FUNCNAME_Imcsc
+    {
+        Text [ en-US ] = "IMCSC";
+    };
+
+    String ANALYSIS_FUNCNAME_Imcot
+    {
+        Text [ en-US ] = "IMCOT";
+    };
+
+    String ANALYSIS_FUNCNAME_Imsinh
+    {
+        Text [ en-US ] = "IMSINH";
+    };
+
+    String ANALYSIS_FUNCNAME_Imcosh
+    {
+        Text [ en-US ] = "IMCOSH";
+    };
+
+    String ANALYSIS_FUNCNAME_Imsech
+    {
+        Text [ en-US ] = "IMSECH";
+    };
+
+    String ANALYSIS_FUNCNAME_Imcsch
+    {
+        Text [ en-US ] = "IMCSCH";
+    };
+
     String ANALYSIS_FUNCNAME_Complex
     {
         Text [ en-US ] = "COMPLEX";
diff --git a/scaddins/source/analysis/analysishelper.cxx b/scaddins/source/analysis/analysishelper.cxx
index c2e17a8..a37632f 100644
--- a/scaddins/source/analysis/analysishelper.cxx
+++ b/scaddins/source/analysis/analysishelper.cxx
@@ -108,6 +108,14 @@ const FuncDataBase pFuncDatas[] =
     FUNCDATA( Imsub,            UNIQUE,     STDPAR,     2,          FDCat_Tech ),
     FUNCDATA( Imsqrt,           UNIQUE,     STDPAR,     1,          FDCat_Tech ),
     FUNCDATA( Imsum,            UNIQUE,     INTPAR,     1,          FDCat_Tech ),
+    FUNCDATA( Imtan,            UNIQUE,     STDPAR,     1,          FDCat_Tech ),
+    FUNCDATA( Imsec,            UNIQUE,     STDPAR,     1,          FDCat_Tech ),
+    FUNCDATA( Imcsc,            UNIQUE,     STDPAR,     1,          FDCat_Tech ),
+    FUNCDATA( Imcot,            UNIQUE,     STDPAR,     1,          FDCat_Tech ),
+    FUNCDATA( Imsinh,           UNIQUE,     STDPAR,     1,          FDCat_Tech ),
+    FUNCDATA( Imcosh,           UNIQUE,     STDPAR,     1,          FDCat_Tech ),
+    FUNCDATA( Imsech,           UNIQUE,     STDPAR,     1,          FDCat_Tech ),
+    FUNCDATA( Imcsch,           UNIQUE,     STDPAR,     1,          FDCat_Tech ),
     FUNCDATA( Complex,          UNIQUE,     STDPAR,     3,          FDCat_Tech ),
     FUNCDATA( Convert,          DOUBLE,     STDPAR,     3,          FDCat_Tech ),
     FUNCDATA( Amordegrc,        UNIQUE,     INTPAR,     7,          FDCat_Finance ),
@@ -1861,15 +1869,9 @@ void Complex::Sqrt( void )
 }
 
 
-inline sal_Bool SinOverflow( double f )
-{
-    return fabs( f ) >= 134217728;
-}
-
-
 void Complex::Sin( void ) THROWDEF_RTE_IAE
 {
-    if( SinOverflow( r ) )
+    if( !::rtl::math::isValidArcArg( r ) )
         THROW_IAE;
 
     if( i )
@@ -1887,7 +1889,7 @@ void Complex::Sin( void ) THROWDEF_RTE_IAE
 
 void Complex::Cos( void ) THROWDEF_RTE_IAE
 {
-    if( SinOverflow( r ) )
+	if( !::rtl::math::isValidArcArg( r ) )
         THROW_IAE;
 
     if( i )
@@ -1961,6 +1963,160 @@ void Complex::Log2( void ) THROWDEF_RTE_IAE
 }
 
 
+void Complex::Tan(void) THROWDEF_RTE_IAE
+{
+    if ( i )
+    {
+        if( !::rtl::math::isValidArcArg( 2.0 * r ) )
+            THROW_IAE;
+        double fScale =1.0 / ( cos( 2.0 * r ) + cosh( 2.0 * i ));
+        r = sin( 2.0 * r ) * fScale;
+        i = sinh( 2.0 * i ) * fScale;
+    }
+    else
+    {
+        if( !::rtl::math::isValidArcArg( r ) )
+            THROW_IAE;
+        r = tan( r );
+    }
+}
+
+
+void Complex::Sec( void ) THROWDEF_RTE_IAE
+{
+    if( i )
+    {
+        if( !::rtl::math::isValidArcArg( 2 * r ) )
+            THROW_IAE;
+        double fScale = 1.0 / (cosh( 2.0 * i) + cos ( 2.0 * r));
+        double  r_;
+        r_ = 2.0 * cos( r ) * cosh( i ) * fScale;
+        i = 2.0 * sin( r ) * sinh( i ) * fScale;
+        r = r_;
+    }
+    else
+    {
+        if( !::rtl::math::isValidArcArg( r ) )
+            THROW_IAE;
+        r = 1.0 / cos( r );
+    }
+}
+
+
+void Complex::Csc( void ) THROWDEF_RTE_IAE
+{
+    if( i )
+    {
+        if( !::rtl::math::isValidArcArg( 2 * r ) )
+            THROW_IAE;
+        double fScale = 1.0 / (cosh( 2.0 * i) - cos ( 2.0 * r));
+        double  r_;
+        r_ = 2.0 * sin( r ) * cosh( i ) * fScale;
+        i = -2.0 * cos( r ) * sinh( i ) * fScale;
+        r = r_;
+    }
+    else
+    {
+        if( !::rtl::math::isValidArcArg( r ) )
+            THROW_IAE;
+        r = 1.0 / sin( r );
+    }
+}
+
+
+void Complex::Cot(void) THROWDEF_RTE_IAE
+{
+    if ( i )
+    {
+        if( !::rtl::math::isValidArcArg( 2.0 * r ) )
+            THROW_IAE;
+        double fScale =1.0 / ( cosh( 2.0 * i ) - cos( 2.0 * r ) );
+        r = sin( 2.0 * r ) * fScale;
+        i = - ( sinh( 2.0 * i ) * fScale );
+    }
+    else
+    {
+        if( !::rtl::math::isValidArcArg( r ) )
+            THROW_IAE;
+        r = 1.0 / tan( r );
+    }
+}
+
+
+void Complex::Sinh( void ) THROWDEF_RTE_IAE
+{
+    if( !::rtl::math::isValidArcArg( r ) )
+        THROW_IAE;
+
+    if( i )
+    {
+        double	r_;
+        r_ = sinh( r ) * cos( i );
+		i = cosh( r ) * sin( i );
+		r = r_;
+	}
+	else
+		r = sinh( r );
+}
+
+
+void Complex::Cosh( void ) THROWDEF_RTE_IAE
+{
+    if( !::rtl::math::isValidArcArg( r ) )
+        THROW_IAE;
+
+    if( i )
+    {
+        double	r_;
+        r_ = cosh( r ) * cos( i );
+		i = sinh( r ) * sin( i );
+		r = r_;
+	}
+	else
+		r = cosh( r );
+}
+
+
+void Complex::Sech(void) THROWDEF_RTE_IAE
+{
+    if ( i )
+    {
+        if( !::rtl::math::isValidArcArg( 2.0 * r ) )
+            THROW_IAE;
+        double fScale =1.0 / ( cosh( 2.0 * r ) + cos( 2.0 * i ));
+        double r_;
+        r_ = 2.0 * cosh( 2.0 * r ) * cos( i ) * fScale;
+        i = - (2.0 * sinh( 2.0 * r ) * sin( i ) * fScale );
+        r = r_ ;
+    }
+    else
+    {
+        if( !::rtl::math::isValidArcArg( r ) )
+            THROW_IAE;
+        r = 1.0 / cosh( r );
+    }
+}
+
+
+void Complex::Csch(void) THROWDEF_RTE_IAE
+{
+    if ( i )
+    {
+        if( !::rtl::math::isValidArcArg( 2.0 * r ) )
+            THROW_IAE;
+        double fScale =1.0 / ( cosh( 2.0 * r ) - cos( 2.0 * i ));
+        double r_;
+        r_ = 2.0 * sinh( 2.0 * r ) * cos( i ) * fScale;
+        i = - ( 2.0 * cosh( 2.0 * r ) * sin( i ) * fScale );
+        r = r_ ;
+    }
+    else
+    {
+        if( !::rtl::math::isValidArcArg( r ) )
+            THROW_IAE;
+        r = 1.0 / sinh( r );
+    }
+}
 
 
 ComplexList::~ComplexList()
diff --git a/scaddins/source/analysis/analysishelper.hxx b/scaddins/source/analysis/analysishelper.hxx
index 136a6e3..2abfc0f 100644
--- a/scaddins/source/analysis/analysishelper.hxx
+++ b/scaddins/source/analysis/analysishelper.hxx
@@ -462,7 +462,7 @@ class Complex
     sal_Unicode             c;
 
 public:
-    inline                  Complex( double fReal, double fImag = 0.0, sal_Char cC = '\0' );
+    inline                  Complex( double fReal, double fImag = 0.0, sal_Unicode cC = '\0' );
                             Complex( const STRING& rComplexAsString ) THROWDEF_RTE_IAE;
 
     inline static sal_Bool  IsImagUnit( sal_Unicode c );
@@ -490,6 +490,15 @@ public:
     inline void             Mult( const Complex& rMult );
     inline void             Sub( const Complex& rMult );
     inline void             Add( const Complex& rAdd );
+    void                    Tan( void ) THROWDEF_RTE_IAE;
+    void                    Sec( void ) THROWDEF_RTE_IAE;
+    void                    Csc( void ) THROWDEF_RTE_IAE;
+    void                    Cot( void ) THROWDEF_RTE_IAE;
+    void                    Sinh( void ) THROWDEF_RTE_IAE;
+    void                    Cosh( void ) THROWDEF_RTE_IAE;
+    void                    Sech( void ) THROWDEF_RTE_IAE;
+    void                    Csch( void ) THROWDEF_RTE_IAE;
+
 };
 
 
@@ -807,7 +816,7 @@ inline const FuncData* FuncDataList::Get( sal_uInt32 n ) const
 }
 
 
-inline Complex::Complex( double fReal, double fImag, sal_Char cC ) :
+inline Complex::Complex( double fReal, double fImag, sal_Unicode cC ) :
         r( fReal ), i( fImag ), c( cC )
 {
 }


More information about the Libreoffice-commits mailing list