sc/source/core/opencl/opinlinefun_finacial.cxx | 941 +++++++++++++------------ 1 file changed, 490 insertions(+), 451 deletions(-)
New commits: commit 4ea4239719551ba06cc2ee9758a1d232a1c1e84e Author: yiming ju <yim...@multicorewareinc.com> Date: Fri Nov 1 17:48:31 2013 +0800 GPU Calc: refactor string formatting in some GPU inline functions Change-Id: I4ceb86ca84854a4e14c0720d6216d4c658a97859 Signed-off-by: haochen <haoc...@multicorewareinc.com> Signed-off-by: I-Jui (Ray) Sung <r...@multicorewareinc.com> diff --git a/sc/source/core/opencl/opinlinefun_finacial.cxx b/sc/source/core/opencl/opinlinefun_finacial.cxx index 05e6a5f..27a1625 100644 --- a/sc/source/core/opencl/opinlinefun_finacial.cxx +++ b/sc/source/core/opencl/opinlinefun_finacial.cxx @@ -14,10 +14,10 @@ std::string approxEqual = "bool approxEqual(double a, double b)\n" "{\n" " if (a == b)\n" - "\t\treturn true;\n" - "\tdouble x = a - b;\n" - "\treturn (x < 0.0 ? -x : x) < ((a < 0.0 ? -a : a) * (1.0 / (16777216.0 *" - "16777216.0)));\n" +" return true;\n" +" double x = a - b;\n" +" return (x < 0.0 ? -x : x) < ((a < 0.0 ? -a : a) * (1.0 / (16777216.0 *" +"16777216.0)));\n" "}\n"; std::string nKorrValDecl ="double constant nKorrVal[]" @@ -32,21 +32,22 @@ std::string RoundDecl = "double Round(double fValue);\n"; std::string Round = "double Round(double fValue)\n" "{\n" - "\tif (fValue == 0.0)\n" - "\t\treturn fValue;\n" - "\tdouble fFac = 0;\n" - "\tint nExp;\n" - "\tif (fValue > 0.0)\n" - "\t\tnExp = (floor(log10(fValue)));\n" - "\telse\n" - "\t\tnExp = 0;\n" - "\tint nIndex = 15 - nExp;\n" - "\tif (nIndex > 15)\n" - "\t\tnIndex = 15;\n" - "\telse if (nIndex <= 1)\n" - "\t\tnIndex = 0;\n" - "\tfValue = floor(fValue + 0.5 + nKorrVal[nIndex]);\n" - "\treturn fValue;\n" +" if ( fValue == 0.0 )\n" +" return fValue;\n" +"\n" +" double fFac = 0;\n" +" int nExp;\n" +" if ( fValue > 0.0 )\n" +" nExp = ( floor( log10( fValue ) ) );\n" +" else\n" +" nExp = 0;\n" +" int nIndex = 15 - nExp;\n" +" if ( nIndex > 15 )\n" +" nIndex = 15;\n" +" else if ( nIndex <= 1 )\n" +" nIndex = 0;\n" +" fValue = floor( fValue + 0.5 + nKorrVal[nIndex] );\n" +" return fValue;\n" "}\n"; std::string GetRmzDecl = @@ -55,27 +56,29 @@ std::string GetRmzDecl = std::string GetRmz= "double GetRmz( double fZins, double fZzr, double fBw, double fZw, int nF )\n" "{\n" - "\tdouble fRmz;\n" - "\tif( fZins == 0.0 )\n" - "\t\tfRmz = ( fBw + fZw ) / fZzr;\n" - "\telse\n" - "\t\t{\n" - "\t\t\tdouble fTerm = pow( 1.0 + fZins, fZzr );\n" - "\t\t\tif( nF > 0 )\n" - "\t\t\t\tfRmz = ( fZw * fZins / ( fTerm - 1.0 ) + fBw" - " * fZins / ( 1.0 - 1.0 / fTerm ) ) / ( 1.0 + fZins );\n" - "\t\t\telse\n" - "\t\t\t\tfRmz = fZw * fZins / ( fTerm - 1.0 ) + fBw * fZins /" - "( 1.0 - 1.0 / fTerm );\n" - "\t\t}\n" - "\treturn -fRmz;\n" -"}\n\n"; +" double fRmz;\n" +" if( fZins == 0.0 )\n" +" fRmz = ( fBw + fZw ) / fZzr;\n" +" else\n" +" {\n" +" double fTerm = pow( 1.0 + fZins, fZzr );\n" +" if( nF > 0 )\n" +" fRmz = ( fZw * fZins / ( fTerm - 1.0 ) + fBw * fZins / ( 1.0 - 1." +"0 / fTerm ) ) / ( 1.0 + fZins );\n" +" else\n" +" fRmz = fZw * fZins / ( fTerm - 1.0 ) + fBw * fZins /( 1.0 - 1.0 " +"/ fTerm );\n" +" }\n" +" return -fRmz;\n" +"}\n"; std::string GetZwDecl = -"double GetZw( double fZins, double fZzr, double fRmz, double fBw, int nF );\n"; +"double GetZw( double fZins, double fZzr, double fRmz," +"double fBw, int nF );\n"; std::string GetZw = -"double GetZw( double fZins, double fZzr, double fRmz, double fBw, int nF )\n" +"double GetZw( double fZins, double fZzr, double fRmz," +"double fBw, int nF )\n" "{\n" " double fZw;\n" " if( fZins == 0.0 )\n" @@ -84,13 +87,13 @@ std::string GetZw = " {\n" " double fTerm = pow( 1.0 + fZins, fZzr );\n" " if( nF > 0 )\n" -" fZw = fBw * fTerm + fRmz * ( 1.0 + fZins ) *" -"( fTerm - 1.0 ) / fZins;\n" +" fZw = fBw * fTerm + fRmz * ( 1.0 + fZins ) *( fTerm - 1.0 ) " +"/ fZins;\n" " else\n" -" fZw = fBw * fTerm + fRmz * ( fTerm - 1.0 ) / fZins;\n" +" fZw = fBw * fTerm + fRmz * ( fTerm - 1.0 ) / fZins;\n" " }\n" " return -fZw;\n" -"}\n\n"; +"}\n"; std::string IsLeapYearDecl = "bool IsLeapYear( int n );\n"; @@ -98,7 +101,8 @@ std::string IsLeapYearDecl = std::string IsLeapYear = "bool IsLeapYear( int n )\n" "{\n" - "return ( (( ( n % 4 ) == 0 ) && ( ( n % 100 ) != 0)) || ( ( n % 400 ) == 0 ) );\n" +" return ( (( ( n % 4 ) == 0 ) && ( ( n % 100 ) != 0)) || ( ( n % 400 ) == " +"0 ) );\n" "}\n"; std::string DaysInMonthDecl= @@ -107,8 +111,8 @@ std::string DaysInMonthDecl= std::string DaysInMonth = "int DaysInMonth( int nMonth, int nYear )\n" "{\n" - " int aDaysInMonth[12] = { 31, 28, 31, 30, 31, 30,\n" - " 31, 31, 30, 31, 30, 31 };\n" +" int aDaysInMonth[12] = { 31, 28, 31, 30, 31, 30,\n" +" 31, 31, 30, 31, 30, 31 };\n" "\n" " if ( nMonth != 2 )\n" " return aDaysInMonth[nMonth-1];\n" @@ -137,7 +141,8 @@ std::string DaysToDate = " nTempDays = nDays;\n" " *rYear = (int)((nTempDays / 365) - i);\n" " nTempDays -= ((int) *rYear -1) * 365;\n" -" nTempDays -= (( *rYear -1) / 4) - (( *rYear -1) / 100) + ((*rYear -1) / 400);\n" +" nTempDays -= (( *rYear -1) / 4) - (( *rYear -1) / 100) +" +"((*rYear -1) / 400);\n" " bCalc = false;\n" " if ( nTempDays < 1 )\n" " {\n" @@ -175,7 +180,6 @@ std::string DateToDays= "{\n" " int nDays = ((int)nYear-1) * 365;\n" " nDays += ((nYear-1) / 4) - ((nYear-1) / 100) + ((nYear-1) / 400);\n" - " for( int i = 1; i < nMonth; i++ )\n" " nDays += DaysInMonth(i,nYear);\n" " nDays += nDay;\n" @@ -183,13 +187,14 @@ std::string DateToDays= " return nDays;\n" "}\n"; + std::string GetNullDateDecl= "int GetNullDate();\n"; std::string GetNullDate= "int GetNullDate()\n" "{\n" -" return DateToDays(30,12,1899 );\n" +" return DateToDays(30,12,1899 );\n" "}\n"; std::string ScaDateDecl= @@ -202,22 +207,22 @@ std::string ScaDate= "int *nMonth,int *nYear,int *bLastDayMode,int *bLastDay," "int *b30Days,int *bUSMode,int *nDay)\n" "{\n" -"DaysToDate( nNullDate + nDate, nOrigDay, nMonth, nYear );\n" -"*bLastDayMode = (nBase != 5);\n" -"*bLastDay = (*nOrigDay >= DaysInMonth( *nMonth, *nYear ));\n" -"*b30Days = (nBase == 0) || (nBase == 4);\n" -"*bUSMode = (nBase == 0);\n" - "if( *b30Days)\n" - "{\n" - "*nDay = min( *nOrigDay, 30);\n" - "if( *bLastDay || (*nDay >=DaysInMonth( *nMonth, *nYear )) )\n" - "*nDay = 30;\n" - "}\n" - "else\n" - "{\n" - "int nLastDay = DaysInMonth( *nMonth, *nYear );\n" - "*nDay = *bLastDay ? nLastDay : min( *nOrigDay, nLastDay );\n" - "}\n" +" DaysToDate( nNullDate + nDate, nOrigDay, nMonth, nYear );\n" +" *bLastDayMode = (nBase != 5);\n" +" *bLastDay = (*nOrigDay >= DaysInMonth( *nMonth, *nYear ));\n" +" *b30Days = (nBase == 0) || (nBase == 4);\n" +" *bUSMode = (nBase == 0);\n" +" if( *b30Days)\n" +" {\n" +" *nDay = min( *nOrigDay, 30);\n" +" if( *bLastDay || (*nDay >=DaysInMonth( *nMonth, *nYear )) )\n" +" *nDay = 30;\n" +" }\n" +" else\n" +" {\n" +" int nLastDay = DaysInMonth( *nMonth, *nYear );\n" +" *nDay = *bLastDay ? nLastDay : min( *nOrigDay, nLastDay );\n" +" }\n" "}\n"; std::string addMonthsDecl= @@ -228,31 +233,31 @@ std::string addMonths= "void addMonths(int b30Days,int bLastDay,int *nDay,int nOrigDay," "int *nMonth,int nMonthCount,int *year)\n" "{\n" - "int nNewMonth = nMonthCount + *nMonth;\n" - "if( nNewMonth > 12 )\n" - "{\n" - "--nNewMonth;\n" - "*year+=nNewMonth / 12 ;\n" - "*nMonth = ( nNewMonth % 12 ) + 1;\n" - "}\n" - "else if( nNewMonth < 1 )\n" - "{\n" - "*year+= nNewMonth / 12 - 1 ;\n" - "*nMonth = nNewMonth % 12 + 12 ;\n" - "}\n" - "else\n" - "*nMonth = nNewMonth ;\n" - "if( b30Days )\n" - "{\n" - "*nDay = min( nOrigDay, 30);\n" - "if( bLastDay || (*nDay >= DaysInMonth( *nMonth, *year )) )\n" - "*nDay = 30;\n" - "}\n" - "else\n" - "{\n" - "int nLastDay = DaysInMonth( *nMonth, *year );\n" - "*nDay = bLastDay ? nLastDay : min( nOrigDay, nLastDay );\n" - "}\n" +" int nNewMonth = nMonthCount + *nMonth;\n" +" if( nNewMonth > 12 )\n" +" {\n" +" --nNewMonth;\n" +" *year+=nNewMonth / 12 ;\n" +" *nMonth = ( nNewMonth % 12 ) + 1;\n" +" }\n" +" else if( nNewMonth < 1 )\n" +" {\n" +" *year+= nNewMonth / 12 - 1 ;\n" +" *nMonth = nNewMonth % 12 + 12 ;\n" +" }\n" +" else\n" +" *nMonth = nNewMonth ;\n" +" if( b30Days )\n" +" {\n" +" *nDay = min( nOrigDay, 30);\n" +" if( bLastDay || (*nDay >= DaysInMonth( *nMonth, *year )) )\n" +" *nDay = 30;\n" +" }\n" +" else\n" +" {\n" +" int nLastDay = DaysInMonth( *nMonth, *year );\n" +" *nDay = bLastDay ? nLastDay : min( nOrigDay, nLastDay );\n" +" }\n" "}\n"; std::string getDaysInMonthRangeDecl= @@ -261,17 +266,17 @@ std::string getDaysInMonthRangeDecl= std::string getDaysInMonthRange= "int getDaysInMonthRange( int nFrom, int nTo,int b30Days,int year)\n" "{\n" - "if( nFrom > nTo )\n" - "return 0;\n" - "int nRet = 0;\n" - "if( b30Days )\n" - "nRet = (nTo - nFrom + 1) * 30;\n" - "else\n" - "{\n" - "for( int nMonthIx = nFrom; nMonthIx <= nTo; ++nMonthIx )\n" - "nRet += b30Days ? 30 : DaysInMonth( nMonthIx, year );\n" - "}\n" - "return nRet;\n" +" if( nFrom > nTo )\n" +" return 0;\n" +" int nRet = 0;\n" +" if( b30Days )\n" +" nRet = (nTo - nFrom + 1) * 30;\n" +" else\n" +" {\n" +" for( int nMonthIx = nFrom; nMonthIx <= nTo; ++nMonthIx )\n" +" nRet += b30Days ? 30 : DaysInMonth( nMonthIx, year );\n" +" }\n" +" return nRet;\n" "}\n"; std::string GetDaysInYearsDecl= @@ -280,18 +285,18 @@ std::string GetDaysInYearsDecl= std::string GetDaysInYears= "int GetDaysInYears( int nYear1, int nYear2 )\n" "{\n" - "int nLeaps = 0;\n" - "for( int n = nYear1 ; n <= nYear2 ; n++ )\n" - "{\n" - "if( IsLeapYear( n ) )\n" - "nLeaps++;\n" - "}\n" - "int nSum = 1;\n" - "nSum += nYear2;\n" - "nSum -= nYear1;\n" - "nSum *= 365;\n" - "nSum += nLeaps;\n" - "return nSum;\n" +" int nLeaps = 0;\n" +" for( int n = nYear1 ; n <= nYear2 ; n++ )\n" +" {\n" +" if( IsLeapYear( n ) )\n" +" nLeaps++;\n" +" }\n" +" int nSum = 1;\n" +" nSum += nYear2;\n" +" nSum -= nYear1;\n" +" nSum *= 365;\n" +" nSum += nLeaps;\n" +" return nSum;\n" "}\n"; std::string GetDaysInYearDecl= @@ -300,22 +305,22 @@ std::string GetDaysInYearDecl= std::string GetDaysInYear= "int GetDaysInYear( int nNullDate, int nDate, int nMode )\n" "{\n" -"switch( nMode )\n" -"{\n" -"case 0:\n" -"case 2:\n" -"case 4:\n" - "return 360;\n" -"case 1:\n" - "{\n" - "int nD=0, nM=0, nY=0;\n" - "nDate += nNullDate;\n" - "DaysToDate( nDate, &nD, &nM, &nY );\n" - "return IsLeapYear( nY )? 366 : 365;\n" - "}\n" -"case 3:\n" - "return 365;\n" -"}\n" +" switch( nMode )\n" +" {\n" +" case 0:\n" +" case 2:\n" +" case 4:\n" +" return 360;\n" +" case 1:\n" +" {\n" +" int nD=0, nM=0, nY=0;\n" +" nDate += nNullDate;\n" +" DaysToDate( nDate, &nD, &nM, &nY );\n" +" return IsLeapYear( nY )? 366 : 365;\n" +" }\n" +" case 3:\n" +" return 365;\n" +" }\n" "}\n"; std::string getDaysInYearRangeDecl = @@ -324,70 +329,75 @@ std::string getDaysInYearRangeDecl = std::string getDaysInYearRange= "int getDaysInYearRange( int nFrom, int nTo,int b30Days )\n" "{\n" - "if( nFrom > nTo )\n" - "return 0;\n" - "return b30Days ? ((nTo - nFrom + 1) * 360) : GetDaysInYears( nFrom, nTo );\n" +" if( nFrom > nTo )\n" +" return 0;\n" +" return b30Days ? ((nTo - nFrom + 1) * 360) : GetDaysInYears( nFrom, nTo)" +";\n" "}\n"; std::string getDiffDecl= -"int getDiff(int rFrom,int rTo,int fDay,int fMonth,int fYear,int fbLastDayMode,int fbLastDay," -"int fb30Days,int fbUSMode,int fnDay,""int tDay,int tMonth,int tYear,int tbLastDayMode," -"int tbLastDay,int tb30Days,int tbUSMode,int tnDay);\n"; +"int getDiff(int rFrom,int rTo,int fDay,int fMonth,int fYear,int fbLastDayMode," +"int fbLastDay,int fb30Days,int fbUSMode,int fnDay,int tDay,int tMonth," +"int tYear,int tbLastDayMode,int tbLastDay,int tb30Days," +"int tbUSMode,int tnDay);\n"; std::string getDiff= -"int getDiff(int rFrom,int rTo,int fDay,int fMonth,int fYear,int fbLastDayMode,int fbLastDay," -"int fb30Days,int fbUSMode,int fnDay,""int tDay,int tMonth,int tYear,int tbLastDayMode," -"int tbLastDay,int tb30Days,int tbUSMode,int tnDay)\n" -"{\n" -"if(rFrom>rTo)\n" -"{\n" -"int d=fDay;fDay=tDay;tDay=d;\n" -"int m=fMonth;fMonth=tMonth;tMonth=m;\n" -"int y=fYear;fYear=tYear;tYear=y;\n" -"int a=fbLastDayMode;fbLastDayMode=tbLastDayMode;tbLastDayMode=a;\n" -"int b=fbLastDay;fbLastDay=tbLastDay;tbLastDay=b;\n" -"int c=fb30Days;fb30Days=tb30Days;tb30Days=c;\n" -"int e=fbUSMode;fbUSMode=tbUSMode;tbUSMode=e;\n" -"int f=fnDay;fnDay=tnDay;tnDay=f;\n" -"}\n" -"int nDiff=0;\n" -"if( tb30Days )\n" -"{\n" -"if( tbUSMode )\n" -"{\n" - "if( ((fMonth == 2) || (fnDay < 30)) && (tDay == 31) )\n" - "tnDay = 31;\n" - "else if( (tMonth == 2) && tbLastDay )\n" - "tnDay = DaysInMonth( 2, tYear );\n" -"}\n" -"else\n" +"int getDiff(int rFrom,int rTo,int fDay,int fMonth,int fYear,int fbLastDayMode," +"int fbLastDay,int fb30Days,int fbUSMode,int fnDay,int tDay,int tMonth," +"int tYear,int tbLastDayMode,int tbLastDay,int tb30Days," +"int tbUSMode,int tnDay)\n" "{\n" - "if( (fMonth == 2) && (fnDay == 30) )\n" - "fnDay = DaysInMonth( 2, fYear );\n" - "if( (tMonth == 2) && (tnDay == 30) )\n" - "tnDay = DaysInMonth( 2, tYear );\n" -"}\n" -"}\n" -"if( (fYear < tYear) || ((fYear == tYear) && (fMonth < tMonth)) )\n" -"{\n" -"nDiff = (fb30Days? 30:DaysInMonth(fMonth,fYear) )- fnDay + 1;\n" -"fDay = fnDay = 1;\n" -"fbLastDay = 0;\n" -"addMonths(fb30Days,fbLastDay,&fnDay,fDay,&fMonth,1,&fYear);\n" -"if( fYear < tYear )\n" -"{\n" - "nDiff += getDaysInMonthRange( fMonth, 12,fb30Days,fYear);\n" - "addMonths(fb30Days,fbLastDay,&fnDay,fDay,&fMonth,13-fMonth,&fYear);\n" - "nDiff += getDaysInYearRange( fYear, tYear - 1,fb30Days);\n" - "fYear+=tYear - fYear;\n" -"}\n" -"nDiff += getDaysInMonthRange(fMonth, tMonth - 1,fb30Days ,fYear );\n" -"addMonths(fb30Days,fbLastDay,&fnDay,fDay,&fMonth,tMonth-fMonth,&fYear);\n" -"}\n" -"nDiff += tnDay - fnDay;\n" -"return nDiff > 0 ? nDiff : 0;\n" +" if(rFrom>rTo)\n" +" {\n" +" int d=fDay;fDay=tDay;tDay=d;\n" +" int m=fMonth;fMonth=tMonth;tMonth=m;\n" +" int y=fYear;fYear=tYear;tYear=y;\n" +" int a=fbLastDayMode;fbLastDayMode=tbLastDayMode;tbLastDayMode=a;\n" +" int b=fbLastDay;fbLastDay=tbLastDay;tbLastDay=b;\n" +" int c=fb30Days;fb30Days=tb30Days;tb30Days=c;\n" +" int e=fbUSMode;fbUSMode=tbUSMode;tbUSMode=e;\n" +" int f=fnDay;fnDay=tnDay;tnDay=f;\n" +" }\n" +" int nDiff=0;\n" +" if( tb30Days )\n" +" {\n" +" if( tbUSMode )\n" +" {\n" +" if( ((fMonth == 2) || (fnDay < 30)) && (tDay == 31) )\n" +" tnDay = 31;\n" +" else if( (tMonth == 2) && tbLastDay )\n" +" tnDay = DaysInMonth( 2, tYear );\n" +" }\n" +" else\n" +" {\n" +" if( (fMonth == 2) && (fnDay == 30) )\n" +" fnDay = DaysInMonth( 2, fYear );\n" +" if( (tMonth == 2) && (tnDay == 30) )\n" +" tnDay = DaysInMonth( 2, tYear );\n" +" }\n" +" }\n" +" if( (fYear < tYear) || ((fYear == tYear) && (fMonth < tMonth)) )\n" +" {\n" +" nDiff = (fb30Days? 30:DaysInMonth(fMonth,fYear) )- fnDay + 1;\n" +" fDay = fnDay = 1;\n" +" fbLastDay = 0;\n" +" addMonths(fb30Days,fbLastDay,&fnDay,fDay,&fMonth,1,&fYear);\n" +" if( fYear < tYear )\n" +" {\n" +" nDiff += getDaysInMonthRange( fMonth, 12,fb30Days,fYear);\n" +" addMonths(fb30Days,fbLastDay,&fnDay,fDay,&fMonth,13-fMonth,&fYear" +");\n" +" nDiff += getDaysInYearRange( fYear, tYear - 1,fb30Days);\n" +" fYear+=tYear - fYear;\n" +" }\n" +" nDiff += getDaysInMonthRange(fMonth, tMonth - 1,fb30Days ,fYear );\n" +" addMonths(fb30Days,fbLastDay,&fnDay,fDay,&fMonth,tMonth-fMonth,&fYear" +");\n" +" }\n" +" nDiff += tnDay - fnDay;\n" +" return nDiff > 0 ? nDiff : 0;\n" "}\n"; @@ -399,68 +409,72 @@ std::string lcl_GetcoupdaybsDecl= std::string lcl_Getcoupdaybs= "int lcl_Getcoupdaybs(int nNullDate,int nSettle, int nMat,int nFreq,int nBase)\n" "{\n" - "int aDate = nMat;\n" - "int rDay=0,rMonth=0, rYear=0;int mDay=0,mMonth=0, mYear=0;int sDay=0,sMonth=0," - "sYear=0;\n" - "int rbLastDayMode=0, rbLastDay=0,rb30Days=0,rbUSMode=0,rnDay=0;\n" - "int sbLastDayMode=0, sbLastDay=0,sb30Days=0,sbUSMode=0,snDay=0;\n" - "ScaDate( nNullDate,aDate,nBase,&rDay,&rMonth,&rYear,&rbLastDayMode,&rbLastDay," - "&rb30Days,&rbUSMode,&rnDay);\n" - "ScaDate( nNullDate,nSettle,nBase,&sDay,&sMonth,&sYear,&sbLastDayMode,&sbLastDay," - "&sb30Days,&sbUSMode,&snDay);\n" - "rYear= sYear;\n" - "nSettle=nSettle+nNullDate;\n" - "aDate=DateToDays( rDay,rMonth,rYear );\n" - "if( aDate < nSettle )\n" - "{\n" - "rYear+= 1;\n" - "aDate=DateToDays( rDay,rMonth,rYear );\n" - "}\n" - "while(aDate > nSettle )\n" - "{\n" - "addMonths(rb30Days,rbLastDay,&rnDay,rDay,&rMonth,-1*(12/nFreq),&rYear);\n" - "aDate=DateToDays( rDay,rMonth,rYear );\n" - "}\n" - "return getDiff( aDate, nSettle, rDay, rMonth, rYear, rbLastDayMode, rbLastDay, rb30Days," - "rbUSMode, rnDay,\n" - "sDay, sMonth, sYear, sbLastDayMode, sbLastDay, sb30Days, sbUSMode, snDay);\n" +" int aDate = nMat;\n" +" int rDay=0,rMonth=0, rYear=0;int mDay=0,mMonth=0, mYear=0;int sDay=0," +"sMonth=0, sYear=0;\n" +" int rbLastDayMode=0, rbLastDay=0,rb30Days=0,rbUSMode=0,rnDay=0;\n" +" int sbLastDayMode=0, sbLastDay=0,sb30Days=0,sbUSMode=0,snDay=0;\n" +" ScaDate( nNullDate,aDate,nBase,&rDay,&rMonth,&rYear,&rbLastDayMode,&" +"rbLastDay,&rb30Days,&rbUSMode,&rnDay);\n" +" ScaDate( nNullDate,nSettle,nBase,&sDay,&sMonth,&sYear,&sbLastDayMode,&" +"sbLastDay,&sb30Days,&sbUSMode,&snDay);\n" +" rYear= sYear;\n" +" nSettle=nSettle+nNullDate;\n" +" aDate=DateToDays( rDay,rMonth,rYear );\n" +" if( aDate < nSettle )\n" +" {\n" +" rYear+= 1;\n" +" aDate=DateToDays( rDay,rMonth,rYear );\n" +" }\n" +" while(aDate > nSettle )\n" +" {\n" +" addMonths(rb30Days,rbLastDay,&rnDay,rDay,&rMonth,-1*(12/nFreq),&rYear" +");\n" +" aDate=DateToDays( rDay,rMonth,rYear );\n" +" }\n" +" return getDiff( aDate, nSettle, rDay, rMonth, rYear, rbLastDayMode, " +"rbLastDay, rb30Days, rbUSMode, rnDay, sDay, sMonth, sYear, sbLastDayMode," +"sbLastDay, sb30Days, sbUSMode, snDay);\n" "}\n"; std::string lcl_GetcoupdaysDecl= -"int lcl_Getcoupdays(int nNullDate,int nSettle, int nMat,int nFreq,int nBase);\n"; +"int lcl_Getcoupdays(int nNullDate,int nSettle, " +"int nMat,int nFreq,int nBase);\n"; std::string lcl_Getcoupdays= -"int lcl_Getcoupdays(int nNullDate,int nSettle, int nMat,int nFreq,int nBase)\n" -"{\n" - "int aDate = nMat;\n" - "int rDay=0,rMonth=0, rYear=0;int mDay=0,mMonth=0, mYear=0;int sDay=0," - "sMonth=0, sYear=0;\n" - "int rbLastDayMode=0, rbLastDay=0,rb30Days=0,rbUSMode=0,rnDay=0;\n" - "int sbLastDayMode=0, sbLastDay=0,sb30Days=0,sbUSMode=0,snDay=0;\n" - "ScaDate( nNullDate,aDate,nBase,&rDay,&rMonth,&rYear," - "&rbLastDayMode,&rbLastDay,&rb30Days,&rbUSMode,&rnDay);\n" - "ScaDate( nNullDate,nSettle,nBase,&sDay,&sMonth,&sYear," - "&sbLastDayMode,&sbLastDay,&sb30Days,&sbUSMode,&snDay);\n" - "rYear= sYear;\n" - "nSettle=nSettle+nNullDate;\n" - "aDate=DateToDays( rDay,rMonth,rYear );\n" - "if( aDate < nSettle )\n" - "{ \n" - "rYear+= 1;\n" - "aDate=DateToDays( rDay,rMonth,rYear );\n" - "}\n" - "while(aDate > nSettle )\n" - "{\n" - "addMonths(rb30Days,rbLastDay,&rnDay,rDay,&rMonth,-1*(12/nFreq),&rYear);\n" - "aDate=DateToDays( rDay,rMonth,rYear );\n" - "}\n" - "int aNextDate=aDate;int aDay=rDay,aMonth=rMonth, aYear=rYear;\n" - "int abLastDayMode=rbLastDayMode, abLastDay=rbLastDay," - "ab30Days=rb30Days,abUSMode=rbUSMode,anDay=rnDay;\n" - "addMonths(ab30Days,abLastDay,&anDay,aDay,&aMonth,12/nFreq,&aYear);\n" - "return getDiff( aDate, aNextDate, rDay, rMonth, rYear, rbLastDayMode," - "rbLastDay, rb30Days, rbUSMode, rnDay,\n" - "aDay, aMonth, aYear, abLastDayMode, abLastDay, ab30Days, abUSMode, anDay);\n" +"int lcl_Getcoupdays(int nNullDate,int nSettle, " +"int nMat,int nFreq,int nBase)\n" +"{\n" +" int aDate = nMat;\n" +" int rDay=0,rMonth=0, rYear=0;int mDay=0,mMonth=0, mYear=0;int sDay=0," +"sMonth=0, sYear=0;\n" +" int rbLastDayMode=0, rbLastDay=0,rb30Days=0,rbUSMode=0,rnDay=0;\n" +" int sbLastDayMode=0, sbLastDay=0,sb30Days=0,sbUSMode=0,snDay=0;\n" +" ScaDate( nNullDate,aDate,nBase,&rDay,&rMonth,&rYear,&rbLastDayMode,&" +"rbLastDay,&rb30Days,&rbUSMode,&rnDay);\n" +" ScaDate( nNullDate,nSettle,nBase,&sDay,&sMonth,&sYear,&sbLastDayMode,&" +"sbLastDay,&sb30Days,&sbUSMode,&snDay);\n" +" rYear= sYear;\n" +" nSettle=nSettle+nNullDate;\n" +" aDate=DateToDays( rDay,rMonth,rYear );\n" +" if( aDate < nSettle )\n" +" { \n" +" rYear+= 1;\n" +" aDate=DateToDays( rDay,rMonth,rYear );\n" +" }\n" +" while(aDate > nSettle )\n" +" {\n" +" addMonths(rb30Days,rbLastDay,&rnDay,rDay,&rMonth,-1*(12/nFreq),&rYear" +");\n" +" aDate=DateToDays( rDay,rMonth,rYear );\n" +" }\n" +" int aNextDate=aDate;int aDay=rDay,aMonth=rMonth, aYear=rYear;\n" +" int abLastDayMode=rbLastDayMode, abLastDay=rbLastDay,ab30Days=rb30Days," +"abUSMode=rbUSMode,anDay=rnDay;\n" +" addMonths(ab30Days,abLastDay,&anDay,aDay,&aMonth,12/nFreq,&aYear);\n" +" return getDiff( aDate, aNextDate, rDay, rMonth, rYear, rbLastDayMode, " +"rbLastDay, rb30Days, rbUSMode, rnDay, aDay, aMonth, aYear, abLastDayMode," +"abLastDay, ab30Days, abUSMode, anDay);\n" "}\n"; @@ -470,39 +484,40 @@ std::string lcl_GetcoupnumDecl= std::string lcl_Getcoupnum= "int lcl_Getcoupnum(int nNullDate,int nSettle, int nMat,int nFreq)\n" "{\n" - "int aDate = nMat;int rDay=0,rMonth=0, rYear=0;int mDay=0,mMonth=0, mYear=0;\n" - "int sDay=0,sMonth=0, sYear=0;\n" - "DaysToDate(aDate+nNullDate,&rDay, &rMonth, &rYear );\n" - "DaysToDate(nMat+nNullDate,&mDay, &mMonth, &mYear );\n" - "DaysToDate(nSettle+nNullDate,&sDay, &sMonth, &sYear );\n" - "rYear= sYear;\n" - "nSettle=nSettle+nNullDate;\n" - "aDate=DateToDays( rDay,rMonth,rYear );\n" - "if( aDate < nSettle )\n" - "rYear+= 1;\n" - "int d=DateToDays( rDay,rMonth,rYear );\n" - "int nMonthCount=-1*(12 / nFreq);\n" - "while(d > nSettle )\n" - "{\n" - "int nNewMonth = nMonthCount + rMonth;\n" - "if( nNewMonth > 12 )\n" - "{\n" - "--nNewMonth;\n" - "rYear+=nNewMonth / 12;\n" - "rMonth = nNewMonth % 12 + 1;\n" - "}\n" - "else if( nNewMonth < 1 )\n" - "{\n" - "rYear+= nNewMonth / 12 - 1;\n" - "rMonth = nNewMonth % 12 + 12;\n" - "}\n" - "else\n" - "rMonth = nNewMonth;\n" - "d=DateToDays( rDay,rMonth,rYear );\n" - "}\n" - "int n=(mYear-rYear)*12+mMonth-rMonth;\n" - "n=n*nFreq/12;\n" - "return n;\n" +" int aDate = nMat;int rDay=0,rMonth=0, rYear=0;int mDay=0,mMonth=0, mYear=" +"0;\n" +" int sDay=0,sMonth=0, sYear=0;\n" +" DaysToDate(aDate+nNullDate,&rDay, &rMonth, &rYear );\n" +" DaysToDate(nMat+nNullDate,&mDay, &mMonth, &mYear );\n" +" DaysToDate(nSettle+nNullDate,&sDay, &sMonth, &sYear );\n" +" rYear= sYear;\n" +" nSettle=nSettle+nNullDate;\n" +" aDate=DateToDays( rDay,rMonth,rYear );\n" +" if( aDate < nSettle )\n" +" rYear+= 1;\n" +" int d=DateToDays( rDay,rMonth,rYear );\n" +" int nMonthCount=-1*(12 / nFreq);\n" +" while(d > nSettle )\n" +" {\n" +" int nNewMonth = nMonthCount + rMonth;\n" +" if( nNewMonth > 12 )\n" +" {\n" +" --nNewMonth;\n" +" rYear+=nNewMonth / 12;\n" +" rMonth = nNewMonth % 12 + 1;\n" +" }\n" +" else if( nNewMonth < 1 )\n" +" {\n" +" rYear+= nNewMonth / 12 - 1;\n" +" rMonth = nNewMonth % 12 + 12;\n" +" }\n" +" else\n" +" rMonth = nNewMonth;\n" +" d=DateToDays( rDay,rMonth,rYear );\n" +" }\n" +" int n=(mYear-rYear)*12+mMonth-rMonth;\n" +" n=n*nFreq/12;\n" +" return n;\n" "}\n"; std::string coupdaysDecl= @@ -512,11 +527,11 @@ std::string coupdaysDecl= std::string coupdays= "double coupdays(int nSettle,int nMat,int nFreq,int nBase)\n" "{\n" - "int nNullDate=GetNullDate();\n" - "if( nBase == 1 )\n" - "return lcl_Getcoupdays(nNullDate, nSettle, nMat,nFreq, nBase);\n" - "else\n" - "return (double)GetDaysInYear(0,0,nBase)/nFreq;\n" +" int nNullDate=GetNullDate();\n" +" if( nBase == 1 )\n" +" return lcl_Getcoupdays(nNullDate, nSettle, nMat,nFreq, nBase);\n" +" else\n" +" return (double)GetDaysInYear(0,0,nBase)/nFreq;\n" "}\n"; std::string coupdaybsDecl= @@ -525,8 +540,8 @@ std::string coupdaybsDecl= std::string coupdaybs= "double coupdaybs( int nSettle,int nMat,int nFreq,int nBase)\n" "{\n" - "int nNullDate=GetNullDate();\n" - "return lcl_Getcoupdaybs(nNullDate, nSettle, nMat,nFreq, nBase);\n" +" int nNullDate=GetNullDate();\n" +" return lcl_Getcoupdaybs(nNullDate, nSettle, nMat,nFreq, nBase);\n" "}\n"; std::string coupdaysncDecl= @@ -534,39 +549,41 @@ std::string coupdaysncDecl= std::string coupdaysnc= -"double coupdaysnc( int nSettle,int nMat,int nFreq,int nBase)\n" + "double coupdaysnc( int nSettle,int nMat,int nFreq,int nBase)\n" "{\n" -"int nNullDate=GetNullDate();\n" -"if((nBase != 0) && (nBase != 4))\n" -"{\n" - "int aDate = nMat;\n" - "int rDay=0,rMonth=0, rYear=0;int mDay=0,mMonth=0," - "mYear=0;int sDay=0,sMonth=0, sYear=0;\n" - "int rbLastDayMode=0, rbLastDay=0,rb30Days=0,rbUSMode=0,rnDay=0;\n" - "int sbLastDayMode=0, sbLastDay=0,sb30Days=0,sbUSMode=0,snDay=0;\n" - "ScaDate( nNullDate,aDate,nBase,&rDay,&rMonth,&rYear," - "&rbLastDayMode,&rbLastDay,&rb30Days,&rbUSMode,&rnDay);\n" - "ScaDate( nNullDate,nSettle,nBase,&sDay,&sMonth,&sYear," - "&sbLastDayMode,&sbLastDay,&sb30Days,&sbUSMode,&snDay);\n" - "rYear= sYear;\n" - "nSettle=nSettle+nNullDate;\n" - "aDate=DateToDays( rDay,rMonth,rYear );\n" - "if( aDate > nSettle )\n" - "{\n" - "rYear-= 1;\n" - "aDate=DateToDays( rDay,rMonth,rYear );\n" -"}\n" -"while(aDate <= nSettle )\n" -"{\n" - "addMonths(rb30Days,rbLastDay,&rnDay,rDay,&rMonth,12/nFreq,&rYear);\n" - "aDate=DateToDays( rDay,rMonth,rYear );\n" -"}\n" -"return getDiff( nSettle, aDate, sDay, sMonth, sYear, " -"sbLastDayMode, sbLastDay, sb30Days, sbUSMode, snDay,\n" - "rDay, rMonth, rYear, rbLastDayMode, rbLastDay, rb30Days, rbUSMode, rnDay);\n" -"}\n" -"else\n" - "return coupdays(nSettle,nMat,nFreq,nBase)- coupdaybs( nSettle,nMat,nFreq,nBase);\n" +" int nNullDate=GetNullDate();\n" +" if((nBase != 0) && (nBase != 4))\n" +" {\n" +" int aDate = nMat;\n" +" int rDay=0,rMonth=0, rYear=0;int mDay=0,mMonth=0, mYear=0;int sDay=0," +"sMonth=0, sYear=0;\n" +" int rbLastDayMode=0, rbLastDay=0,rb30Days=0,rbUSMode=0,rnDay=0;\n" +" int sbLastDayMode=0, sbLastDay=0,sb30Days=0,sbUSMode=0,snDay=0;\n" +" ScaDate( nNullDate,aDate,nBase,&rDay,&rMonth,&rYear,&rbLastDayMode,&" +"rbLastDay,&rb30Days,&rbUSMode,&rnDay);\n" +" ScaDate( nNullDate,nSettle,nBase,&sDay,&sMonth,&sYear,&sbLastDayMode," +"&sbLastDay,&sb30Days,&sbUSMode,&snDay);\n" +" rYear= sYear;\n" +" nSettle=nSettle+nNullDate;\n" +" aDate=DateToDays( rDay,rMonth,rYear );\n" +" if( aDate > nSettle )\n" +" {\n" +" rYear-= 1;\n" +" aDate=DateToDays( rDay,rMonth,rYear );\n" +" }\n" +" while(aDate <= nSettle )\n" +" {\n" +" addMonths(rb30Days,rbLastDay,&rnDay,rDay,&rMonth,12/nFreq,&rYear)" +";\n" +" aDate=DateToDays( rDay,rMonth,rYear );\n" +" }\n" +" return getDiff( nSettle, aDate, sDay, sMonth, sYear, sbLastDayMode, " +"sbLastDay, sb30Days, sbUSMode, snDay, rDay, rMonth, rYear, rbLastDayMode, " +"rbLastDay, rb30Days, rbUSMode, rnDay);\n" +" }\n" +" else\n" +" return coupdays(nSettle,nMat,nFreq,nBase)- coupdaybs( nSettle,nMat," +"nFreq,nBase);\n" "}\n"; std::string coupnumDecl= @@ -575,8 +592,8 @@ std::string coupnumDecl= std::string coupnum= "double coupnum( int nSettle,int nMat,int nFreq,int nBase)\n" "{\n" - "int nNullDate=GetNullDate();\n" - "return lcl_Getcoupnum(nNullDate,nSettle,nMat,nFreq);\n" +" int nNullDate=GetNullDate();\n" +" return lcl_Getcoupnum(nNullDate,nSettle,nMat,nFreq);\n" "}\n"; std::string getPrice_Decl= @@ -588,18 +605,19 @@ std::string getPrice_= "double getPrice_(int nSettle, int nMat, double fRate, double fYield,\n" "double fRedemp, int nFreq, int nBase )\n" "{\n" - "double fFreq = nFreq;\n" - "double fE = coupdays( nSettle, nMat, nFreq, nBase );\n" - "double fDSC_E = coupdaysnc( nSettle, nMat, nFreq, nBase ) / fE;\n" - "double fN = coupnum( nSettle, nMat, nFreq, nBase );\n" - "double fA = coupdaybs( nSettle, nMat, nFreq, nBase );\n" - "double fRet = fRedemp / ( pow( 1.0 + fYield / fFreq, fN - 1.0 + fDSC_E ) );\n" - "fRet -= 100.0 * fRate / fFreq * fA / fE;\n" - "double fT1 = 100.0 * fRate / fFreq;\n" - "double fT2 = 1.0 + fYield / fFreq;\n" - "for( double fK = 0.0 ; fK < fN ; fK+=1.0 )\n" - "fRet += fT1 / pow( fT2, fK + fDSC_E );\n" -"return fRet;\n" +" double fFreq = nFreq;\n" +" double fE = coupdays( nSettle, nMat, nFreq, nBase );\n" +" double fDSC_E = coupdaysnc( nSettle, nMat, nFreq, nBase ) / fE;\n" +" double fN = coupnum( nSettle, nMat, nFreq, nBase );\n" +" double fA = coupdaybs( nSettle, nMat, nFreq, nBase );\n" +" double fRet = fRedemp / ( pow( 1.0 + fYield / fFreq, fN - 1.0 + " +"fDSC_E ) );\n" +" fRet -= 100.0 * fRate / fFreq * fA / fE;\n" +" double fT1 = 100.0 * fRate / fFreq;\n" +" double fT2 = 1.0 + fYield / fFreq;\n" +" for( double fK = 0.0 ; fK < fN ; fK+=1.0 )\n" +" fRet += fT1 / pow( fT2, fK + fDSC_E );\n" +" return fRet;\n" "}\n"; std::string getYield_Decl= @@ -610,52 +628,59 @@ std::string getYield_= "double getYield_( int nNullDate, int nSettle, int nMat, double fCoup," "double fPrice,double fRedemp, int nFreq, int nBase )\n" "{\n" - "double fRate = fCoup;\n" - "double fPriceN = 0.0;\n" - "double fYield1 = 0.0;\n" - "double fYield2 = 1.0;\n" - "double fPrice1 = getPrice_(nSettle, nMat, fRate, fYield1, fRedemp, nFreq, nBase );\n" - "double fPrice2 = getPrice_(nSettle, nMat, fRate, fYield2, fRedemp, nFreq, nBase );\n" - "double fYieldN = ( fYield2 - fYield1 ) * 0.5;\n" - "for( unsigned int nIter = 0 ; nIter < 100 && fPriceN != fPrice ; nIter++ )\n" - "{\n" - "fPriceN = getPrice_(nSettle, nMat, fRate, fYieldN, fRedemp, nFreq, nBase );\n" - "if( fPrice == fPrice1 )\n" - "return fYield1;\n" - "else if( fPrice == fPrice2 )\n" - "return fYield2;\n" - "else if( fPrice == fPriceN )\n" - "return fYieldN;\n" - "else if( fPrice < fPrice2 )\n" - "{\n" - "fYield2 *= 2.0;\n" - "fPrice2 = getPrice_(nSettle, nMat, fRate, fYield2, fRedemp, nFreq, nBase );\n" - "fYieldN = ( fYield2 - fYield1 ) * 0.5;\n" - "}\n" - "else\n" - "{\n" - "if( fPrice < fPriceN )\n" - "{\n" - "fYield1 = fYieldN;\n" - "fPrice1 = fPriceN;\n" - "}\n" - "else\n" - "{\n" - "fYield2 = fYieldN;\n" - "fPrice2 = fPriceN;\n" - "}\n" - "fYieldN = fYield2 - ( fYield2 - fYield1 ) * " - "( ( fPrice - fPrice2 ) / ( fPrice1 - fPrice2 ) );\n" - "}\n" - "}\n" - "return fYieldN;\n" +" double fRate = fCoup;\n" +" double fPriceN = 0.0;\n" +" double fYield1 = 0.0;\n" +" double fYield2 = 1.0;\n" +" double fPrice1 = getPrice_(nSettle, nMat, fRate, fYield1, fRedemp, " +"nFreq, nBase );\n" +" double fPrice2 = getPrice_(nSettle, nMat, fRate, fYield2, fRedemp, " +"nFreq, nBase );\n" +" double fYieldN = ( fYield2 - fYield1 ) * 0.5;\n" +" for( unsigned int nIter = 0 ; nIter < 100 && fPriceN != fPrice ; nIter++ " +")\n" +" {\n" +" fPriceN = getPrice_(nSettle, nMat, fRate, fYieldN, fRedemp, nFreq, " +"nBase );\n" +" if( fPrice == fPrice1 )\n" +" return fYield1;\n" +" else if( fPrice == fPrice2 )\n" +" return fYield2;\n" +" else if( fPrice == fPriceN )\n" +" return fYieldN;\n" +" else if( fPrice < fPrice2 )\n" +" {\n" +" fYield2 *= 2.0;\n" +" fPrice2 = getPrice_(nSettle, nMat, fRate, fYield2, fRedemp, nFreq" +", nBase );\n" +" fYieldN = ( fYield2 - fYield1 ) * 0.5;\n" +" }\n" +" else\n" +" {\n" +" if( fPrice < fPriceN )\n" +" {\n" +" fYield1 = fYieldN;\n" +" fPrice1 = fPriceN;\n" +" }\n" +" else\n" +" {\n" +" fYield2 = fYieldN;\n" +" fPrice2 = fPriceN;\n" +" }\n" +" fYieldN = fYield2 - ( fYield2 - fYield1 ) * ( ( fPrice - fPrice2 " +") / ( fPrice1 - fPrice2 ) );\n" +" }\n" +" }\n" +" return fYieldN;\n" "}\n"; std::string GetYearFracDecl= -"double GetYearFrac( int nNullDate, int nStartDate, int nEndDate, int nMode );\n"; +"double GetYearFrac( int nNullDate, int nStartDate, int nEndDate," +"int nMode );\n"; std::string GetYearFrac= -"double GetYearFrac( int nNullDate, int nStartDate, int nEndDate, int nMode ) \n" +"double GetYearFrac( int nNullDate, int nStartDate, int nEndDate," +"int nMode ) \n" "{\n" " if( nStartDate == nEndDate )\n" " return 0.0; \n" @@ -673,8 +698,10 @@ std::string GetYearFrac= " int nDay1, nDay2;\n" " int nMonth1, nMonth2;\n" " int nYear1, nYear2;\n" + " DaysToDate( nDate1, &nDay1, &nMonth1, &nYear1 );\n" " DaysToDate( nDate2, &nDay2, &nMonth2, &nYear2 );\n" + " int nDayDiff;\n" " switch( nMode )\n" " {\n" @@ -689,10 +716,12 @@ std::string GetYearFrac= " }\n" " else\n" " {\n" - " if ( nMonth1 == 2 && nDay1 == ( IsLeapYear( nYear1 ) ? 29 : 28 ) )\n" + " if ( nMonth1 == 2 && nDay1 == " + "( IsLeapYear( nYear1 ) ? 29 : 28 ) )\n" " {\n" " nDay1 = 30;\n" - " if ( nMonth2 == 2 && nDay2 == ( IsLeapYear( nYear2 ) ? 29 : 28 ) )\n" + " if ( nMonth2 == 2 && nDay2 == " + "( IsLeapYear( nYear2 ) ? 29 : 28 ) )\n" " {\n" " nDay2 = 30;\n" " }\n" @@ -736,20 +765,25 @@ std::string GetYearFrac= " ( nMonth1 < nMonth2 ) ||\n" " ( nMonth1 == nMonth2 && nDay1 < nDay2 ) ) )\n" " {\n" + " int nDayCount = 0;\n" - " for ( int i = nYear1; i <= nYear2; i++ )\n" + " for ( int i = nYear1; i <= nYear2; i++ )\n" " nDayCount += ( IsLeapYear( i ) ? 366 : 365 );\n" - " nDaysInYear = ( double ) nDayCount / ( double ) ( nYear2 - nYear1 + 1 );\n" + + " nDaysInYear = ( double ) nDayCount / " + "( double ) ( nYear2 - nYear1 + 1 );\n" " }\n" - " else\n" + " else\n" " {\n" " if ( isYearDifferent && IsLeapYear( nYear1 ) )\n" " {\n" " nDaysInYear = 366;\n" " }\n" - " else\n" + " else\n" " {\n" - " if ( ( IsLeapYear( nYear1 ) && nMonth1 <= 2 && nDay1 <= 29 ) ||\n" + + " if ( ( IsLeapYear( nYear1 ) && nMonth1 <= 2 " + "&& nDay1 <= 29 ) ||\n" " ( IsLeapYear( nYear2 ) && ( nMonth2 > 3 || " "( nMonth2 == 2 && nDay1 == 29 ) ) ) )\n" " {\n" @@ -787,16 +821,16 @@ std::string GetYieldmatDecl= std::string GetYieldmat= "double GetYieldmat( int nNullDate, int nSettle, int nMat, int nIssue,\n" "double fRate, double fPrice, int nBase )\n" - "{\n" - "double fIssMat = GetYearFrac( nNullDate, nIssue, nMat, nBase );\n" - "double fIssSet = GetYearFrac( nNullDate, nIssue, nSettle, nBase );\n" - "double fSetMat = GetYearFrac( nNullDate, nSettle, nMat, nBase );\n" - "double y = 1.0 + fIssMat * fRate;\n" - "y /= fPrice / 100.0 + fIssSet * fRate;\n" - "y-=1.0;\n" - "y /= fSetMat;\n" - "return y;\n" - "}\n"; +"{\n" +" double fIssMat = GetYearFrac( nNullDate, nIssue, nMat, nBase );\n" +" double fIssSet = GetYearFrac( nNullDate, nIssue, nSettle, nBase );\n" +" double fSetMat = GetYearFrac( nNullDate, nSettle, nMat, nBase );\n" +" double y = 1.0 + fIssMat * fRate;\n" +" y /= fPrice / 100.0 + fIssSet * fRate;\n" +" y-=1.0;\n" +" y /= fSetMat;\n" +" return y;\n" +"}\n"; std::string GetDiffDateDecl= "int GetDiffDate( int nNullDate, int nStartDate, int nEndDate, int nMode," @@ -806,71 +840,73 @@ std::string GetDiffDate= "int GetDiffDate( int nNullDate, int nStartDate, int nEndDate, int nMode," " int* pOptDaysIn1stYear )\n" "{\n" -"\t bool bNeg = nStartDate > nEndDate;\n" - -"\t if( bNeg )\n" -"\t {\n" -"\t\t int n = nEndDate;\n" -"\t\t nEndDate = nStartDate;\n" -"\t\t nStartDate = n;\n" -"\t }\n" -"\t int nRet;\n" -"\t switch( nMode )\n" -"\t {\n" -"\t\t case 0: \n" -"\t\t case 4: \n" -"\t\t {\n" -"\t\t\t int nD1, nM1, nY1, nD2, nM2, nY2;\n" -"\t\t\t nStartDate += nNullDate;\n" -"\t\t\t nEndDate += nNullDate;\n" -"\t\t\t DaysToDate( nStartDate, &nD1, &nM1, &nY1 );\n" -"\t\t\t DaysToDate( nEndDate, &nD2, &nM2, &nY2 );\n" -"\t\t\t bool bLeap = IsLeapYear( nY1 );\n" -"\t\t\t int nDays, nMonths;\n" -"\t\t\t nMonths = nM2 - nM1;\n" -"\t\t\t nDays = nD2 - nD1;\n" -"\t\t\t nMonths += ( nY2 - nY1 ) * 12;\n" -"\t\t\t nRet = nMonths * 30 + nDays;\n" -"\t\t\t if( nMode == 0 && nM1 == 2 && nM2 != 2 && nY1 == nY2 )\n" -"\t\t\t\t nRet -= bLeap? 1 : 2;\n" -"\t\t\t if( pOptDaysIn1stYear )\n" -"\t\t\t\t *pOptDaysIn1stYear = 360;\n" -"\t\t }\n" -"\t\t\t break;\n" -"\t\t case 1: \n" -"\t\t\t if( pOptDaysIn1stYear )\n" -"\t\t\t {\n" -"\t\t\t\t int nD, nM, nY;\n" -"\t\t\t\t DaysToDate( nStartDate + nNullDate, &nD, &nM, &nY );\n" -"\t\t\t\t *pOptDaysIn1stYear = IsLeapYear( nY )? 366 : 365;\n" -"\t\t\t }\n" -"\t\t\t nRet = nEndDate - nStartDate;\n" -"\t\t\t break;\n" -"\t\t case 2: \n" -"\t\t\t nRet = nEndDate - nStartDate;\n" -"\t\t\t if( pOptDaysIn1stYear )\n" -"\t\t\t\t *pOptDaysIn1stYear = 360;\n" -"\t\t\t break;\n" -"\t\t case 3: \n" -"\t\t\t nRet = nEndDate - nStartDate;\n" -"\t\t\t if( pOptDaysIn1stYear )\n" -"\t\t\t\t *pOptDaysIn1stYear = 365;\n" -"\t\t\t break;\n" -"\t }\n" -"\t return bNeg? -nRet : nRet;\n" +" bool bNeg = nStartDate > nEndDate;\n" +" if( bNeg )\n" +" {\n" +" int n = nEndDate;\n" +" nEndDate = nStartDate;\n" +" nStartDate = n;\n" +" }\n" +" int nRet;\n" +" switch( nMode )\n" +" {\n" +" case 0: \n" +" case 4: \n" +" {\n" +" int nD1, nM1, nY1, nD2, nM2, nY2;\n" +" nStartDate += nNullDate;\n" +" nEndDate += nNullDate;\n" +" DaysToDate( nStartDate, &nD1, &nM1, &nY1 );\n" +" DaysToDate( nEndDate, &nD2, &nM2, &nY2 );\n" +" bool bLeap = IsLeapYear( nY1 );\n" +" int nDays, nMonths;\n" +" nMonths = nM2 - nM1;\n" +" nDays = nD2 - nD1;\n" +" nMonths += ( nY2 - nY1 ) * 12;\n" +" nRet = nMonths * 30 + nDays;\n" +" if( nMode == 0 && nM1 == 2 && nM2 != 2 && nY1 == nY2 )\n" +" nRet -= bLeap? 1 : 2;\n" +" if( pOptDaysIn1stYear )\n" +" *pOptDaysIn1stYear = 360;\n" +" }\n" +" break;\n" +" case 1: \n" +" if( pOptDaysIn1stYear )\n" +" {\n" +" int nD, nM, nY;\n" +" DaysToDate( nStartDate + nNullDate, &nD, &nM, &nY );\n" +" *pOptDaysIn1stYear = IsLeapYear( nY )? 366 : 365;\n" +" }\n" +" nRet = nEndDate - nStartDate;\n" +" break;\n" +" case 2: \n" +" nRet = nEndDate - nStartDate;\n" +" if( pOptDaysIn1stYear )\n" +" *pOptDaysIn1stYear = 360;\n" +" break;\n" +" case 3: \n" +" nRet = nEndDate - nStartDate;\n" +" if( pOptDaysIn1stYear )\n" +" *pOptDaysIn1stYear = 365;\n" +" break;\n" +" }\n" +" return bNeg? -nRet : nRet;\n" "}\n"; std::string GetYearDiffDecl= -"double GetYearDiff( int nNullDate, int nStartDate, int nEndDate, int nMode);\n"; +"double GetYearDiff( int nNullDate, int nStartDate, int nEndDate," +"int nMode);\n"; std::string GetYearDiff= -"double GetYearDiff( int nNullDate, int nStartDate, int nEndDate, int nMode )\n" -"{\n" -"\t int nDays1stYear;\n" -"\t int nTotalDays = GetDiffDate( nNullDate, nStartDate," -"nEndDate, nMode, &nDays1stYear );\n" -"\t double result=(double)(nTotalDays)/(nDays1stYear);\n" -"\treturn result;\n" +"double GetYearDiff( int nNullDate, int nStartDate, int nEndDate," +"int nMode )\n" +"{\n" +" int nDays1stYear;\n" +" int nTotalDays = GetDiffDate( nNullDate, nStartDate, nEndDate," +"nMode, &" +"nDays1stYear );\n" +" double result=(double)(nTotalDays)/(nDays1stYear);\n" +" return result;\n" "}\n"; std::string GetDiffDate360_Decl= @@ -887,9 +923,9 @@ std::string GetDiffDate360_= "{\n" " if( nDay1 == 31 )\n" " nDay1--;\n" -" else if( bUSAMethod && ( nMonth1 == 2 && ( nDay1 == 29 ||" -"( nDay1 == 28 && !bLeapYear1 ) ) ) )\n" -" nDay1 = 30;\n" +" else if( bUSAMethod && ( nMonth1 == 2 && ( nDay1 == 29 || ( nDay1 == 28 " +"&& !bLeapYear1 ) ) ) )\n" +" nDay1 = 30;\n" " if( nDay2 == 31 )\n" " {\n" " if( bUSAMethod && nDay1 != 30 )\n" @@ -906,23 +942,26 @@ std::string GetDiffDate360_= " else\n" " nDay2 = 30;\n" " }\n" -" return nDay2 + nMonth2 * 30 + nYear2 * 360 - nDay1 - nMonth1 * 30 - nYear1 * 360;\n" +" return nDay2 + nMonth2 * 30 + nYear2 * 360 - nDay1 - nMonth1 * 30 - " +"nYear1 * 360;\n" "}\n"; std::string GetDiffDate360Decl= -"int GetDiffDate360( int nNullDate, int nDate1, int nDate2, bool bUSAMethod);\n"; +"int GetDiffDate360( int nNullDate, int nDate1, int nDate2," +"bool bUSAMethod);\n"; std::string GetDiffDate360= -"int GetDiffDate360( int nNullDate, int nDate1, int nDate2, bool bUSAMethod )\n" +"int GetDiffDate360( int nNullDate, int nDate1, int nDate2," +"bool bUSAMethod )\n" "{\n" " nDate1 += nNullDate;\n" " nDate2 += nNullDate;\n" " int nDay1, nMonth1, nYear1, nDay2, nMonth2, nYear2;\n" " DaysToDate( nDate1, &nDay1, &nMonth1, &nYear1 );\n" " DaysToDate( nDate2, &nDay2, &nMonth2, &nYear2 );\n" -" return GetDiffDate360_( nDay1, nMonth1, nYear1, " -"IsLeapYear( nYear1 ), nDay2, nMonth2, nYear2, bUSAMethod );\n" +" return GetDiffDate360_( nDay1, nMonth1, nYear1, IsLeapYear( nYear1 ), " +"nDay2, nMonth2, nYear2, bUSAMethod );\n" "}\n"; #endif _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits