CPUBroadcastSummation.java

package neureka.backend.main.implementations.broadcast;

import neureka.backend.main.implementations.fun.api.CPUBiFun;

public class CPUBroadcastSummation extends CPUBroadcast
{
    public CPUBroadcastSummation() {}

    @Override
    protected CPUBiFun _getFun() {
        return new CPUBiFun() {
            @Override public double invoke(double a, double b) { return a + b; }
            @Override public float  invoke(float a, float b) { return a + b; }
            @Override public int    invoke(int a, int b) { return a + b; }
            @Override public long   invoke(long a, long b) { return a + b; }
            @Override public char   invoke(char a, char b) { return (char) (((int)a)+((int)b)); }
            @Override public boolean invoke(boolean a, boolean b) { return a && b; }
        };
    }

    @Override
    protected CPUBiFun _getDeriveAt0() {
        return new CPUBiFun() {
            @Override public double invoke(double a, double b) { return 1; }
            @Override public float  invoke(float a, float b) { return 1; }
            @Override public int    invoke(int a, int b) { return 1; }
            @Override public long   invoke(long a, long b) { return 1; }
            @Override public char   invoke(char a, char b) { return (char) (((int)a)+((int)b)); }
            @Override public boolean invoke(boolean a, boolean b) { return a && b; }
        };
    }

    @Override
    protected CPUBiFun _getDeriveAt1() {
        return new CPUBiFun() {
            @Override public double invoke(double a, double b) { return 1; }
            @Override public float  invoke(float a, float b) { return 1; }
            @Override public int    invoke(int a, int b) { return 1; }
            @Override public long   invoke(long a, long b) { return 1; }
            @Override public char   invoke(char a, char b) { return (char) (((int)a)+((int)b)); }
            @Override public boolean invoke(boolean a, boolean b) { return a && b; }
        };
    }
}