Complex Expression

Load(hcol);
Import(hcol);

opts := HCOLopts.getOpts(rec());
opts.useCReturn := false;
opts.includes := ["<math.h>"];
opts.XType := TPtr(TInt);
X.t := TPtr(TInt);
opts.globalUnrolling := 2;
opts.YType := TPtr(TDouble);
opts.arrayDataModifier := "";
opts.arrayBufModifier := "";
funcname := "F_003";
filename := "F_003.c";
tx := var("tx", TInt);
ty := var("ty", TInt);
i := var("i", TInt);
n := var("N", TInt);
runs := Ind(n);
opts.params := [n];
__NUM_VAR__ := 1;

# code generation
hcol := IterDirectSum(runs, n,
  TCond(
        TLess(
          GathH(__NUM_VAR__, 1, 0, 1),
          OLCompose(
                PointWise(1, Lambda([tx,i], 0)),
                GathH(__NUM_VAR__, 1, 0, 1)
        )),
        OLCompose(
          PointWise(1, Lambda([tx,i], 1.0)),
          GathH(__NUM_VAR__, 1, 0, 1)),
        OLCompose(
          PointWise(1, Lambda([tx,i], sin(tx))),
          GathH(__NUM_VAR__, 1, 0, 1)
        )
  )
);

icode := CoSynthesize(hcol, opts);
PrintCode(funcname, icode, opts);