brainpy.math.controls.make_while
brainpy.math.controls.make_while#
- brainpy.math.controls.make_while(cond_fun, body_fun, dyn_vars)[source]#
Make a while-loop function.
This function is similar to the
jax.lax.while_loop
. The difference is that, if you are usingJaxArray
in your while loop codes, this function will help you make a easy while loop function. Note:cond_fun
andbody_fun
do no receive any arguments.cond_fun
shoule return a boolean value.body_fun
does not support return values.Examples
>>> import brainpy.math as bm >>> >>> a = bm.zeros(1) >>> >>> def cond_f(x): return a[0] < 10 >>> def body_f(x): a.value += 1. >>> >>> loop = bm.make_while(cond_f, body_f, dyn_vars=[a]) >>> loop() >>> a JaxArray([10.], dtype=float32)
- Parameters
cond_fun (function, callable) – A function receives one argument, but return a boolean value.
body_fun (function, callable) – A function receives one argument, without any returns.
dyn_vars (dict of JaxArray, sequence of JaxArray) – The dynamically changed variables, while iterate between trials.
- Returns
loop_func – The function for loop iteration, which receive one argument
x
for external input.- Return type
callable, function