}
#include "vg/vg_mem_pool.c"
+#include "vg_kv.c"
int main( int argc, const char *argv[] )
{
vg_log_init();
_vg_opt_init( argc, argv );
+
const char *arg;
if( (arg = vg_long_opt_arg( "glsl-dir", "Specify output directory for preprocessed GLSL" )) )
return 0;
#endif
+
+
+
+
+
+
+
+
+
+
+ f64 std_worst_error = 0.0,
+ vg_worst_error = 0.0;
+
+ u32 dps = 6;
+
+ vg_rand rando;
+ vg_rand_seed( &rando, 92323 );
+ for( u32 i=0; i<100000; i ++ )
+ {
+ f64 number = (vg_randf64( &rando )*2.0-1.0)*1231773.443334311;
+
+ char std_buf[ 256 ];
+ snprintf( std_buf, 64, "%.*f", dps, number );
+ f64 std_readback_number = atof( std_buf );
+ f64 std_err = std_readback_number - number;
+ if( fabs(std_err) > fabs(std_worst_error) )
+ std_worst_error = std_err;
+
+ /* VG's turn */
+ char vg_buf[ 256 ];
+ vg_str str;
+ vg_strnull( &str, vg_buf, sizeof(vg_buf) );
+ vg_strcatf64( &str, number, 10, dps );
+
+ f64 vg_readback_number;
+ vg_strp strp = { .buffer = vg_buf };
+ vg_strp_f64( &strp, &vg_readback_number );
+
+ f64 vg_err = vg_readback_number - number;
+ if( fabs(vg_err) > fabs(vg_worst_error) )
+ vg_worst_error = vg_err;
+
+
+ vg_strnull( &str, vg_buf, sizeof(vg_buf) );
+ vg_strcatf64( &str, number, 30, dps );
+ puts( vg_buf );
+ }
+
+ printf( "worst error (vgstrp): %.20f\n", vg_worst_error );
+ printf( "worst error (std): %.20f\n", std_worst_error );
+
+ return 0;