# Method ifThenElse

#### static member ifThenElse: Tensor<bool> -> Tensor<'T> -> Tensor<'T> -> Tensor<'T>

Element-wise choice between two sources depending on a condition.

##### Declaration

`static member ifThenElse: cond:Tensor<bool> -> ifTrue:Tensor<'T> -> ifFalse:Tensor<'T> -> Tensor<'T>`

##### Parameters

Type | Name | Description |
---|---|---|

Tensor<bool> | cond | The condition tensor. |

Tensor<'T> | ifTrue | The tensor containing the values to use for when an element of the condition is true. |

Tensor<'T> | ifFalse | The tensor containing the values to use for when an element of the condition is false. |

##### Returns

Type | Description |
---|---|

Tensor<'T> | A new tensor containing the result of this operation. |

##### Remarks

Evaluates each element of tensor `cond`

. If it evaluates to true, the corresponding
element of tensor `ifTrue`

is written into the result. Otherwise, the corresponding element
of tensor `ifFalse`

is written into the result.

The tensors `cond`

, `ifTrue`

and `ifFalse`

must have
the same storage.
Broadcasting rules apply if `cond`

, `ifTrue`

and `ifFalse`

have different shapes.

##### Examples

```
let cond = HostTensor.ofList [true; false; false]
let ifTrue = HostTensor.ofList [2.0; 3.0; 4.0]
let ifFalse = HostTensor.ofList [5.0; 6.0; 7.0]
let target = Tensor.ifThenElse cond ifTrue ifFalse // target = [2.0; 6.0; 7.0]
```