Closed crowlogic closed 5 months ago
import arb.Integer;
import arb.Real;
import arb.RealPolynomial;
import arb.functions.Function;
public class factorℝ2 implements Function<Integer, Real> {
private boolean isInitialized;
public Integer n;
public Integer p;
public Integer q;
public Real α;
public Real β;
public Integer N;
public Real evaluate(Integer in, int order, int bits, Real result) {
if (!isInitialized) {
initialize();
}
return α.get(in).ascendingFactorial((result).identity(), bits, result);
}
public void initialize() {
if (isInitialized) {
throw new AssertionError("Already initialized");
} else if (α == null) {
throw new AssertionError("α is null");
} else {
isInitialized = true;
}
}
}
factorR1 should not be not be a function from Integer to Real but a function from Integer to RealPolynomial.. or if its not its caller should know that it didnt cast and do it .. most likely spot to check is BinaryOperation.generate
[crow@c15 20240322-07:33:45AM]~/a$ decompile F.class
INFO: JVM info: Oracle Corporation - 21.0.2 - 21.0.2+13-LTS-58
INFO: Scanning classes from file F.class
INFO: Loading Class: F from file F.class
INFO: Preprocessing class F
INFO: ... done
INFO: Decompiling class F
INFO: ... done
import arb.Integer;
import arb.Real;
import arb.RealPolynomial;
import arb.functions.real.RealPolynomialNullaryFunction;
public class F implements RealPolynomialNullaryFunction {
private boolean isInitialized;
Integer c1;
public Integer p;
public Integer q;
public Real α;
public Real β;
public Integer N;
public Real valueℝ1;
public Integer n;
public Real sumℝ1;
public Integer endIndexℤ3;
public final factorℝ1 factorℝ1 = new factorℝ1();
public RealPolynomial evaluate(Void in, int order, int bits, RealPolynomial result) {
if (!isInitialized) {
initialize();
}
sumℝ1.additiveIdentity();
n.set(c1);
endIndexℤ3.set(N);
do {
sumℝ1.add(factorℝ1.evaluate(n, bits, valueℝ1), bits);
} while(n.increment().compareTo(endIndexℤ3) <= 0);
return (result).set(sumℝ1);
}
public F() {
c1 = new Integer("0");
valueℝ1 = new Real();
n = new Integer();
sumℝ1 = new Real();
endIndexℤ3 = new Integer();
}
public void initialize() {
if (isInitialized) {
throw new AssertionError("Already initialized");
} else if (N == null) {
throw new AssertionError("N is null");
} else {
factorℝ1.p = p;
factorℝ1.q = q;
factorℝ1.α = α;
factorℝ1.β = β;
factorℝ1.N = N;
isInitialized = true;
}
}
public void close() {
c1.close();
valueℝ1.close();
n.close();
sumℝ1.close();
endIndexℤ3.close();
}
}
factor2 should be Integer->RealPolynomial not Integer.Real
resolveReference(reference=N)
Declaring N as a contextual variable of type class arb.Integer
Generating Σn➔z^n*∏k➔α[k]₍ₙ₎{k=1…p}/(n!*∏k➔β[k]₍ₙ₎{k=1…q}){n=0…N}
Summation.assignFieldNames(resultType=class arb.Real,
factorFunctionFieldName=factorℝ1,
factorValueFieldName=valueℝ1)
Summation.generateFactorClass( expr=n➔z^n*∏k➔α[k]₍ₙ₎{k=1…p}/(n!*∏k➔β[k]₍ₙ₎{k=1…q}),resultType=class arb.Real)
resolveReference(reference=n)
Declaring n as the input node to Expression[expression=n➔z^n*∏k➔α[k]₍ₙ₎{k=1…p}/(n!*∏k➔β[k]₍ₙ₎{k=1…q}),
className=factorℝ1,
functionName=factorℝ1, recursive=false, functionClass=interface arb.functions.Function] + from
resolveReference(reference=z)
Checking if z is the indeterminant variable in a polynomial expression
resolveReference(reference=n)
Declaring n as the input node to Expression[expression=n➔z^n*∏k➔α[k]₍ₙ₎{k=1…p}/(n!*∏k➔β[k]₍ₙ₎{k=1…q}),
className=factorℝ1,
functionName=factorℝ1, recursive=false, functionClass=interface arb.functions.Function] + from
resolveReference(reference=p)
Declaring p as a contextual variable of type class arb.Integer
resolveReference(reference=n)
Declaring n as the input node to Expression[expression=n➔z^n*∏k➔α[k]₍ₙ₎{k=1…p}/(n!*∏k➔β[k]₍ₙ₎{k=1…q}),
className=factorℝ1,
functionName=factorℝ1, recursive=false, functionClass=interface arb.functions.Function] + from
resolveReference(reference=q)
Declaring q as a contextual variable of type class arb.Integer
Generating n➔z^n*∏k➔α[k]₍ₙ₎{k=1…p}/(n!*∏k➔β[k]₍ₙ₎{k=1…q})
resolveReference(reference=z)
Checking if z is the indeterminant variable in a polynomial expression
BinaryOperation.generate( this=(z^n)*Πα[k]₍ₙ₎{k=1…p}/n!*Πβ[k]₍ₙ₎{k=1…q},
left=(z^n)*Πα[k]₍ₙ₎{k=1…p},
left.type=class arb.RealPolynomial,
operation=div,
right=n!*Πβ[k]₍ₙ₎{k=1…q},
right.type=class arb.Real,
resultType=class arb.Real )
BinaryOperation.generate( this=(z^n)*Πα[k]₍ₙ₎{k=1…p},
left=z^n,
left.type=class arb.RealPolynomial,
operation=mul,
right=Πα[k]₍ₙ₎{k=1…p},
right.type=class arb.Real,
resultType=class arb.RealPolynomial )
BinaryOperation.generate( this=z^n,
left=z,
left.type=class arb.RealPolynomial,
operation=pow,
right=n,
right.type=class arb.Integer,
resultType=class arb.RealPolynomial )
Variable.generate( this=z, resultType=class arb.RealPolynomial)
Variable.generate( this=n, resultType=class arb.Integer)
loadFieldOntoStack P1 of type Larb/RealPolynomial;
NaryMultiplication.assignFieldNames(resultType=class arb.Real,
factorFunctionFieldName=factorℝ2,
factorValueFieldName=valueℝ2)
NaryMultiplication.generateFactorClass( expr=k➔α[k]₍ₙ₎,resultType=class arb.Real)
resolveReference(reference=k)
Declaring k as the input node to Expression[expression=k➔α[k]₍ₙ₎,
className=factorℝ2,
functionName=factorℝ2, recursive=false, functionClass=interface arb.functions.Function] + from
resolveReference(reference=k)
Declaring k as the input node to Expression[expression=k➔α[k]₍ₙ₎,
className=factorℝ2,
functionName=factorℝ2, recursive=false, functionClass=interface arb.functions.Function] + from
resolveReference(reference=α[k])
Declaring α[k] as a contextual variable of type class arb.Real
resolveReference(reference=n)
Checking if n is the indeterminant variable in a polynomial expression
Generating k➔α[k]₍ₙ₎
resolveReference(reference=n)
Checking if n is the indeterminant variable in a polynomial expression
BinaryOperation.generate( this=α[k]⋰n,
left=α[k],
left.type=class arb.Real,
operation=ascendingFactorial,
right=n,
right.type=class arb.RealPolynomial,
resultType=class arb.Real )
Variable.generate( this=α[k], resultType=class arb.Real)
loadFieldOntoStack α of type Larb/Real;
Variable.generate( this=k, resultType=class arb.Integer)
Variable.generate( this=n, resultType=class arb.RealPolynomial)
loadFieldOntoStack factorℝ2 of type Lfactorℝ2;
NaryMultiplication.propagateInputToFactorClass( factorFunctionFieldName=factorℝ2,
independentVariableNode=n,
independentVariableNode.type=class arb.Integer)
loadFieldOntoStack prodℝ1 of type Larb/Real;
getField(functionClass=factorℝ1,
fieldName=k,
fieldTypeSignature=Larb/Integer;
loadFieldOntoStack c1 of type Larb/Integer;
Variable.generate( this=p, resultType=class arb.Integer)
loadFieldOntoStack p of type Larb/Integer;
NaryMultiplication.designateLabel( label=L741669172,
addTypeToStackMap=false)
getField(functionClass=factorℝ1,
fieldName=k,
fieldTypeSignature=Larb/Integer;
loadFieldOntoStack P2 of type Larb/RealPolynomial;
BinaryOperation.generate( this=n!*Πβ[k]₍ₙ₎{k=1…q},
left=n!,
left.type=class arb.Integer,
operation=mul,
right=Πβ[k]₍ₙ₎{k=1…q},
right.type=class arb.Real,
resultType=class arb.Real )
FunctionCall.generate: this=n! resultType=class arb.Integer
Variable.generate( this=n, resultType=class arb.Real)
loadFieldOntoStack ℤ1 of type Larb/Integer;
NaryMultiplication.assignFieldNames(resultType=class arb.Real,
factorFunctionFieldName=factorℝ3,
factorValueFieldName=valueℝ3)
NaryMultiplication.generateFactorClass( expr=k➔β[k]₍ₙ₎,resultType=class arb.Real)
resolveReference(reference=k)
Declaring k as the input node to Expression[expression=k➔β[k]₍ₙ₎,
className=factorℝ3,
functionName=factorℝ3, recursive=false, functionClass=interface arb.functions.Function] + from
resolveReference(reference=k)
Declaring k as the input node to Expression[expression=k➔β[k]₍ₙ₎,
className=factorℝ3,
functionName=factorℝ3, recursive=false, functionClass=interface arb.functions.Function] + from
resolveReference(reference=β[k])
Declaring β[k] as a contextual variable of type class arb.Real
resolveReference(reference=n)
Checking if n is the indeterminant variable in a polynomial expression
Generating k➔β[k]₍ₙ₎
resolveReference(reference=n)
Checking if n is the indeterminant variable in a polynomial expression
BinaryOperation.generate( this=β[k]⋰n,
left=β[k],
left.type=class arb.Real,
operation=ascendingFactorial,
right=n,
right.type=class arb.RealPolynomial,
resultType=class arb.Real )
Variable.generate( this=β[k], resultType=class arb.Real)
loadFieldOntoStack β of type Larb/Real;
Variable.generate( this=k, resultType=class arb.Integer)
Variable.generate( this=n, resultType=class arb.RealPolynomial)
loadFieldOntoStack factorℝ3 of type Lfactorℝ3;
NaryMultiplication.propagateInputToFactorClass( factorFunctionFieldName=factorℝ3,
independentVariableNode=n,
independentVariableNode.type=class arb.Integer)
loadFieldOntoStack prodℝ2 of type Larb/Real;
getField(functionClass=factorℝ1,
fieldName=k,
fieldTypeSignature=Larb/Integer;
loadFieldOntoStack c1 of type Larb/Integer;
Variable.generate( this=q, resultType=class arb.Integer)
loadFieldOntoStack q of type Larb/Integer;
NaryMultiplication.designateLabel( label=L604125138,
addTypeToStackMap=false)
getField(functionClass=factorℝ1,
fieldName=k,
fieldTypeSignature=Larb/Integer;
loadFieldOntoStack ℝ1 of type Larb/Real;
loadFieldOntoStack sumℝ1 of type Larb/Real;
getField(functionClass=F,
fieldName=n,
fieldTypeSignature=Larb/Integer;
loadFieldOntoStack c1 of type Larb/Integer;
Variable.generate( this=N, resultType=class arb.Integer)
loadFieldOntoStack N of type Larb/Integer;
Summation.designateLabel( label=L492079624,
addTypeToStackMap=false)
getField(functionClass=F,
fieldName=n,
fieldTypeSignature=Larb/Integer;
generateFactorClass, Summation.generateFactorClass( expr=n➔z^n∏k➔α[k]₍ₙ₎{k=1…p}/(n!∏k➔β[k]₍ₙ₎{k=1…q}),resultType=class arb.Real) is the problem