//## Complex Complex.catanhf(); static KMETHOD Complex_catanhf(KonohaContext *kctx, KonohaStack *sfp) { kComplex *kc = (kComplex *) sfp[0].asObject; float _Complex zf = (float _Complex)kc->z; float ret = catanh(zf); KReturnFloatValue(ret); }
//## Complex Complex.catanhl(); static KMETHOD Complex_catanhl(KonohaContext *kctx, KonohaStack *sfp) { kComplex *kc = (kComplex *) sfp[0].asObject; long double _Complex zl = (long double _Complex)kc->z; long double ret = catanh(zl); KReturnFloatValue(ret); }
//## Complex Complex.cexp(); static KMETHOD Complex_cexp(KonohaContext *kctx, KonohaStack *sfp) { kComplex *kc = (kComplex *) sfp[0].asObject; double _Complex z = kc->z; double ret = cexp(z); KReturnFloatValue(ret); }
//## JSONFloat JSON.getFloat(String key); static KMETHOD kJSON_getFloat(KonohaContext *kctx, KonohaStack *sfp) { JSON obj = ((kJSON *)sfp[0].asObject)->json; const char *key = S_text(sfp[1].asString); double json = JSON_getDouble(obj, key); KReturnFloatValue(json); }
/* float / float */ static KMETHOD Int_opDIV(KonohaContext *kctx, KonohaStack *sfp) { kfloat_t n = sfp[1].floatValue; if(unlikely(n == 0.0)) { THROW_ZeroDividedException(kctx, sfp); } KReturnFloatValue(sfp[0].intValue / n); }
static KMETHOD PyObject_toFloat(KonohaContext *kctx, KonohaStack *sfp) { kPyObject *po = (kPyObject *)sfp[0].asObject; double v = PyFloat_AsDouble(po->self); if(PyErr_Occurred()) { v = 0; } KReturnFloatValue(v); }
static KMETHOD Math_random(KonohaContext *kctx, KonohaStack *sfp) { kfloat_t ret; #if defined(K_USING_INT32) ret = genrand_real1(); #else ret =genrand64_real1(); #endif KReturnFloatValue(ret); }
//## Complex Complex.cpowf(); static KMETHOD Complex_cpowf(KonohaContext *kctx, KonohaStack *sfp) { kComplex *kx = (kComplex *) sfp[0].asObject; float _Complex x = (float _Complex)kx->z; float real = (float)sfp[1].floatValue; float imaginary = (float)sfp[2].floatValue; float _Complex y = real + I * imaginary; float ret = cpowf(x, y); KReturnFloatValue(ret); }
//## Complex Complex.cpowl(); static KMETHOD Complex_cpowl(KonohaContext *kctx, KonohaStack *sfp) { kComplex *kx = (kComplex *) sfp[0].asObject; long double _Complex x = (long double _Complex)kx->z; long double real = (long double)sfp[1].floatValue; long double imaginary = (long double)sfp[2].floatValue; long double _Complex y = real + I * imaginary; long double ret = cpowl(x, y); KReturnFloatValue(ret); }
//## Complex Complex.csinl(); static KMETHOD Complex_csinl(KonohaContext *kctx, KonohaStack *sfp) { kComplex *kc = (kComplex *) sfp[0].asObject; long double _Complex zl = (long double _Complex)kc->z; #if !defined(__CYGWIN__) long double ret = csinl(zl); #else long double ret = csin(zl); #endif KReturnFloatValue(ret); }
//## float ResultSet.getFloat(String name); static KMETHOD ResultSet_getFloat(KonohaContext *kctx, KonohaStack *sfp) { kResultSet *rs = (kResultSet *)sfp[0].asObject; int idx = ResultSet_FindColumn(kctx, rs, sfp[1].asString); kfloat_t res = 0.0; if(idx >= 0) { ktypeattr_t type = rs->column[idx].type; if(type == KType_Int) { res = (kfloat_t) rs->column[idx].val.intValue; } else if(KDefinedKonohaCommonModule() && type == KType_float) { res = rs->column[idx].val.floatValue; } } KReturnFloatValue(res); }
////## dynamic Curl.getInfo(int type); static KMETHOD Curl_getInfo(KonohaContext *kctx, KonohaStack *sfp) { CURL* curl = toCURL(sfp[0].asObject); char *strptr = NULL; long lngptr = 0; double dblptr = 0; if(curl != NULL) { kint_t curlinfo = sfp[1].intValue; switch(curlinfo) { case CURLINFO_HEADER_SIZE: case CURLINFO_REQUEST_SIZE: curl_easy_getinfo(curl, curlinfo, &lngptr); KReturnUnboxValue(lngptr); break; case CURLINFO_REDIRECT_TIME: case CURLINFO_TOTAL_TIME: case CURLINFO_NAMELOOKUP_TIME: case CURLINFO_CONNECT_TIME: case CURLINFO_PRETRANSFER_TIME: case CURLINFO_STARTTRANSFER_TIME: case CURLINFO_SIZE_UPLOAD: case CURLINFO_SIZE_DOWNLOAD: case CURLINFO_SPEED_DOWNLOAD: case CURLINFO_SPEED_UPLOAD: curl_easy_getinfo(curl, curlinfo, &dblptr); KReturnFloatValue(dblptr); break; case CURLINFO_EFFECTIVE_URL: case CURLINFO_CONTENT_TYPE: curl_easy_getinfo(curl, curlinfo, &strptr); KReturn(KLIB new_kString(kctx, OnStack, strptr, strlen(strptr), 0)); break; default: { // TODO ktrace // KNH_NTRACE2(ctx, "curl_easy_getinfo", K_FAILED, KNH_LDATA(LOG_i("curlinfo", curlinfo))); break; } } } KReturn(K_NULL); }
/* float - float */ static KMETHOD Float_opSUB(KonohaContext *kctx, KonohaStack *sfp) { KReturnFloatValue(sfp[0].floatValue - sfp[1].floatValue); }
static KMETHOD Int_opADD(KonohaContext *kctx, KonohaStack *sfp) { KReturnFloatValue(sfp[0].intValue + sfp[1].floatValue); }
static KMETHOD Float_opPlus(KonohaContext *kctx, KonohaStack *sfp) { KReturnFloatValue((sfp[0].floatValue)); }
/* String to float */ static KMETHOD String_toFloat(KonohaContext *kctx, KonohaStack *sfp) { KReturnFloatValue((kfloat_t)strtod(kString_text(sfp[0].asString), NULL)); }
/* float >= float */ static KMETHOD Int_toFloat(KonohaContext *kctx, KonohaStack *sfp) { KReturnFloatValue((kfloat_t)sfp[0].intValue); }