00001 #include <iostream>
00002 #include "simpleoption.h"
00003
00004 const char *european_option_pair::_error_msg;
00005 int european_option_pair::_erno;
00006
00007 #ifdef CHECK
00008 #undef CHECK
00009 #endif
00010 #ifdef linux
00011 #define CHECK(y,z,a) if (y) { _error_msg = __STRING(y)" at line "\
00012 __STRING(z)" in " a "::check_attributes"; \
00013 return (_erno = z);}
00014 #else
00015 #define CHECK(y,z,a) if (y) {_error_msg = #y" at line "\
00016 #z" in " #a"::check_attributes"; \
00017 return (_erno = z);}
00018 #endif
00019
00020 int european_option_pair::check_attributes(
00021 double S,
00022 double K,
00023 double Tau,
00024 double Alpha,
00025 double R,
00026 double Sigma)
00027 {
00028 #define Funcname "european_option_pair::check_attributes"
00029
00030 _error_msg = "";
00031 _erno = 0;
00032
00033 CHECK(S < 0, __LINE__, Funcname);
00034 CHECK(K < 0, __LINE__, Funcname);
00035 CHECK(Tau < 0, __LINE__, Funcname);
00036 CHECK(Alpha < 0, __LINE__, Funcname);
00037 CHECK(R < 0, __LINE__, Funcname);
00038 CHECK(Sigma < 0, __LINE__, Funcname);
00039
00040 return 0;
00041 }
00042
00043 void european_option_pair::init_call_values( const european_option_pair& rhs)
00044 {
00045 _C = rhs._C;
00046 _dC_dS = rhs._dC_dS;
00047 _d2C_dS_dtau = rhs._d2C_dS_dtau;
00048 _d2C_dS2 = rhs._d2C_dS2;
00049 _d3C_dS2_dtau = rhs._d3C_dS2_dtau;
00050 _dC_dsigma = rhs._dC_dsigma;
00051 _d2C_dsigma2 = rhs._d2C_dsigma2;
00052 _dC_dtau = rhs._dC_dtau;
00053 _d2C_dtau2 = rhs._d2C_dtau2;
00054 }
00055
00056 void european_option_pair::init_put_values( const european_option_pair& rhs)
00057 {
00058 _P = rhs._P;
00059 _dP_dS = rhs._dP_dS;
00060 _d2P_dS_dtau = rhs._d2P_dS_dtau;
00061 _d2P_dS2 = rhs._d2P_dS2;
00062 _d3P_dS2_dtau = rhs._d3P_dS2_dtau;
00063 _dP_dsigma = rhs._dP_dsigma;
00064 _d2P_dsigma2 = rhs._d2P_dsigma2;
00065 _dP_dtau = rhs._dP_dtau;
00066 _d2P_dtau2 = rhs._d2P_dtau2;
00067 }