package com.oblivm.backend.circuits.arithmetic; import com.oblivm.backend.flexsc.CompEnv; public interface ArithmeticLib<T> { CompEnv<T> getEnv(); T[] inputOfAlice(double d); T[] inputOfBob(double d); double outputToAlice(T[] a); T[] add(T[] x, T[] y); T[] multiply(T[] x, T[] y); T[] div(T[] x, T[] y); T[] sub(T[] x, T[] y); T[] publicValue(double v); T leq(T[] a, T[] b); T eq(T[] a, T[] b); T[] sqrt(T[] a); T[] toSecureInt(T[] a, IntegerLib<T> lib); T[] toSecureFloat(T[] a, FloatLib<T> lib); T[] toSecureFixPoint(T[] a, FixedPointLib<T> lib); int numBits(); }