From 5c659ef298d2951c5ddd1d2b7bc4db3f86d8c437 Mon Sep 17 00:00:00 2001 From: drowe67 Date: Fri, 7 Jul 2023 13:25:39 +0930 Subject: rm script directory --- script/gen_phi0 | 136 -------------------------------------------------------- 1 file changed, 136 deletions(-) delete mode 100755 script/gen_phi0 (limited to 'script/gen_phi0') diff --git a/script/gen_phi0 b/script/gen_phi0 deleted file mode 100755 index af01a31..0000000 --- a/script/gen_phi0 +++ /dev/null @@ -1,136 +0,0 @@ -#!/usr/bin/python3 - -import math - -# Save the points in separate lists -points_t1 = [] # A list of tuples (x, r) -points_t2 = [] # A list of tuples (x, r) -points_t3 = [] # A list of tuples (x, r) - -###################################################### -# Generate -###################################################### - -adj = 0.50 # Offset ratio for step of 1, estimate - -def loop_even(upper, lower, step, ary): - result = [] - for i in range((int)(upper * step), (int)(lower * step), -1): - x = i / step - z = math.exp(x + (adj / step)) - r = math.log((z+1)/(z-1)) - ary.append( (x, r) ) - -##### -# Create initial list which will be sorted desending - -# Tbl-1 9:5 in linear steps of 0.5 -loop_even(9.999, 4.999, 2, points_t1) - -# Tbl-2 5:1 in linear steps of 1/16 -loop_even(4.999, 0.999, 16, points_t2) - -# Tbl-3 log steps: 1/(2^0.5), 1/(2^1), 1/(2^1.5), ... -for i in range(1, 28): - e = (2 ** (i/2)) - x = 1.0 / e - z = math.exp(x+ (.19 / e)) - r = math.log((z+1)/(z-1)) - points_t3.append( (x, r) ) - - -###################################################### -# Output -###################################################### - -print(""" -// phi0.c -// -// An approximation of the function -// -// This file is generated by the gen_phi0 scripts -// Any changes should be made to that file, not this one - -#include - -#define SI16(f) ((int32_t)(f * (1<<16))) - -float phi0( float xf ) { - - int32_t x = SI16(xf); - - if (x >= SI16(10.0f)) return(0.0f); -""", end="") - - -################################## -# Tbl-1 9:5 in linear steps of 0.5 (9.5, 9.0, 8.5, 8.0, .., 5.0) -print(""" else { - if (x >= SI16(5.0f)) { - int i = 19 - (x >> 15); - switch (i) { -""", end="") -for i in range(len(points_t1)): - #assert(points_t1[i][0] == ((18 - i) / 2)) - print("{}case {}: return({:.9f}f); // ({:.1f})".format( - (10*" "), i, points_t1[i][1], points_t1[i][0])) -print("{}}}".format(( 8*" "))) -print("{}}}".format(( 6*" "))) - - -################################## -# Tbl-2 5:1 in linear steps of 1/16 (4-15/16, 4-7/7, ... 1) -print(""" else { - if (x >= SI16(1.0f)) { - int i = 79 - (x >> 12); - switch (i) { -""", end="") -for i in range(len(points_t2)): - #assert(points_t2[i][0] == ((18 - i) / 2)) - print("{}case {}: return({:.9f}f); // ({:.4f})".format( - (12*" "), i, points_t2[i][1], points_t2[i][0])) -print("{}}}".format((10*" "))) -print("{}}}".format(( 8*" "))) - - -################################## -# Tbl-3 log steps: 1/(2^0.5), 1/(2^1), 1/(2^1.5), ... -# Output as a balanced search - -def prnt_cmp(x, ind): - print("{}if (x > SI16({:.6f}f)) {{".format((" "*ind), x)) - -def prnt_rtn(r, ind): - print("{}return({:.9f}f);".format((" "*ind), r)) - -def one_level(pts, ind, dft): - #print("# One_Level({})".format(pts)) - mid = (int)(len(pts)/2) - lft = pts[:mid] - rgt = pts[mid+1:] - x = pts[mid][0] - r = pts[mid][1] - #print("## {}, {}, {}".format(lft, x, rgt)) - prnt_cmp(x, ind) - if (len(lft)): - one_level(lft, ind+2, r) - else: - prnt_rtn(r, (ind+2)) - print("{}}} else {{".format((" "*(ind)))) - if (len(rgt)): - one_level(rgt, ind+2, dft) - else: - prnt_rtn(dft, (ind+2)) - print("{}}}".format((" "*(ind)))) - - -# Start recursive process -print("{}else {{".format((8*" "))) -indent = 10 -one_level(points_t3, indent, 10) -print("{}}}".format((8*" "))) # End of tb1_1 -print("{}}}".format((6*" "))) # End of tb1_2 -print("{}}}".format((4*" "))) # End of tb1_3 -print("{}return(10.0f);".format((4*" "))) -print("}") - -- cgit v1.2.3