Search in sources :

Example 1 with Int_Obj

use of suite.primitive.IntPrimitives.Int_Obj in project suite by stupidsing.

the class DivisiblePolynomial method format.

public Node format(Poly<N> poly) {
    Express ex = new Express();
    OpGroup add = ex.add;
    OpGroup mul = ex.mul;
    Int_Obj<Node> powerFun = p -> {
        Node power = mul.identity();
        for (int i = 0; i < p; i++) power = mul.apply(x, power);
        return power;
    };
    Node sum = format_.apply(n0);
    for (IntObjPair<N> pair : poly.streamlet().sortByKey(Integer::compare)) {
        int p = pair.t0;
        Node power = p < 0 ? mul.inverse(powerFun.apply(-p)) : powerFun.apply(p);
        sum = add.apply(mul.apply(format_.apply(pair.t1), power), sum);
    }
    return sum;
}
Also used : Poly(suite.math.sym.Polynomial.Poly) Ring(suite.math.sym.Sym.Ring) Predicate(java.util.function.Predicate) Pattern(suite.BindArrayUtil.Pattern) OpGroup(suite.math.sym.Express.OpGroup) Fun(suite.util.FunUtil.Fun) Node(suite.node.Node) Opt(suite.adt.Opt) Iterate(suite.util.FunUtil.Iterate) Pair(suite.adt.pair.Pair) Int_Obj(suite.primitive.IntPrimitives.Int_Obj) Fun2(suite.util.FunUtil2.Fun2) Obj_Int(suite.primitive.IntPrimitives.Obj_Int) IntObjPair(suite.primitive.adt.pair.IntObjPair) Fixie3(suite.adt.pair.Fixie_.Fixie3) Field(suite.math.sym.Sym.Field) SwitchNode(suite.node.io.SwitchNode) Int(suite.node.Int) OpGroup(suite.math.sym.Express.OpGroup) Node(suite.node.Node) SwitchNode(suite.node.io.SwitchNode)

Example 2 with Int_Obj

use of suite.primitive.IntPrimitives.Int_Obj in project suite by stupidsing.

the class Polynomial method format.

public Node format(Poly<N> poly) {
    Express ex = new Express();
    OpGroup add = ex.add;
    OpGroup mul = ex.mul;
    Int_Obj<Node> powerFun = p -> {
        Node power = mul.identity();
        for (int i = 0; i < p; i++) power = mul.apply(x, power);
        return power;
    };
    Node sum = format_.apply(n0);
    for (IntObjPair<N> pair : poly.streamlet().sortByKey(Integer::compare)) {
        int p = pair.t0;
        Node power = p < 0 ? mul.inverse(powerFun.apply(-p)) : powerFun.apply(p);
        sum = add.apply(mul.apply(format_.apply(pair.t1), power), sum);
    }
    return sum;
}
Also used : Ring(suite.math.sym.Sym.Ring) Predicate(java.util.function.Predicate) Pattern(suite.BindArrayUtil.Pattern) IntObjStreamlet(suite.primitive.streamlet.IntObjStreamlet) OpGroup(suite.math.sym.Express.OpGroup) IntObjMap(suite.primitive.adt.map.IntObjMap) Fun(suite.util.FunUtil.Fun) Node(suite.node.Node) Opt(suite.adt.Opt) Iterate(suite.util.FunUtil.Iterate) Int_Obj(suite.primitive.IntPrimitives.Int_Obj) Fun2(suite.util.FunUtil2.Fun2) Obj_Int(suite.primitive.IntPrimitives.Obj_Int) IntObjPair(suite.primitive.adt.pair.IntObjPair) Fixie(suite.adt.pair.Fixie) Fixie3(suite.adt.pair.Fixie_.Fixie3) As(suite.streamlet.As) SwitchNode(suite.node.io.SwitchNode) Int(suite.node.Int) OpGroup(suite.math.sym.Express.OpGroup) Node(suite.node.Node) SwitchNode(suite.node.io.SwitchNode)

Aggregations

Predicate (java.util.function.Predicate)2 Pattern (suite.BindArrayUtil.Pattern)2 Opt (suite.adt.Opt)2 Fixie3 (suite.adt.pair.Fixie_.Fixie3)2 OpGroup (suite.math.sym.Express.OpGroup)2 Ring (suite.math.sym.Sym.Ring)2 Int (suite.node.Int)2 Node (suite.node.Node)2 SwitchNode (suite.node.io.SwitchNode)2 Int_Obj (suite.primitive.IntPrimitives.Int_Obj)2 Obj_Int (suite.primitive.IntPrimitives.Obj_Int)2 IntObjPair (suite.primitive.adt.pair.IntObjPair)2 Fun (suite.util.FunUtil.Fun)2 Iterate (suite.util.FunUtil.Iterate)2 Fun2 (suite.util.FunUtil2.Fun2)2 Fixie (suite.adt.pair.Fixie)1 Pair (suite.adt.pair.Pair)1 Poly (suite.math.sym.Polynomial.Poly)1 Field (suite.math.sym.Sym.Field)1 IntObjMap (suite.primitive.adt.map.IntObjMap)1