# <span class='text-muted'>015.</span> `merge(x, y, cond)`

<span style='font-size: small;' class='text-muted'>topic: {ref}`conditionals`</span>

`merge(x, y, cond)` returns `x` if the condition `cond` is true, otherwise `y`.
We can get the same result as the previous tip:

```{literalinclude} ../../src/merge.f90
:language: fortran
:caption: merge.f90 | <a href="https://github.com/zmoon/FortranTipBrowser/blob/main/src/merge.f90" target="_blank" title="See this source on GitHub"><i class="fab fa-github"></i></a> | <a href="https://godbolt.org/#g:!((g:!((g:!((g:!((h:codeEditor,i:(filename:'1',fontScale:14,fontUsePx:'0',j:1,lang:fortran,selection:(endColumn:1,endLineNumber:10,positionColumn:1,positionLineNumber:10,selectionStartColumn:1,selectionStartLineNumber:10,startColumn:1,startLineNumber:10),source:'integer+::+i%0A%0Ado+i+%3D+-1,+1%0A+++print+*,+i%0A+++!!+Note:+%22zero%22+padded+to+have+same+length+as+%22negative%22%0A+++print+*,+merge(%22negative%22,+merge(%22zero++++%22,+%26++%0A++++++++++++++++++%22positive%22,+i+%3D%3D+0+),+i+%3C+0)%0Aend+do%0A%0Aend%0A'),l:'5',n:'0',o:'Fortran+source+%231',t:'0')),k:50,l:'4',n:'0',o:'',s:0,t:'0'),(g:!((h:compiler,i:(compiler:gfortran112,filters:(b:'0',binary:'1',commentOnly:'0',demangle:'0',directives:'0',execute:'0',intel:'0',libraryCode:'0',trim:'1'),flagsViewOpen:'1',fontScale:14,fontUsePx:'0',j:1,lang:fortran,libs:!(),options:'',selection:(endColumn:1,endLineNumber:1,positionColumn:1,positionLineNumber:1,selectionStartColumn:1,selectionStartLineNumber:1,startColumn:1,startLineNumber:1),source:1,tree:'1'),l:'5',n:'0',o:'x86-64+gfortran+11.2+(Fortran,+Editor+%231,+Compiler+%231)',t:'0')),k:50,l:'4',n:'0',o:'',s:0,t:'0')),l:'2',m:62.300683371298405,n:'0',o:'',t:'0'),(g:!((h:output,i:(compiler:1,editor:1,fontScale:14,fontUsePx:'0',tree:'1',wrap:'1'),l:'5',n:'0',o:'Output+of+x86-64+gfortran+11.2+(Compiler+%231)',t:'0')),header:(),l:'4',m:37.699316628701595,n:'0',o:'',s:0,t:'0')),l:'3',n:'0',o:'',t:'0')),version:4" target="_blank" title="Open in Godbolt Compiler Explorer"><img src="https://raw.githubusercontent.com/compiler-explorer/compiler-explorer/main/views/resources/site-logo.svg" alt="Godbolt Compiler Explorer logo" width="55.11" height="16.7" class="align-text-bottom" /></a> | <a href="https://play.fortran-lang.org/?code=integer%20%3A%3A%20i%0A%0Ado%20i%20%3D%20-1%2C%201%0A%20%20%20print%20%2A%2C%20i%0A%20%20%20%21%20Note%3A%20%22zero%22%20padded%20to%20have%20same%20length%20as%20%22negative%22%0A%20%20%20print%20%2A%2C%20merge%28%22negative%22%2C%20merge%28%22zero%20%20%20%20%22%2C%20%26%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22positive%22%2C%20i%20%3D%3D%200%20%29%2C%20i%20%3C%200%29%0Aend%20do%0A%0Aend%0A" target="_blank" title="Open in Fortran Playground"><img src="https://raw.githubusercontent.com/fortran-lang/playground/main/frontend/src/fortran-logo.png" alt="Fortran logo" height="15.5" class="align-text-bottom" /></a>
```

```{code-block} text
:caption: Output[^gfortran-version]

          -1
 negative
           0
 zero    
           1
 positive

```

[^gfortran-version]: Compiled using `GNU Fortran (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0` with no flags

Similar to the three-argument usage of
[`numpy.where`](https://numpy.org/doc/stable/reference/generated/numpy.where.html).

---

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">merge(x,y,condition) returns x if condition is true, otherwise y. Same output as previous:<br><br>integer :: i<br>do i=-1,1<br> print*,i<br> ! &quot;zero&quot; padded to have same length as &quot;negative&quot;<br> print*,merge(&quot;negative&quot;,merge(&quot;zero &quot;, &amp; <br> &quot;positive&quot;,i==0),i&lt;0)<br>end do<br>end</p>&mdash; FortranTip (@fortrantip) <a href="https://twitter.com/fortrantip/status/1472205323763073026?ref_src=twsrc%5Etfw">December 18, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>