time-to-botec

Benchmark sampling in different programming languages
Log | Files | Refs | README

squiggle.bc (824B)


      1 scale = 16
      2 pi = 4 * atan(1)
      3 normal90confidence=1.64485362695
      4 define sample_unit_uniform(){
      5   return rand()/maxrand()
      6 }
      7 define sample_unit_normal(){
      8   u1=sample_unit_uniform()
      9   u2=sample_unit_uniform()
     10   z = sqrt(-2 * l(u1)) * sin(2 * pi * u2)
     11   return z
     12 }
     13 define sample_uniform(min, max){
     14   return (min + sample_unit_uniform()*(max-min))
     15 }
     16 define sample_normal(mean, sigma){
     17   return (mean + sigma * sample_unit_normal())
     18 }
     19 define sample_lognormal(logmean, logstd){
     20   return e(sample_normal(logmean, logstd))
     21 }
     22 define sample_normal_from_90_confidence_interval(low, high){
     23   mean = (high + low) / 2
     24   std = (high - low) / (2 * normal90confidence)
     25   return sample_normal(mean, std)
     26 }
     27 define sample_to(low, high){
     28   loglow = l(low)
     29   loghigh = l(high)
     30   return e(sample_normal_from_90_confidence_interval(loglow, loghigh))
     31 }
     32