Esempio n. 1
0
char *script(char *s, int i)
{
   int c;

   sub[nsub++] = *s;
   sub[nsub++] = i;
   if ((c = *++s) == '\\') {
      if ((c = greek(s + 1)) >= 0) {
         s += strlen(grk[c]);
         c += 193;
      } else {
         switch (c = *++s) {
         case '\\':
         case '{':
         case '}':
         case '_':
         case '^':
            break;
         default:
            sscanf(s, "%3d", &c);
            s += 2;
            break;
         }
      }
   }
   sub[nsub++] = c;
   sub[nsub++] = '\0';
   return (s);
}
Esempio n. 2
0
void IBSymbol::Greeks( double optPrice, double undPrice, double pvDividend, 
                        double impliedVol, double delta, double gamma, double vega, double theta ) {

  m_dblOptionPrice = optPrice;
  m_dblUnderlyingPrice = undPrice;
  m_dblPvDividend = pvDividend;

  ptime dt;
  ou::TimeSource::Instance().External( &dt );

  Greek greek( dt, impliedVol, delta, gamma, theta, vega, 0 );

  m_OnGreek( greek );

}
Esempio n. 3
0
char *gettxt_fig(char *s)
{
   char *p;
   int i, c;
   char *script(char *s, int i);

   while (*s && *s != '"')
      ++s;
   if (*s++ == '\0')
      return (s - 1);
   for (p = s, nsub = i = 0; *s && (*s != '"' || *(s + 1) == '"'); ++s) {
      if (*s == '\\') {         /* escape sequence */
         if ((c = greek(s + 1)) >= 0) {
            s += strlen(grk[c]);
            c += 193;
         } else {
            switch (c = *++s) {
            case 'b':
               c = 0x08;
               break;
            case 'n':
               c = 0x0a;
               break;
            case 'r':
               c = 0x0d;
               break;
            case '^':
               c = '^';
               break;
            case '_':
               c = '_';
               break;
            case '\\':
               c = '\\';
               break;
            case 'd':
            case 'u':
               s = script(s, i);
               c = ' ';
               break;
            default:
               sscanf(s, "%3d", &c);
               s += 2;
               break;
            }
         }
         p[i++] = c;
      } else if ((c = *s) == '^' || c == '_') {
         if (*(s + 1) == '{') {
            for (*++s = c; *(s + 1) != '}'; p[i++] = ' ') {
               s = script(s, i);
               *s = c;
            }
            ++s;
         } else {
            s = script(s, i);
            p[i++] = ' ';
         }
      } else {
         if (*s == '"')
            ++s;
         p[i++] = *s;
      }
   }
   sub[nsub] = p[i] = '\0';
   while (p + i < s)
      p[++i] = ' ';
   return (p);
}