Last active
May 14, 2022 11:33
-
-
Save vyuh/8e2c74f49a97a9ade738d58c5151a1c0 to your computer and use it in GitHub Desktop.
Tried to brute force a tricky real sequence. termux on redmi 4 hangs on (yoo 5). lol
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(define (yoo n) | |
(cond | |
( (= n 0) (intxdx 0 1)) | |
( ( = n 1) (intxdx (intxdx 0 (/ 1 2)) (intxdx (/ 1 2) 1))) | |
( else | |
(let | |
((N (expt 2 n))) | |
(intxdx | |
(calcdown N (/ N 2)) | |
(calcup N (/ N 2))))))) | |
(define (intxdx low up) | |
;; (display "yo\n") | |
(exact->inexact (/ (* (+ low up) (- up low)) 2))) | |
(define (calcup pow2n i) | |
(if (= (+ 1 i) pow2n) | |
(intxdx (/ i pow2n) 1) | |
(intxdx | |
(/ i pow2n) | |
(intxdx | |
(/ (+ i 1) pow2n) | |
(calcup pow2n (+ i 1)))))) | |
(define (calcdown pow2n i) | |
(if (= i 1) | |
(intxdx 0 (/ 1 pow2n)) | |
(intxdx | |
(intxdx | |
(calcdown pow2n (- i 1)) | |
(/ (- i 1) pow2n)) | |
(/ i pow2n)))) | |
(define (ell n) (/ (log (/ 0.25 (abs (yoo n)))) (log 2))) | |
(define (lim n) (- (ell n) (+ 4 n))) | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
#include <math.h> | |
#include <stdlib.h> | |
double intxdx(double low, double up) { | |
return (low+up)*(up-low)/2; | |
} | |
double calcup(unsigned n) { | |
double POW2N = pow(2.0, n); | |
double i = POW2N; | |
double up = 1.0; | |
double down; | |
while (i > 1 + POW2N/2) { | |
down = (i-1.0)/POW2N; | |
up = intxdx(down, up); | |
up = intxdx(down, up); | |
i = i - 1; | |
} | |
down = 0.5; | |
up = intxdx(down, up); | |
return up; | |
} | |
double calcdown(unsigned n) { | |
double POW2N = pow(2.0, n); | |
double i = 0; | |
double down = 0.0; | |
double up; | |
while (i + 1 < POW2N/2) { | |
up = (i+1.0)/POW2N; | |
down = intxdx(down, up); | |
down = intxdx(down, up); | |
i = i + 1; | |
} | |
up = 0.5; | |
down = intxdx(down, up); | |
return down; | |
} | |
double yoo(unsigned n) { | |
switch(n) { | |
case 0: return intxdx(0, 1); | |
case 1: return intxdx(intxdx(0, 0.5), intxdx(0.5, 1)); | |
default: return intxdx(calcdown(n), calcup(n)); | |
} | |
} | |
double ell(unsigned n) { | |
return log(0.25/fabs(yoo(n)))/log(2); | |
} | |
int main(int argc, char **argv) { | |
int n = 0, i = 0; | |
if (argc > 1) { | |
n = atoi(argv[1]); | |
} | |
if (n == 0) { | |
n = 21; | |
} | |
for (i = 0; i <= n; i++ ) { | |
printf( "%4d\t%4.16f\n", i, ell(i) ); | |
} | |
return 0; | |
} | |
/* | |
compile using: `cc a_tricky_real_sequence.c -o trickyseq -lm` | |
run using: `./trickyseq 30` | |
*/ | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import math | |
def yoo(n): | |
if n == 0: | |
return intxdx(0,1) | |
elif n == 1: | |
return intxdx(intxdx(0, 0.5), intxdx(0.5, 1)) | |
else: | |
return intxdx(calcdown(n), calcup(n)) | |
def intxdx(low, up): | |
return (low+up)*(up-low)/2.0 | |
def calcup(n): | |
POW2N = 2.0**n | |
i = POW2N | |
up = 1.0 | |
while i > 1 + POW2N/2: | |
down = (i-1.0)/POW2N | |
up = intxdx(down, up) | |
up = intxdx(down, up) | |
i = i - 1 | |
down = 0.5 | |
up = intxdx(down, up) | |
return up | |
def calcdown(n): | |
POW2N = 2.0**n | |
i = 0 | |
down = 0.0 | |
while i < POW2N/2 -1: | |
up = (i+1.0)/POW2N | |
down = intxdx(down, up) | |
down = intxdx(down, up) | |
i = i + 1 | |
up = 0.5 | |
down = intxdx(down, up) | |
return down | |
def ell(n): | |
return math.log2(1.0/(4*abs(yoo(n)))) | |
if __name__ == '__main__': | |
for i in range(21): | |
print(i, ell(i)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment