crowlogic / arb4j

arb4j is a Java API for the arbitrary precision ball arithmetic library found at http://arblib.org
Other
1 stars 0 forks source link

expression compiler: support utf superscript chars for exponentiation #348

Closed crowlogic closed 5 months ago

crowlogic commented 6 months ago
Returning zⁿ*∏k➔α[k]₍ₙ₎{k=1…p}/n!*∏k➔β[k]₍ₙ₎{k=1…q}
Returning α[k]₍ₙ₎
Returning β[k]₍ₙ₎
Exception in thread "main" java.lang.UnsupportedOperationException: no contextual variable for varName='zⁿ' and independent variable reference =n where parentExpression=Expression[expression=z➔Σn➔zⁿ*∏k➔α[k]₍ₙ₎{k=1…p}/n!*∏k➔β[k]₍ₙ₎{k=1…q}{n=0…N}, className=F, functionName=F, recursive=false, functionClass=interface arb.functions.real.RealFunction]
    at arb4j@0.88/arb.expressions.Expression.addCheckForNullField(Expression.java:341)
    at arb4j@0.88/arb.expressions.Expression.addChecksForNullVariableReferences(Expression.java:374)
    at arb4j@0.88/arb.expressions.Expression.generateInitializationCode(Expression.java:877)
    at arb4j@0.88/arb.expressions.Expression.generateInitializationMethod(Expression.java:1040)
    at arb4j@0.88/arb.expressions.Expression.compile(Expression.java:771)
    at arb4j@0.88/arb.expressions.Compiler.express(Compiler.java:143)
    at arb4j@0.88/arb.expressions.nodes.nary.NAryOperation.generateFactorClass(NAryOperation.java:289)
    at arb4j@0.88/arb.expressions.nodes.nary.NAryOperation.generate(NAryOperation.java:102)
    at arb4j@0.88/arb.expressions.Expression.generateEvaluationMethod(Expression.java:1003)
    at arb4j@0.88/arb.expressions.Expression.compile(Expression.java:763)
    at arb4j@0.88/arb.expressions.Compiler.express(Compiler.java:143)
    at arb4j@0.88/arb.expressions.Compiler.express(Compiler.java:156)
    at arb4j@0.88/arb.expressions.Compiler.express(Compiler.java:109)
    at arb4j@0.88/arb.expressions.Expression.instantiate(Expression.java:150)
    at arb4j@0.88/arb.functions.real.RealFunction.express(RealFunction.java:635)
    at arb4j@0.88/arb.functions.real.RealFunction.express(RealFunction.java:630)
    at arb4j@0.88/arb.functions.polynomials.HypergeometricPolynomial.<init>(HypergeometricPolynomial.java:69)
    at arb4j@0.88/arb.functions.polynomials.HypergeometricPolynomial.main(HypergeometricPolynomial.java:33)
crowlogic commented 6 months ago
Exception in thread "main" java.lang.UnsupportedOperationException: no contextual variable for varName='zⁿ' and independent variable reference is n where parentExpression=Expression[expression=z➔Σn➔zⁿ*∏k➔α[k]₍ₙ₎{k=1…p}/n!*∏k➔β[k]₍ₙ₎{k=1…q}{n=0…N}, className=F, functionName=F, recursive=false, functionClass=interface arb.functions.real.RealFunction] and this expression=Expression[expression=n➔zⁿ*∏k➔α[k]₍ₙ₎{k=1…p}/n!*∏k➔β[k]₍ₙ₎{k=1…q}, className=factorℝ1, functionName=factorℝ1, recursive=false, functionClass=interface arb.functions.Function]
    at arb4j/arb.expressions.Expression.addCheckForNullField(Expression.java:341)
    at arb4j/arb.expressions.Expression.addChecksForNullVariableReferences(Expression.java:374)
    at arb4j/arb.expressions.Expression.generateInitializationCode(Expression.java:877)
    at arb4j/arb.expressions.Expression.generateInitializationMethod(Expression.java:1040)
    at arb4j/arb.expressions.Expression.compile(Expression.java:771)
    at arb4j/arb.expressions.Compiler.express(Compiler.java:143)
    at arb4j/arb.expressions.nodes.nary.NAryOperation.generateFactorClass(NAryOperation.java:291)
    at arb4j/arb.expressions.nodes.nary.NAryOperation.generate(NAryOperation.java:102)
    at arb4j/arb.expressions.Expression.generateEvaluationMethod(Expression.java:1003)
    at arb4j/arb.expressions.Expression.compile(Expression.java:763)
    at arb4j/arb.expressions.Compiler.express(Compiler.java:143)
    at arb4j/arb.expressions.Compiler.express(Compiler.java:156)
    at arb4j/arb.expressions.Compiler.express(Compiler.java:109)
    at arb4j/arb.expressions.Expression.instantiate(Expression.java:150)
    at arb4j/arb.functions.real.RealFunction.express(RealFunction.java:635)
    at arb4j/arb.functions.real.RealFunction.express(RealFunction.java:630)
    at arb4j/arb.functions.polynomials.HypergeometricPolynomial.<init>(HypergeometricPolynomial.java:69)
    at arb4j/arb.functions.polynomials.HypergeometricPolynomial.main(HypergeometricPolynomial.java:33)
crowlogic commented 6 months ago

added to Parser

  public static int[] lowercaseSuperscriptAlphabet =
  { 'ᵃ', 'ᵇ', 'ᶜ', 'ᵈ', 'ᵉ', 'ᶠ', 'ᵍ', 'ʰ', 'ⁱ', 'ʲ', 'ᵏ', 'ˡ', 'ᵐ', 'ⁿ', 'ᵒ', 'ᵖ', 0x107A5, 'ʳ', 'ˢ', 'ᵗ', 'ᵘ', 'ᵛ',
    'ʷ', 'ˣ', 'ʸ', 'ᶻ' };
crowlogic commented 6 months ago

  /**
   * Not all uppercase letters have UTF superscript representations
   */
  public static int[]                    uppercaseSuperscriptAlphabet =
  { 'ᴬ', 'ᴮ', 'ᴰ', 'ᴱ', 'ᴳ', 'ᴴ', 'ᴵ', 'ᴶ', 'ᴷ', 'ᴸ', 'ᴹ', 'ᴺ', 'ᴼ', 'ᴾ', 'ᴿ', 'ᵀ', 'ᵁ', 'ⱽ', 'ᵂ' };
crowlogic commented 5 months ago

l8r