Class VectorUtils

java.lang.Object
dk.alexandra.fresco.stat.utils.VectorUtils

public class VectorUtils
extends Object
  • Nested Class Summary

    Nested Classes 
    Modifier and Type Class Description
    static interface  VectorUtils.EntrywiseBinaryOp<A,​B,​C>  
    static interface  VectorUtils.EntrywiseUnaryOp<A,​C>  
  • Constructor Summary

    Constructors 
    Constructor Description
    VectorUtils()  
  • Method Summary

    Modifier and Type Method Description
    static List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> add​(List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> a, List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> b, dk.alexandra.fresco.framework.builder.numeric.ProtocolBuilderNumeric builder)
    Add two secret vectors.
    static ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> div​(List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> vector, dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed> scalar, dk.alexandra.fresco.framework.builder.numeric.ProtocolBuilderNumeric builder)
    Divide all values in the given vector by the scalar.
    static <A,​ B,​ C> ArrayList<C> entrywiseBinaryOp​(List<A> a, List<B> b, VectorUtils.EntrywiseBinaryOp<A,​B,​C> op, dk.alexandra.fresco.framework.builder.numeric.ProtocolBuilderNumeric builder)  
    static <A,​ C> ArrayList<C> entrywiseUnaryOp​(List<A> a, VectorUtils.EntrywiseUnaryOp<A,​C> op, dk.alexandra.fresco.framework.builder.numeric.ProtocolBuilderNumeric builder)  
    static dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed> innerProductWithBitvector​(List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.framework.value.SInt>> a, List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> b, dk.alexandra.fresco.framework.builder.numeric.ProtocolBuilderNumeric builder)
    Compute the inner product of a secret vector with a secret bit vector.
    static dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed> innerProductWithBitvectorPublic​(List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.framework.value.SInt>> a, List<Double> b, dk.alexandra.fresco.framework.builder.numeric.ProtocolBuilderNumeric builder)
    Compute the inner product of a public vector with a secret bit vector.
    static ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.framework.value.SInt>> input​(List<BigInteger> list, int party, dk.alexandra.fresco.framework.builder.numeric.ProtocolBuilderNumeric builder)  
    static <T> ArrayList<T> listBuilder​(int size, IntFunction<T> generator)
    Build a list of the given size using a generator.
    static List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.framework.value.SInt>> mult​(List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.framework.value.SInt>> a, List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.framework.value.SInt>> b, dk.alexandra.fresco.framework.builder.numeric.ProtocolBuilderNumeric protocolBuilderNumeric)
    Subtract two secret vectors.
    static ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.framework.value.SInt>> negate​(List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.framework.value.SInt>> a, dk.alexandra.fresco.framework.builder.numeric.ProtocolBuilderNumeric builder)
    Compute the entry-wise binary negation of a secret vector
    static ArrayList<dk.alexandra.fresco.framework.DRes<BigInteger>> open​(List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.framework.value.SInt>> a, dk.alexandra.fresco.framework.builder.numeric.ProtocolBuilderNumeric builder)  
    static ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> scale​(List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> vector, double scalar, dk.alexandra.fresco.framework.builder.numeric.ProtocolBuilderNumeric builder)
    Scale all values in the given vector by the scalar.
    static ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> scale​(List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> vector, dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed> scalar, dk.alexandra.fresco.framework.builder.numeric.ProtocolBuilderNumeric builder)
    Scale all values in the given vector by the scalar.
    static ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.framework.value.SInt>> scaleInt​(List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.framework.value.SInt>> vector, dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.framework.value.SInt> scalar, dk.alexandra.fresco.framework.builder.numeric.ProtocolBuilderNumeric builder)
    Scale all values in the given vector by the scalar.
    static ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> sub​(List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> a, List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> b, dk.alexandra.fresco.framework.builder.numeric.ProtocolBuilderNumeric builder)
    Subtract two secret vectors.
    static List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> sum​(List<List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>>> a, dk.alexandra.fresco.framework.builder.numeric.ProtocolBuilderNumeric builder)
    Add a list of secret vectors.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

  • Method Details

    • innerProductWithBitvectorPublic

      public static dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed> innerProductWithBitvectorPublic​(List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.framework.value.SInt>> a, List<Double> b, dk.alexandra.fresco.framework.builder.numeric.ProtocolBuilderNumeric builder)
      Compute the inner product of a public vector with a secret bit vector.
      Parameters:
      a - A secret bit vector
      b - A public vector
      builder - The builder to use.
      Returns:
      The inner product of a and b.
    • innerProductWithBitvector

      public static dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed> innerProductWithBitvector​(List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.framework.value.SInt>> a, List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> b, dk.alexandra.fresco.framework.builder.numeric.ProtocolBuilderNumeric builder)
      Compute the inner product of a secret vector with a secret bit vector.
      Parameters:
      a - A secret bit vector
      b - A secret vector
      builder - The builder to use.
      Returns:
      The inner product of a and b.
    • listBuilder

      public static <T> ArrayList<T> listBuilder​(int size, IntFunction<T> generator)
      Build a list of the given size using a generator. Note that this is not lazy -- the generator is called for all indices when this is called.
      Type Parameters:
      T -
      Parameters:
      size - The size of the list.
      generator - The generator used to create the entries.
      Returns:
      A list containg the created elements.
    • scale

      public static ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> scale​(List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> vector, dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed> scalar, dk.alexandra.fresco.framework.builder.numeric.ProtocolBuilderNumeric builder)
      Scale all values in the given vector by the scalar.
      Parameters:
      vector - A secret vector.
      scalar - A secret scalar.
      builder - The builder to use.
      Returns:
      A scaled vector.
    • scale

      public static ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> scale​(List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> vector, double scalar, dk.alexandra.fresco.framework.builder.numeric.ProtocolBuilderNumeric builder)
      Scale all values in the given vector by the scalar.
      Parameters:
      vector - A secret vector.
      scalar - A public scalar.
      builder - The builder to use.
      Returns:
      A scaled vector.
    • scaleInt

      public static ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.framework.value.SInt>> scaleInt​(List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.framework.value.SInt>> vector, dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.framework.value.SInt> scalar, dk.alexandra.fresco.framework.builder.numeric.ProtocolBuilderNumeric builder)
      Scale all values in the given vector by the scalar.
      Parameters:
      vector - A secret vector.
      scalar - A public scalar.
      builder - The builder to use.
      Returns:
      A scaled vector.
    • div

      public static ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> div​(List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> vector, dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed> scalar, dk.alexandra.fresco.framework.builder.numeric.ProtocolBuilderNumeric builder)
      Divide all values in the given vector by the scalar.
      Parameters:
      vector - A secret vector.
      scalar - A secret scalar.
      builder - The builder to use.
      Returns:
    • add

      public static List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> add​(List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> a, List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> b, dk.alexandra.fresco.framework.builder.numeric.ProtocolBuilderNumeric builder)
      Add two secret vectors.
      Parameters:
      a - A secret vector.
      b - A secret scalar.
      builder - The builder to use.
      Returns:
      a+b
    • sum

      public static List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> sum​(List<List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>>> a, dk.alexandra.fresco.framework.builder.numeric.ProtocolBuilderNumeric builder)
      Add a list of secret vectors.
      Parameters:
      a - A list of secret vectors.
      builder - The builder to use.
      Returns:
      sum(a)
    • sub

      public static ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> sub​(List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> a, List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.lib.fixed.SFixed>> b, dk.alexandra.fresco.framework.builder.numeric.ProtocolBuilderNumeric builder)
      Subtract two secret vectors.
      Parameters:
      a - A secret vector.
      b - A secret scalar.
      builder - The builder to use.
      Returns:
      a-b
    • negate

      public static ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.framework.value.SInt>> negate​(List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.framework.value.SInt>> a, dk.alexandra.fresco.framework.builder.numeric.ProtocolBuilderNumeric builder)
      Compute the entry-wise binary negation of a secret vector
      Parameters:
      a - A secret 0-1-vector.
      builder - The builder to use.
      Returns:
      not a
    • open

      public static ArrayList<dk.alexandra.fresco.framework.DRes<BigInteger>> open​(List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.framework.value.SInt>> a, dk.alexandra.fresco.framework.builder.numeric.ProtocolBuilderNumeric builder)
    • mult

      public static List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.framework.value.SInt>> mult​(List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.framework.value.SInt>> a, List<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.framework.value.SInt>> b, dk.alexandra.fresco.framework.builder.numeric.ProtocolBuilderNumeric protocolBuilderNumeric)
      Subtract two secret vectors.
      Parameters:
      a - A secret vector.
      b - A secret scalar.
      protocolBuilderNumeric - The builder to use.
      Returns:
      a.*b
    • entrywiseBinaryOp

      public static <A,​ B,​ C> ArrayList<C> entrywiseBinaryOp​(List<A> a, List<B> b, VectorUtils.EntrywiseBinaryOp<A,​B,​C> op, dk.alexandra.fresco.framework.builder.numeric.ProtocolBuilderNumeric builder)
    • entrywiseUnaryOp

      public static <A,​ C> ArrayList<C> entrywiseUnaryOp​(List<A> a, VectorUtils.EntrywiseUnaryOp<A,​C> op, dk.alexandra.fresco.framework.builder.numeric.ProtocolBuilderNumeric builder)
    • input

      public static ArrayList<dk.alexandra.fresco.framework.DRes<dk.alexandra.fresco.framework.value.SInt>> input​(List<BigInteger> list, int party, dk.alexandra.fresco.framework.builder.numeric.ProtocolBuilderNumeric builder)