[Libreoffice-commits] .: Branch 'libreoffice-3-6' - scaddins/idl scaddins/source sc/inc sc/source sc/util
Norbert Thiebaud
nthiebaud at kemper.freedesktop.org
Wed Jun 13 07:25:31 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 36f5b29a3c9565bc8eb5c8fefbc661b4ef3a97d2
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 7c5955c..8f38a0b 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 85d36f9..fc31e88 100644
--- a/sc/util/hidother.src
+++ b/sc/util/hidother.src
@@ -463,6 +463,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