This is Yutaka nakamura in Japan.

diff file sqlite-3.2.1's func.c.

add  stdev() and rr() .

. stdev() mean stddev lile MS Excel.

. rr()  mean RiskReturn( mean 1/CV =μ/σ)

pahaps  RiskReturn calculate speed fastest SQL in the world.

becouse loop time about harf and  rr() direct calcrate SQL is noting.

Bye!


854,878d853
< static void stdevStep(sqlite3_context *context, int argc, sqlite3_value
**argv){
<   StdDevCtx *p;
<   if( argc<1 ) return;
<   p = sqlite3_aggregate_context(context, sizeof(*p));
<   if( p && SQLITE_NULL!=sqlite3_value_type(argv[0]) ){
<     p->sum += sqlite3_value_double(argv[0]);
<     p->sum2 += pow(sqlite3_value_double(argv[0]),2);
<     p->cnt++;
<   }
< }
< static void stdevFinalize(sqlite3_context *context){
<   StdDevCtx *p;
<   p = sqlite3_aggregate_context(context, sizeof(*p));
<   if( p && p->cnt>0 ){
<     sqlite3_result_double(context,sqrt(((double)p->cnt*p->sum2 -
pow(p->sum,2))/((double)p->cnt*((double)p->cnt -1.0))));
<   }
< }
< static void rrFinalize(sqlite3_context *context){
<   StdDevCtx *p;
<   p = sqlite3_aggregate_context(context, sizeof(*p));
<   if( p && p->cnt>0 ){
<
sqlite3_result_double(context,(p->sum/(double)p->cnt)/sqrt(((double)p->cnt*p
->sum2 - pow(p->sum,2))/((double)p->cnt*((double)p->cnt -1.0))));
<   }
< }
<
1022,1023d996
<     { "stdev",  1, 0, 0, stdevStep,    stdevFinalize  },
<     { "rr", 1, 0, 0, stdevStep, rrFinalize    },

Reply via email to