Skip to content

Instantly share code, notes, and snippets.

@anilshanbhag
Created October 20, 2016 16:26
Show Gist options
  • Save anilshanbhag/196fdb159565b4183c050570effb9d4b to your computer and use it in GitHub Desktop.
Save anilshanbhag/196fdb159565b4183c050570effb9d4b to your computer and use it in GitHub Desktop.
($0:vec[float],$1:vec[vec[float]],$2:vec[float]) =>
$3 := ($4 := ($5 := (res(
indexedfor(
{$1},
0L,
len($1),
1,
vecBuilder[vec[float]]((long(len($1))-long(0L))),
($6:vecBuilder[vec[float]],$7:long,$8:vec[float]) =>
merge($6,res(
indexedfor(
{},
(long(0)+long(0L)),
(long(0)+long((long(lookup($3,1L))-long(0)))),
1,
vecBuilder[float]((long((long(0)+long((long(lookup($3,1L))-long(0)))))-long((long(0)+long(0L))))),
($9:vecBuilder[float],$10:long,$11:{}) =>
merge($9,lookup([-(lookup($4,$7)*(2.0F*(lookup($0,$7)-res(
indexedfor(
{$8},
0L,
len($8),
1,
merger[0.0F,($0:float,$1:float)=>($0+$1),($0:float,$1:float)=>($0+$1)],
($12:merger[0.0F,($0:float,$1:float)=>($0+$1),($0:float,$1:float)=>($0+$1)],$13:long,$14:float) =>
merge($12,($14*lookup($2,$13)))
)
))))],0L))
)
))
)
));
releaseBefore($5,
[0.25F,0.25F,0.25F,0.25F]
));
releaseBefore($4,
[1,6]
));
$15 := ([0.25F,0.25F,0.25F,0.25F]);
releaseBefore($15,
$16 := (res(
releaseAfter($3,
indexedfor(
{$1},
0L,
len($1),
1,
vecBuilder[vec[float]]((long(len($1))-long(0L))),
($17:vecBuilder[vec[float]],$18:long,$19:vec[float]) =>
merge($17,res(
indexedfor(
{},
(long(0)+long(0L)),
(long(0)+long((long(lookup($3,1L))-long(0)))),
1,
vecBuilder[float]((long((long(0)+long((long(lookup($3,1L))-long(0)))))-long((long(0)+long(0L))))),
($20:vecBuilder[float],$21:long,$22:{}) =>
merge($20,lookup([-(lookup([0.25F,0.25F,0.25F,0.25F],$18)*(2.0F*(lookup($0,$18)-res(
indexedfor(
{$19},
0L,
len($19),
1,
merger[0.0F,($0:float,$1:float)=>($0+$1),($0:float,$1:float)=>($0+$1)],
($23:merger[0.0F,($0:float,$1:float)=>($0+$1),($0:float,$1:float)=>($0+$1)],$24:long,$25:float) =>
merge($23,($25*lookup($2,$24)))
)
))))],0L))
)
))
)
)
));
res(
$26 := ($1);
releaseAfter($26,
indexedfor(
{releaseBefore($16,
$26
),getAndRelease($16)},
0L,
len($26),
1,
vecMerger[($0:float,$1:float)=>($0+$1)]([0.0F,0.0F,0.0F,0.0F,0.0F,0.0F]),
($27:vecMerger[($0:float,$1:float)=>($0+$1)],$28:long,$29:{vec[float],vec[float]}) =>
$30 := ($29.0);
releaseAfter($30,
indexedfor(
{$30,$29.1},
0L,
len($30),
1,
$27,
($31:vecMerger[($0:float,$1:float)=>($0+$1)],$32:long,$33:{float,float}) =>
merge($31,{$32,($33.0*$33.1)})
)
)
)
)
)
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment