Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. #include "math.c"
  2. #include "../../tinypy/tp.h"
  3.  
  4. /*
  5.  * init math module, namely, set its dictionary
  6.  */
  7. void math_init(TP)
  8. {
  9.     /*
  10.      * new a module dict for math
  11.      */
  12.     tp_obj math_mod = tp_dict(tp);
  13.  
  14.     /*
  15.      * initialize pi and e
  16.      */
  17.     math_pi = tp_number(M_PI);
  18.     math_e  = tp_number(M_E);
  19.  
  20.     /*
  21.      * bind math functions to math module
  22.      */
  23.     tp_set(tp, math_mod, tp_string("pi"), math_pi);
  24.     tp_set(tp, math_mod, tp_string("e"), math_e);
  25.     tp_set(tp, math_mod, tp_string("acos"), tp_fnc(tp, math_acos));
  26.     tp_set(tp, math_mod, tp_string("asin"), tp_fnc(tp, math_asin));
  27.     tp_set(tp, math_mod, tp_string("atan"), tp_fnc(tp, math_atan));
  28.     tp_set(tp, math_mod, tp_string("atan2"), tp_fnc(tp, math_atan2));
  29.     tp_set(tp, math_mod, tp_string("ceil"), tp_fnc(tp, math_ceil));
  30.     tp_set(tp, math_mod, tp_string("cos"), tp_fnc(tp, math_cos));
  31.     tp_set(tp, math_mod, tp_string("cosh"), tp_fnc(tp, math_cosh));
  32.     tp_set(tp, math_mod, tp_string("degrees"), tp_fnc(tp, math_degrees));
  33.     tp_set(tp, math_mod, tp_string("exp"), tp_fnc(tp, math_exp));
  34.     tp_set(tp, math_mod, tp_string("fabs"), tp_fnc(tp, math_fabs));
  35.     tp_set(tp, math_mod, tp_string("floor"), tp_fnc(tp, math_floor));
  36.     tp_set(tp, math_mod, tp_string("fmod"), tp_fnc(tp, math_fmod));
  37.     tp_set(tp, math_mod, tp_string("frexp"), tp_fnc(tp, math_frexp));
  38.     tp_set(tp, math_mod, tp_string("hypot"), tp_fnc(tp, math_hypot));
  39.     tp_set(tp, math_mod, tp_string("ldexp"), tp_fnc(tp, math_ldexp));
  40.     tp_set(tp, math_mod, tp_string("log"), tp_fnc(tp, math_log));
  41.     tp_set(tp, math_mod, tp_string("log10"), tp_fnc(tp, math_log10));
  42.     tp_set(tp, math_mod, tp_string("modf"), tp_fnc(tp, math_modf));
  43.     tp_set(tp, math_mod, tp_string("pow"), tp_fnc(tp, math_pow));
  44.     tp_set(tp, math_mod, tp_string("radians"), tp_fnc(tp, math_radians));
  45.     tp_set(tp, math_mod, tp_string("sin"), tp_fnc(tp, math_sin));
  46.     tp_set(tp, math_mod, tp_string("sinh"), tp_fnc(tp, math_sinh));
  47.     tp_set(tp, math_mod, tp_string("sqrt"), tp_fnc(tp, math_sqrt));
  48.     tp_set(tp, math_mod, tp_string("tan"), tp_fnc(tp, math_tan));
  49.     tp_set(tp, math_mod, tp_string("tanh"), tp_fnc(tp, math_tanh));
  50.  
  51.     /*
  52.      * bind special attributes to math module
  53.      */
  54.     tp_set(tp, math_mod, tp_string("__doc__"),
  55.             tp_string(
  56.                 "This module is always available.  It provides access to the\n"
  57.                 "mathematical functions defined by the C standard."));
  58.     tp_set(tp, math_mod, tp_string("__name__"), tp_string("math"));
  59.     tp_set(tp, math_mod, tp_string("__file__"), tp_string(__FILE__));
  60.  
  61.     /*
  62.      * bind to tiny modules[]
  63.      */
  64.     tp_set(tp, tp->modules, tp_string("math"), math_mod);
  65. }
  66.  
  67.