summaryrefslogtreecommitdiff
path: root/charf.c
diff options
context:
space:
mode:
authorJulian Weigt <juw@posteo.de>2026-01-18 13:28:25 +0100
committerJulian Weigt <juw@posteo.de>2026-02-04 15:56:45 +0100
commitb7835be8db1d6d2ef60bbe9e972cb708c0fee8c0 (patch)
tree8d81ca6a69e2fd10762f9fb60b660cd958ff0efc /charf.c
parent6ceb2c20056d6cece59791686deeeac312fa6009 (diff)
Allow p=∞ in program and adjust and generalize printing accordingly.
Diffstat (limited to 'charf.c')
-rw-r--r--charf.c32
1 files changed, 21 insertions, 11 deletions
diff --git a/charf.c b/charf.c
index c33a88d..520e8cb 100644
--- a/charf.c
+++ b/charf.c
@@ -68,8 +68,8 @@ void differentiate(VALUETYPE* f, VALUETYPE* df, int D, int k){
VALUETYPE integratep(VALUETYPE* f, EXPTYPE p, int D){
VALUETYPE integralp = int_to_valuetype(0);
for(int i=0; i<D; i++){
- VALUETYPE padd = power(absolute(f[i]),p);
- integralp = sum(integralp,padd);
+ if(exptype_is_infinite(p)) integralp = maximum(integralp,absolute(f[i]));
+ else integralp = sum(integralp,power(absolute(f[i]),p));
}
return integralp;
}
@@ -172,20 +172,26 @@ void format_result(char* s, int index, int k, EXPTYPE p, VALUETYPE r, int format
if(format == FORMAT_TEXT){
strcpy(s,"f: ");
int l = 3;
- for(int i=0; i<d; i++) l += sprintf(s+l,"%2.0f ",valuetype_to_double(f[i]));
- for(int i=d; i<N; i++) l += sprintf(s+l," ");
+ for(int i=0; i<d; i++){
+ char v[8];
+ valuetype_to_string(v,f[i]);
+ l += sprintf(s+l,"%s ",v);
+ }
+ for(int i=d; i<N; i++) l += sprintf(s+l," ");
+ char e[16];
char rts[128];
+ exptype_to_string(e,p);
root_to_string(rts,r,p);
- l += sprintf(s+l,"|f^(%d)|_1/%2.1f: %s",k,exptype_to_double(p),rts);
+ l += sprintf(s+l,"|f^(%d)|_%s: %s",k,e,rts);
}
else if(format == FORMAT_LATEX){
int l = 0;
char v[128];
root_to_latex(v,r,p);
- l += sprintf(s+l,"$%d$ & %s",k,v);
+ l += sprintf(s+l,"$%d$ & $%s$",k,v);
for(int i=0; i<d; i++){
valuetype_to_latex(v,f[i]);
- l += sprintf(s+l,"& %s ",v);
+ l += sprintf(s+l,"& $%s$ ",v);
}
for(int i=d; i<N; i++) l += sprintf(s+l,"& ");
}
@@ -270,13 +276,15 @@ void format_results(char* text, EXPTYPE exponents[P], VALUETYPE ratios[K+1][P],
char beginningp[P][1024];
char endp[P][1024];
char newline[4];
+ char e[8];
if(format == FORMAT_TEXT){
strcpy(beginning,"Current records:");
strcpy(end,"");
for(int p=0; p<P; p++){
- sprintf(beginningp[p],"exponent %2.1f:",exptype_to_double(exponents[p]));
+ exptype_to_string(e,exponents[p]);
+ sprintf(beginningp[p],"exponent %s:",e);
strcpy(endp[p],"");
}
@@ -295,8 +303,9 @@ void format_results(char* text, EXPTYPE exponents[P], VALUETYPE ratios[K+1][P],
for(int n=1; n<N; n++) strcat(f,"& ");
strcat(f,"\\\\\n\\hline");
for(int p=0; p<P; p++){
- sprintf(beginningp[p],"$p=%1.0f$:\n\n\\begin{tabular}%s\n%s",exptype_to_double(exponents[p]),h,f);
- strcpy(endp[p],"\\end{tabular}\n");
+ exptype_to_latex(e,exponents[p]);
+ sprintf(beginningp[p],"\\begin{table}\n\\begin{tabular}%s\n%s",h,f);
+ sprintf(endp[p],"\\end{tabular}\n\\caption{$p=%s$:}\n\\end{table}",e);
}
strcpy(newline,"\\\\");
}
@@ -360,7 +369,8 @@ int main() {
int num_exponents[K+1];
EXPTYPE exponents[P];
exponents[0] = int_to_exptype(1);
- exponents[1] = int_to_exptype(2);
+ //exponents[1] = int_to_exptype(2);
+ exponents[1] = infinity_to_exptype();
pthread_t threads[NUM_THREADS];
Args args[NUM_THREADS];