blob: 00fbff7a874436e00173ab6554352e8387cd7745 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<title>Source code</title>
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
</head>
<body>
<div class="sourceContainer">
<pre><span class="sourceLineNo">001</span>/*-<a name="line.1"></a>
<span class="sourceLineNo">002</span> *******************************************************************************<a name="line.2"></a>
<span class="sourceLineNo">003</span> * Copyright (c) 2011, 2016 Diamond Light Source Ltd.<a name="line.3"></a>
<span class="sourceLineNo">004</span> * All rights reserved. This program and the accompanying materials<a name="line.4"></a>
<span class="sourceLineNo">005</span> * are made available under the terms of the Eclipse Public License v1.0<a name="line.5"></a>
<span class="sourceLineNo">006</span> * which accompanies this distribution, and is available at<a name="line.6"></a>
<span class="sourceLineNo">007</span> * http://www.eclipse.org/legal/epl-v10.html<a name="line.7"></a>
<span class="sourceLineNo">008</span> *<a name="line.8"></a>
<span class="sourceLineNo">009</span> * Contributors:<a name="line.9"></a>
<span class="sourceLineNo">010</span> * Peter Chang - initial API and implementation and/or initial documentation<a name="line.10"></a>
<span class="sourceLineNo">011</span> *******************************************************************************/<a name="line.11"></a>
<span class="sourceLineNo">012</span><a name="line.12"></a>
<span class="sourceLineNo">013</span>package org.eclipse.january.dataset;<a name="line.13"></a>
<span class="sourceLineNo">014</span><a name="line.14"></a>
<span class="sourceLineNo">015</span>import java.util.ArrayList;<a name="line.15"></a>
<span class="sourceLineNo">016</span>import java.util.Arrays;<a name="line.16"></a>
<span class="sourceLineNo">017</span>import java.util.Collection;<a name="line.17"></a>
<span class="sourceLineNo">018</span>import java.util.Iterator;<a name="line.18"></a>
<span class="sourceLineNo">019</span>import java.util.List;<a name="line.19"></a>
<span class="sourceLineNo">020</span><a name="line.20"></a>
<span class="sourceLineNo">021</span>import org.apache.commons.math3.complex.Complex;<a name="line.21"></a>
<span class="sourceLineNo">022</span>import org.eclipse.january.dataset.DTypeUtils;<a name="line.22"></a>
<span class="sourceLineNo">023</span>import org.eclipse.january.dataset.Comparisons.Monotonicity;<a name="line.23"></a>
<span class="sourceLineNo">024</span><a name="line.24"></a>
<span class="sourceLineNo">025</span>/**<a name="line.25"></a>
<span class="sourceLineNo">026</span> * Mathematics class<a name="line.26"></a>
<span class="sourceLineNo">027</span> */<a name="line.27"></a>
<span class="sourceLineNo">028</span>public class Maths {<a name="line.28"></a>
<span class="sourceLineNo">029</span><a name="line.29"></a>
<span class="sourceLineNo">030</span> // DO NOT EDIT THIS FILE, EDIT internal/template/MathsPreface.java INSTEAD<a name="line.30"></a>
<span class="sourceLineNo">031</span><a name="line.31"></a>
<span class="sourceLineNo">032</span> /**<a name="line.32"></a>
<span class="sourceLineNo">033</span> * Unwrap result from mathematical methods if necessary<a name="line.33"></a>
<span class="sourceLineNo">034</span> * <a name="line.34"></a>
<span class="sourceLineNo">035</span> * @param o<a name="line.35"></a>
<span class="sourceLineNo">036</span> * @param a<a name="line.36"></a>
<span class="sourceLineNo">037</span> * @return a dataset if a is a dataset or an object of the same class as o<a name="line.37"></a>
<span class="sourceLineNo">038</span> */<a name="line.38"></a>
<span class="sourceLineNo">039</span> public static Object unwrap(final Dataset o, final Object a) {<a name="line.39"></a>
<span class="sourceLineNo">040</span> return a instanceof Dataset ? o : o.getObjectAbs(o.getOffset());<a name="line.40"></a>
<span class="sourceLineNo">041</span> }<a name="line.41"></a>
<span class="sourceLineNo">042</span><a name="line.42"></a>
<span class="sourceLineNo">043</span> /**<a name="line.43"></a>
<span class="sourceLineNo">044</span> * Unwrap result from mathematical methods if necessary<a name="line.44"></a>
<span class="sourceLineNo">045</span> * <a name="line.45"></a>
<span class="sourceLineNo">046</span> * @param o<a name="line.46"></a>
<span class="sourceLineNo">047</span> * @param a<a name="line.47"></a>
<span class="sourceLineNo">048</span> * @return a dataset if either a and b are datasets or an object of the same<a name="line.48"></a>
<span class="sourceLineNo">049</span> * class as o<a name="line.49"></a>
<span class="sourceLineNo">050</span> */<a name="line.50"></a>
<span class="sourceLineNo">051</span> public static Object unwrap(final Dataset o, final Object a, final Object b) {<a name="line.51"></a>
<span class="sourceLineNo">052</span> return (a instanceof Dataset || b instanceof Dataset) ? o : o.getObjectAbs(o.getOffset());<a name="line.52"></a>
<span class="sourceLineNo">053</span> }<a name="line.53"></a>
<span class="sourceLineNo">054</span><a name="line.54"></a>
<span class="sourceLineNo">055</span> /**<a name="line.55"></a>
<span class="sourceLineNo">056</span> * Unwrap result from mathematical methods if necessary<a name="line.56"></a>
<span class="sourceLineNo">057</span> * <a name="line.57"></a>
<span class="sourceLineNo">058</span> * @param o<a name="line.58"></a>
<span class="sourceLineNo">059</span> * @param a<a name="line.59"></a>
<span class="sourceLineNo">060</span> * @return a dataset if any inputs are datasets or an object of the same<a name="line.60"></a>
<span class="sourceLineNo">061</span> * class as o<a name="line.61"></a>
<span class="sourceLineNo">062</span> */<a name="line.62"></a>
<span class="sourceLineNo">063</span> public static Object unwrap(final Dataset o, final Object... a) {<a name="line.63"></a>
<span class="sourceLineNo">064</span> boolean isAnyDataset = false;<a name="line.64"></a>
<span class="sourceLineNo">065</span> for (Object obj : a) {<a name="line.65"></a>
<span class="sourceLineNo">066</span> if (obj instanceof Dataset) {<a name="line.66"></a>
<span class="sourceLineNo">067</span> isAnyDataset = true;<a name="line.67"></a>
<span class="sourceLineNo">068</span> break;<a name="line.68"></a>
<span class="sourceLineNo">069</span> }<a name="line.69"></a>
<span class="sourceLineNo">070</span> }<a name="line.70"></a>
<span class="sourceLineNo">071</span> return isAnyDataset ? o : o.getObjectAbs(o.getOffset());<a name="line.71"></a>
<span class="sourceLineNo">072</span> }<a name="line.72"></a>
<span class="sourceLineNo">073</span><a name="line.73"></a>
<span class="sourceLineNo">074</span> /**<a name="line.74"></a>
<span class="sourceLineNo">075</span> * @param a<a name="line.75"></a>
<span class="sourceLineNo">076</span> * @param b<a name="line.76"></a>
<span class="sourceLineNo">077</span> * @return floor divide of a and b<a name="line.77"></a>
<span class="sourceLineNo">078</span> */<a name="line.78"></a>
<span class="sourceLineNo">079</span> public static Dataset floorDivide(final Object a, final Object b) {<a name="line.79"></a>
<span class="sourceLineNo">080</span> return floorDivide(a, b, null);<a name="line.80"></a>
<span class="sourceLineNo">081</span> }<a name="line.81"></a>
<span class="sourceLineNo">082</span><a name="line.82"></a>
<span class="sourceLineNo">083</span> /**<a name="line.83"></a>
<span class="sourceLineNo">084</span> * @param a<a name="line.84"></a>
<span class="sourceLineNo">085</span> * @param b<a name="line.85"></a>
<span class="sourceLineNo">086</span> * @param o<a name="line.86"></a>
<span class="sourceLineNo">087</span> * output can be null - in which case, a new dataset is created<a name="line.87"></a>
<span class="sourceLineNo">088</span> * @return floor divide of a and b<a name="line.88"></a>
<span class="sourceLineNo">089</span> */<a name="line.89"></a>
<span class="sourceLineNo">090</span> public static Dataset floorDivide(final Object a, final Object b, final Dataset o) {<a name="line.90"></a>
<span class="sourceLineNo">091</span> return Maths.divideTowardsFloor(a, b, o).ifloor();<a name="line.91"></a>
<span class="sourceLineNo">092</span> }<a name="line.92"></a>
<span class="sourceLineNo">093</span><a name="line.93"></a>
<span class="sourceLineNo">094</span> /**<a name="line.94"></a>
<span class="sourceLineNo">095</span> * @param a<a name="line.95"></a>
<span class="sourceLineNo">096</span> * @param b<a name="line.96"></a>
<span class="sourceLineNo">097</span> * @return floor remainder of a and b<a name="line.97"></a>
<span class="sourceLineNo">098</span> */<a name="line.98"></a>
<span class="sourceLineNo">099</span> public static Dataset floorRemainder(final Object a, final Object b) {<a name="line.99"></a>
<span class="sourceLineNo">100</span> return floorRemainder(a, b, null);<a name="line.100"></a>
<span class="sourceLineNo">101</span> }<a name="line.101"></a>
<span class="sourceLineNo">102</span><a name="line.102"></a>
<span class="sourceLineNo">103</span> /**<a name="line.103"></a>
<span class="sourceLineNo">104</span> * @param a<a name="line.104"></a>
<span class="sourceLineNo">105</span> * @param b<a name="line.105"></a>
<span class="sourceLineNo">106</span> * @param o<a name="line.106"></a>
<span class="sourceLineNo">107</span> * output can be null - in which case, a new dataset is created<a name="line.107"></a>
<span class="sourceLineNo">108</span> * @return floor remainder of a and b<a name="line.108"></a>
<span class="sourceLineNo">109</span> */<a name="line.109"></a>
<span class="sourceLineNo">110</span> public static Dataset floorRemainder(final Object a, final Object b, final Dataset o) {<a name="line.110"></a>
<span class="sourceLineNo">111</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.111"></a>
<span class="sourceLineNo">112</span> Dataset db = b instanceof Dataset ? (Dataset) b : DatasetFactory.createFromObject(b);<a name="line.112"></a>
<span class="sourceLineNo">113</span> Dataset dq = floorDivide(da, db);<a name="line.113"></a>
<span class="sourceLineNo">114</span> dq.imultiply(db);<a name="line.114"></a>
<span class="sourceLineNo">115</span> return Maths.subtract(da, dq, o);<a name="line.115"></a>
<span class="sourceLineNo">116</span> }<a name="line.116"></a>
<span class="sourceLineNo">117</span><a name="line.117"></a>
<span class="sourceLineNo">118</span> /**<a name="line.118"></a>
<span class="sourceLineNo">119</span> * Find reciprocal from dataset<a name="line.119"></a>
<span class="sourceLineNo">120</span> * <a name="line.120"></a>
<span class="sourceLineNo">121</span> * @param a<a name="line.121"></a>
<span class="sourceLineNo">122</span> * @return reciprocal dataset<a name="line.122"></a>
<span class="sourceLineNo">123</span> */<a name="line.123"></a>
<span class="sourceLineNo">124</span> public static Dataset reciprocal(final Object a) {<a name="line.124"></a>
<span class="sourceLineNo">125</span> return reciprocal(a, null);<a name="line.125"></a>
<span class="sourceLineNo">126</span> }<a name="line.126"></a>
<span class="sourceLineNo">127</span><a name="line.127"></a>
<span class="sourceLineNo">128</span> /**<a name="line.128"></a>
<span class="sourceLineNo">129</span> * Find reciprocal from dataset<a name="line.129"></a>
<span class="sourceLineNo">130</span> * <a name="line.130"></a>
<span class="sourceLineNo">131</span> * @param a<a name="line.131"></a>
<span class="sourceLineNo">132</span> * @param o<a name="line.132"></a>
<span class="sourceLineNo">133</span> * output can be null - in which case, a new dataset is created<a name="line.133"></a>
<span class="sourceLineNo">134</span> * @return reciprocal dataset<a name="line.134"></a>
<span class="sourceLineNo">135</span> */<a name="line.135"></a>
<span class="sourceLineNo">136</span> public static Dataset reciprocal(final Object a, final Dataset o) {<a name="line.136"></a>
<span class="sourceLineNo">137</span> final Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.137"></a>
<span class="sourceLineNo">138</span> return Maths.divide(1, da, o);<a name="line.138"></a>
<span class="sourceLineNo">139</span> }<a name="line.139"></a>
<span class="sourceLineNo">140</span><a name="line.140"></a>
<span class="sourceLineNo">141</span> /**<a name="line.141"></a>
<span class="sourceLineNo">142</span> * abs - absolute value of each element<a name="line.142"></a>
<span class="sourceLineNo">143</span> * <a name="line.143"></a>
<span class="sourceLineNo">144</span> * @param a<a name="line.144"></a>
<span class="sourceLineNo">145</span> * @return dataset<a name="line.145"></a>
<span class="sourceLineNo">146</span> */<a name="line.146"></a>
<span class="sourceLineNo">147</span> public static Dataset abs(final Object a) {<a name="line.147"></a>
<span class="sourceLineNo">148</span> return abs(a, null);<a name="line.148"></a>
<span class="sourceLineNo">149</span> }<a name="line.149"></a>
<span class="sourceLineNo">150</span><a name="line.150"></a>
<span class="sourceLineNo">151</span> /**<a name="line.151"></a>
<span class="sourceLineNo">152</span> * abs - absolute value of each element<a name="line.152"></a>
<span class="sourceLineNo">153</span> * <a name="line.153"></a>
<span class="sourceLineNo">154</span> * @param a<a name="line.154"></a>
<span class="sourceLineNo">155</span> * @param o<a name="line.155"></a>
<span class="sourceLineNo">156</span> * output can be null - in which case, a new dataset is created<a name="line.156"></a>
<span class="sourceLineNo">157</span> * @return dataset<a name="line.157"></a>
<span class="sourceLineNo">158</span> */<a name="line.158"></a>
<span class="sourceLineNo">159</span> public static Dataset abs(final Object a, final Dataset o) {<a name="line.159"></a>
<span class="sourceLineNo">160</span> final Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.160"></a>
<span class="sourceLineNo">161</span> final SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true, true, false);<a name="line.161"></a>
<span class="sourceLineNo">162</span> final Dataset result = it.getOutput();<a name="line.162"></a>
<span class="sourceLineNo">163</span> final int is = result.getElementsPerItem();<a name="line.163"></a>
<span class="sourceLineNo">164</span> final int dt = result.getDType();<a name="line.164"></a>
<span class="sourceLineNo">165</span> final int as = da.getElementsPerItem();<a name="line.165"></a>
<span class="sourceLineNo">166</span> final boolean reset = result == o &amp;&amp; is &gt; 1;<a name="line.166"></a>
<span class="sourceLineNo">167</span><a name="line.167"></a>
<span class="sourceLineNo">168</span> switch (dt) {<a name="line.168"></a>
<span class="sourceLineNo">169</span> case Dataset.INT8:<a name="line.169"></a>
<span class="sourceLineNo">170</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.170"></a>
<span class="sourceLineNo">171</span> it.setOutputDouble(false);<a name="line.171"></a>
<span class="sourceLineNo">172</span><a name="line.172"></a>
<span class="sourceLineNo">173</span> while (it.hasNext()) {<a name="line.173"></a>
<span class="sourceLineNo">174</span> oi8data[it.oIndex] = (byte) Math.abs(it.aLong);<a name="line.174"></a>
<span class="sourceLineNo">175</span> }<a name="line.175"></a>
<span class="sourceLineNo">176</span> break;<a name="line.176"></a>
<span class="sourceLineNo">177</span> case Dataset.INT16:<a name="line.177"></a>
<span class="sourceLineNo">178</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.178"></a>
<span class="sourceLineNo">179</span> it.setOutputDouble(false);<a name="line.179"></a>
<span class="sourceLineNo">180</span><a name="line.180"></a>
<span class="sourceLineNo">181</span> while (it.hasNext()) {<a name="line.181"></a>
<span class="sourceLineNo">182</span> oi16data[it.oIndex] = (short) Math.abs(it.aLong);<a name="line.182"></a>
<span class="sourceLineNo">183</span> }<a name="line.183"></a>
<span class="sourceLineNo">184</span> break;<a name="line.184"></a>
<span class="sourceLineNo">185</span> case Dataset.INT32:<a name="line.185"></a>
<span class="sourceLineNo">186</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.186"></a>
<span class="sourceLineNo">187</span> it.setOutputDouble(false);<a name="line.187"></a>
<span class="sourceLineNo">188</span><a name="line.188"></a>
<span class="sourceLineNo">189</span> while (it.hasNext()) {<a name="line.189"></a>
<span class="sourceLineNo">190</span> oi32data[it.oIndex] = (int) Math.abs(it.aLong);<a name="line.190"></a>
<span class="sourceLineNo">191</span> }<a name="line.191"></a>
<span class="sourceLineNo">192</span> break;<a name="line.192"></a>
<span class="sourceLineNo">193</span> case Dataset.INT64:<a name="line.193"></a>
<span class="sourceLineNo">194</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.194"></a>
<span class="sourceLineNo">195</span> it.setOutputDouble(false);<a name="line.195"></a>
<span class="sourceLineNo">196</span><a name="line.196"></a>
<span class="sourceLineNo">197</span> while (it.hasNext()) {<a name="line.197"></a>
<span class="sourceLineNo">198</span> oi64data[it.oIndex] = Math.abs(it.aLong);<a name="line.198"></a>
<span class="sourceLineNo">199</span> }<a name="line.199"></a>
<span class="sourceLineNo">200</span> break;<a name="line.200"></a>
<span class="sourceLineNo">201</span> case Dataset.ARRAYINT8:<a name="line.201"></a>
<span class="sourceLineNo">202</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.202"></a>
<span class="sourceLineNo">203</span> it.setOutputDouble(false);<a name="line.203"></a>
<span class="sourceLineNo">204</span><a name="line.204"></a>
<span class="sourceLineNo">205</span> if (is == 1) {<a name="line.205"></a>
<span class="sourceLineNo">206</span> while (it.hasNext()) {<a name="line.206"></a>
<span class="sourceLineNo">207</span> oai8data[it.oIndex] = (byte) Math.abs(it.aLong);<a name="line.207"></a>
<span class="sourceLineNo">208</span> }<a name="line.208"></a>
<span class="sourceLineNo">209</span> } else if (as == 1) {<a name="line.209"></a>
<span class="sourceLineNo">210</span> while (it.hasNext()) {<a name="line.210"></a>
<span class="sourceLineNo">211</span> byte ox = (byte) Math.abs(it.aLong);<a name="line.211"></a>
<span class="sourceLineNo">212</span> for (int j = 0; j &lt; is; j++) {<a name="line.212"></a>
<span class="sourceLineNo">213</span> oai8data[it.oIndex + j] = ox;<a name="line.213"></a>
<span class="sourceLineNo">214</span> }<a name="line.214"></a>
<span class="sourceLineNo">215</span> }<a name="line.215"></a>
<span class="sourceLineNo">216</span> } else {<a name="line.216"></a>
<span class="sourceLineNo">217</span> while (it.hasNext()) {<a name="line.217"></a>
<span class="sourceLineNo">218</span> oai8data[it.oIndex] = (byte) Math.abs(it.aLong);<a name="line.218"></a>
<span class="sourceLineNo">219</span> for (int j = 1; j &lt; is; j++) {<a name="line.219"></a>
<span class="sourceLineNo">220</span> oai8data[it.oIndex + j] = (byte) Math.abs(da.getElementLongAbs(it.aIndex + j));<a name="line.220"></a>
<span class="sourceLineNo">221</span> }<a name="line.221"></a>
<span class="sourceLineNo">222</span> }<a name="line.222"></a>
<span class="sourceLineNo">223</span> }<a name="line.223"></a>
<span class="sourceLineNo">224</span> break;<a name="line.224"></a>
<span class="sourceLineNo">225</span> case Dataset.ARRAYINT16:<a name="line.225"></a>
<span class="sourceLineNo">226</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.226"></a>
<span class="sourceLineNo">227</span> it.setOutputDouble(false);<a name="line.227"></a>
<span class="sourceLineNo">228</span><a name="line.228"></a>
<span class="sourceLineNo">229</span> if (is == 1) {<a name="line.229"></a>
<span class="sourceLineNo">230</span> while (it.hasNext()) {<a name="line.230"></a>
<span class="sourceLineNo">231</span> oai16data[it.oIndex] = (short) Math.abs(it.aLong);<a name="line.231"></a>
<span class="sourceLineNo">232</span> }<a name="line.232"></a>
<span class="sourceLineNo">233</span> } else if (as == 1) {<a name="line.233"></a>
<span class="sourceLineNo">234</span> while (it.hasNext()) {<a name="line.234"></a>
<span class="sourceLineNo">235</span> short ox = (short) Math.abs(it.aLong);<a name="line.235"></a>
<span class="sourceLineNo">236</span> for (int j = 0; j &lt; is; j++) {<a name="line.236"></a>
<span class="sourceLineNo">237</span> oai16data[it.oIndex + j] = ox;<a name="line.237"></a>
<span class="sourceLineNo">238</span> }<a name="line.238"></a>
<span class="sourceLineNo">239</span> }<a name="line.239"></a>
<span class="sourceLineNo">240</span> } else {<a name="line.240"></a>
<span class="sourceLineNo">241</span> while (it.hasNext()) {<a name="line.241"></a>
<span class="sourceLineNo">242</span> oai16data[it.oIndex] = (short) Math.abs(it.aLong);<a name="line.242"></a>
<span class="sourceLineNo">243</span> for (int j = 1; j &lt; is; j++) {<a name="line.243"></a>
<span class="sourceLineNo">244</span> oai16data[it.oIndex + j] = (short) Math.abs(da.getElementLongAbs(it.aIndex + j));<a name="line.244"></a>
<span class="sourceLineNo">245</span> }<a name="line.245"></a>
<span class="sourceLineNo">246</span> }<a name="line.246"></a>
<span class="sourceLineNo">247</span> }<a name="line.247"></a>
<span class="sourceLineNo">248</span> break;<a name="line.248"></a>
<span class="sourceLineNo">249</span> case Dataset.ARRAYINT32:<a name="line.249"></a>
<span class="sourceLineNo">250</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.250"></a>
<span class="sourceLineNo">251</span> it.setOutputDouble(false);<a name="line.251"></a>
<span class="sourceLineNo">252</span><a name="line.252"></a>
<span class="sourceLineNo">253</span> if (is == 1) {<a name="line.253"></a>
<span class="sourceLineNo">254</span> while (it.hasNext()) {<a name="line.254"></a>
<span class="sourceLineNo">255</span> oai32data[it.oIndex] = (int) Math.abs(it.aLong);<a name="line.255"></a>
<span class="sourceLineNo">256</span> }<a name="line.256"></a>
<span class="sourceLineNo">257</span> } else if (as == 1) {<a name="line.257"></a>
<span class="sourceLineNo">258</span> while (it.hasNext()) {<a name="line.258"></a>
<span class="sourceLineNo">259</span> int ox = (int) Math.abs(it.aLong);<a name="line.259"></a>
<span class="sourceLineNo">260</span> for (int j = 0; j &lt; is; j++) {<a name="line.260"></a>
<span class="sourceLineNo">261</span> oai32data[it.oIndex + j] = ox;<a name="line.261"></a>
<span class="sourceLineNo">262</span> }<a name="line.262"></a>
<span class="sourceLineNo">263</span> }<a name="line.263"></a>
<span class="sourceLineNo">264</span> } else {<a name="line.264"></a>
<span class="sourceLineNo">265</span> while (it.hasNext()) {<a name="line.265"></a>
<span class="sourceLineNo">266</span> oai32data[it.oIndex] = (int) Math.abs(it.aLong);<a name="line.266"></a>
<span class="sourceLineNo">267</span> for (int j = 1; j &lt; is; j++) {<a name="line.267"></a>
<span class="sourceLineNo">268</span> oai32data[it.oIndex + j] = (int) Math.abs(da.getElementLongAbs(it.aIndex + j));<a name="line.268"></a>
<span class="sourceLineNo">269</span> }<a name="line.269"></a>
<span class="sourceLineNo">270</span> }<a name="line.270"></a>
<span class="sourceLineNo">271</span> }<a name="line.271"></a>
<span class="sourceLineNo">272</span> break;<a name="line.272"></a>
<span class="sourceLineNo">273</span> case Dataset.ARRAYINT64:<a name="line.273"></a>
<span class="sourceLineNo">274</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.274"></a>
<span class="sourceLineNo">275</span> it.setOutputDouble(false);<a name="line.275"></a>
<span class="sourceLineNo">276</span><a name="line.276"></a>
<span class="sourceLineNo">277</span> if (is == 1) {<a name="line.277"></a>
<span class="sourceLineNo">278</span> while (it.hasNext()) {<a name="line.278"></a>
<span class="sourceLineNo">279</span> oai64data[it.oIndex] = Math.abs(it.aLong);<a name="line.279"></a>
<span class="sourceLineNo">280</span> }<a name="line.280"></a>
<span class="sourceLineNo">281</span> } else if (as == 1) {<a name="line.281"></a>
<span class="sourceLineNo">282</span> while (it.hasNext()) {<a name="line.282"></a>
<span class="sourceLineNo">283</span> long ox = Math.abs(it.aLong);<a name="line.283"></a>
<span class="sourceLineNo">284</span> for (int j = 0; j &lt; is; j++) {<a name="line.284"></a>
<span class="sourceLineNo">285</span> oai64data[it.oIndex + j] = ox;<a name="line.285"></a>
<span class="sourceLineNo">286</span> }<a name="line.286"></a>
<span class="sourceLineNo">287</span> }<a name="line.287"></a>
<span class="sourceLineNo">288</span> } else {<a name="line.288"></a>
<span class="sourceLineNo">289</span> while (it.hasNext()) {<a name="line.289"></a>
<span class="sourceLineNo">290</span> oai64data[it.oIndex] = Math.abs(it.aLong);<a name="line.290"></a>
<span class="sourceLineNo">291</span> for (int j = 1; j &lt; is; j++) {<a name="line.291"></a>
<span class="sourceLineNo">292</span> oai64data[it.oIndex + j] = Math.abs(da.getElementLongAbs(it.aIndex + j));<a name="line.292"></a>
<span class="sourceLineNo">293</span> }<a name="line.293"></a>
<span class="sourceLineNo">294</span> }<a name="line.294"></a>
<span class="sourceLineNo">295</span> }<a name="line.295"></a>
<span class="sourceLineNo">296</span> break;<a name="line.296"></a>
<span class="sourceLineNo">297</span> case Dataset.FLOAT32:<a name="line.297"></a>
<span class="sourceLineNo">298</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.298"></a>
<span class="sourceLineNo">299</span> if (as == 1) {<a name="line.299"></a>
<span class="sourceLineNo">300</span> while (it.hasNext()) {<a name="line.300"></a>
<span class="sourceLineNo">301</span> of32data[it.oIndex] = (float) (Math.abs(it.aDouble));<a name="line.301"></a>
<span class="sourceLineNo">302</span> }<a name="line.302"></a>
<span class="sourceLineNo">303</span> } else {<a name="line.303"></a>
<span class="sourceLineNo">304</span> while (it.hasNext()) {<a name="line.304"></a>
<span class="sourceLineNo">305</span> of32data[it.oIndex] = (float) (Math.hypot(it.aDouble, da.getElementDoubleAbs(it.aIndex + 1)));<a name="line.305"></a>
<span class="sourceLineNo">306</span> }<a name="line.306"></a>
<span class="sourceLineNo">307</span> }<a name="line.307"></a>
<span class="sourceLineNo">308</span> break;<a name="line.308"></a>
<span class="sourceLineNo">309</span> case Dataset.FLOAT64:<a name="line.309"></a>
<span class="sourceLineNo">310</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.310"></a>
<span class="sourceLineNo">311</span> if (as == 1) {<a name="line.311"></a>
<span class="sourceLineNo">312</span> while (it.hasNext()) {<a name="line.312"></a>
<span class="sourceLineNo">313</span> of64data[it.oIndex] = Math.abs(it.aDouble);<a name="line.313"></a>
<span class="sourceLineNo">314</span> }<a name="line.314"></a>
<span class="sourceLineNo">315</span> } else {<a name="line.315"></a>
<span class="sourceLineNo">316</span> while (it.hasNext()) {<a name="line.316"></a>
<span class="sourceLineNo">317</span> of64data[it.oIndex] = Math.hypot(it.aDouble, da.getElementDoubleAbs(it.aIndex + 1));<a name="line.317"></a>
<span class="sourceLineNo">318</span> }<a name="line.318"></a>
<span class="sourceLineNo">319</span> }<a name="line.319"></a>
<span class="sourceLineNo">320</span> break;<a name="line.320"></a>
<span class="sourceLineNo">321</span> case Dataset.ARRAYFLOAT32:<a name="line.321"></a>
<span class="sourceLineNo">322</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.322"></a>
<span class="sourceLineNo">323</span> if (is == 1) {<a name="line.323"></a>
<span class="sourceLineNo">324</span> while (it.hasNext()) {<a name="line.324"></a>
<span class="sourceLineNo">325</span> oaf32data[it.oIndex] = (float) (Math.abs(it.aDouble));<a name="line.325"></a>
<span class="sourceLineNo">326</span> }<a name="line.326"></a>
<span class="sourceLineNo">327</span> } else if (as == 1) {<a name="line.327"></a>
<span class="sourceLineNo">328</span> while (it.hasNext()) {<a name="line.328"></a>
<span class="sourceLineNo">329</span> float ox = (float) (Math.abs(it.aDouble));<a name="line.329"></a>
<span class="sourceLineNo">330</span> for (int j = 0; j &lt; is; j++) {<a name="line.330"></a>
<span class="sourceLineNo">331</span> oaf32data[it.oIndex + j] = ox;<a name="line.331"></a>
<span class="sourceLineNo">332</span> }<a name="line.332"></a>
<span class="sourceLineNo">333</span> }<a name="line.333"></a>
<span class="sourceLineNo">334</span> } else {<a name="line.334"></a>
<span class="sourceLineNo">335</span> while (it.hasNext()) {<a name="line.335"></a>
<span class="sourceLineNo">336</span> oaf32data[it.oIndex] = (float) Math.abs(it.aDouble);<a name="line.336"></a>
<span class="sourceLineNo">337</span> for (int j = 1; j &lt; is; j++) {<a name="line.337"></a>
<span class="sourceLineNo">338</span> oaf32data[it.oIndex + j] = (float) Math.abs(da.getElementDoubleAbs(it.aIndex + j));<a name="line.338"></a>
<span class="sourceLineNo">339</span> }<a name="line.339"></a>
<span class="sourceLineNo">340</span> }<a name="line.340"></a>
<span class="sourceLineNo">341</span> }<a name="line.341"></a>
<span class="sourceLineNo">342</span> break;<a name="line.342"></a>
<span class="sourceLineNo">343</span> case Dataset.ARRAYFLOAT64:<a name="line.343"></a>
<span class="sourceLineNo">344</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.344"></a>
<span class="sourceLineNo">345</span> if (is == 1) {<a name="line.345"></a>
<span class="sourceLineNo">346</span> while (it.hasNext()) {<a name="line.346"></a>
<span class="sourceLineNo">347</span> oaf64data[it.oIndex] = Math.abs(it.aDouble);<a name="line.347"></a>
<span class="sourceLineNo">348</span> }<a name="line.348"></a>
<span class="sourceLineNo">349</span> } else if (as == 1) {<a name="line.349"></a>
<span class="sourceLineNo">350</span> while (it.hasNext()) {<a name="line.350"></a>
<span class="sourceLineNo">351</span> final double ix = it.aDouble;<a name="line.351"></a>
<span class="sourceLineNo">352</span> double ox = Math.abs(ix);<a name="line.352"></a>
<span class="sourceLineNo">353</span> for (int j = 0; j &lt; is; j++) {<a name="line.353"></a>
<span class="sourceLineNo">354</span> oaf64data[it.oIndex + j] = ox;<a name="line.354"></a>
<span class="sourceLineNo">355</span> }<a name="line.355"></a>
<span class="sourceLineNo">356</span> }<a name="line.356"></a>
<span class="sourceLineNo">357</span> } else {<a name="line.357"></a>
<span class="sourceLineNo">358</span> while (it.hasNext()) {<a name="line.358"></a>
<span class="sourceLineNo">359</span> oaf64data[it.oIndex] = Math.abs(it.aDouble);<a name="line.359"></a>
<span class="sourceLineNo">360</span> for (int j = 1; j &lt; is; j++) {<a name="line.360"></a>
<span class="sourceLineNo">361</span> oaf64data[it.oIndex + j] = Math.abs(da.getElementDoubleAbs(it.aIndex + j));<a name="line.361"></a>
<span class="sourceLineNo">362</span> }<a name="line.362"></a>
<span class="sourceLineNo">363</span> }<a name="line.363"></a>
<span class="sourceLineNo">364</span> }<a name="line.364"></a>
<span class="sourceLineNo">365</span> break;<a name="line.365"></a>
<span class="sourceLineNo">366</span> case Dataset.COMPLEX64:<a name="line.366"></a>
<span class="sourceLineNo">367</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.367"></a>
<span class="sourceLineNo">368</span> if (!da.isComplex()) {<a name="line.368"></a>
<span class="sourceLineNo">369</span> while (it.hasNext()) {<a name="line.369"></a>
<span class="sourceLineNo">370</span> oc64data[it.oIndex] = (float) Math.abs(it.aDouble);<a name="line.370"></a>
<span class="sourceLineNo">371</span> if (reset) {<a name="line.371"></a>
<span class="sourceLineNo">372</span> oc64data[it.oIndex + 1] = 0;<a name="line.372"></a>
<span class="sourceLineNo">373</span> }<a name="line.373"></a>
<span class="sourceLineNo">374</span> }<a name="line.374"></a>
<span class="sourceLineNo">375</span> } else {<a name="line.375"></a>
<span class="sourceLineNo">376</span> while (it.hasNext()) {<a name="line.376"></a>
<span class="sourceLineNo">377</span> oc64data[it.oIndex] = (float) Math.hypot(it.aDouble, da.getElementDoubleAbs(it.aIndex + 1));<a name="line.377"></a>
<span class="sourceLineNo">378</span> if (reset) {<a name="line.378"></a>
<span class="sourceLineNo">379</span> oc64data[it.oIndex + 1] = 0;<a name="line.379"></a>
<span class="sourceLineNo">380</span> }<a name="line.380"></a>
<span class="sourceLineNo">381</span> }<a name="line.381"></a>
<span class="sourceLineNo">382</span> }<a name="line.382"></a>
<span class="sourceLineNo">383</span> break;<a name="line.383"></a>
<span class="sourceLineNo">384</span> case Dataset.COMPLEX128:<a name="line.384"></a>
<span class="sourceLineNo">385</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.385"></a>
<span class="sourceLineNo">386</span> if (!da.isComplex()) {<a name="line.386"></a>
<span class="sourceLineNo">387</span> while (it.hasNext()) {<a name="line.387"></a>
<span class="sourceLineNo">388</span> oc128data[it.oIndex] = Math.abs(it.aDouble);<a name="line.388"></a>
<span class="sourceLineNo">389</span> if (reset) {<a name="line.389"></a>
<span class="sourceLineNo">390</span> oc128data[it.oIndex + 1] = 0;<a name="line.390"></a>
<span class="sourceLineNo">391</span> }<a name="line.391"></a>
<span class="sourceLineNo">392</span> }<a name="line.392"></a>
<span class="sourceLineNo">393</span> } else {<a name="line.393"></a>
<span class="sourceLineNo">394</span> while (it.hasNext()) {<a name="line.394"></a>
<span class="sourceLineNo">395</span> oc128data[it.oIndex] = Math.hypot(it.aDouble, da.getElementDoubleAbs(it.aIndex + 1));<a name="line.395"></a>
<span class="sourceLineNo">396</span> if (reset) {<a name="line.396"></a>
<span class="sourceLineNo">397</span> oc128data[it.oIndex + 1] = 0;<a name="line.397"></a>
<span class="sourceLineNo">398</span> }<a name="line.398"></a>
<span class="sourceLineNo">399</span> }<a name="line.399"></a>
<span class="sourceLineNo">400</span> }<a name="line.400"></a>
<span class="sourceLineNo">401</span> break;<a name="line.401"></a>
<span class="sourceLineNo">402</span> default:<a name="line.402"></a>
<span class="sourceLineNo">403</span> throw new IllegalArgumentException(<a name="line.403"></a>
<span class="sourceLineNo">404</span> "abs supports integer, compound integer, real, compound real, complex datasets only");<a name="line.404"></a>
<span class="sourceLineNo">405</span> }<a name="line.405"></a>
<span class="sourceLineNo">406</span><a name="line.406"></a>
<span class="sourceLineNo">407</span> addFunctionName(result, "abs");<a name="line.407"></a>
<span class="sourceLineNo">408</span> return result;<a name="line.408"></a>
<span class="sourceLineNo">409</span> }<a name="line.409"></a>
<span class="sourceLineNo">410</span><a name="line.410"></a>
<span class="sourceLineNo">411</span> /**<a name="line.411"></a>
<span class="sourceLineNo">412</span> * @param a<a name="line.412"></a>
<span class="sourceLineNo">413</span> * @return a^*, complex conjugate of a<a name="line.413"></a>
<span class="sourceLineNo">414</span> */<a name="line.414"></a>
<span class="sourceLineNo">415</span> public static Dataset conjugate(final Object a) {<a name="line.415"></a>
<span class="sourceLineNo">416</span> return conjugate(a, null);<a name="line.416"></a>
<span class="sourceLineNo">417</span> }<a name="line.417"></a>
<span class="sourceLineNo">418</span><a name="line.418"></a>
<span class="sourceLineNo">419</span> /**<a name="line.419"></a>
<span class="sourceLineNo">420</span> * @param a<a name="line.420"></a>
<span class="sourceLineNo">421</span> * @param o<a name="line.421"></a>
<span class="sourceLineNo">422</span> * output can be null - in which case, a new dataset is created<a name="line.422"></a>
<span class="sourceLineNo">423</span> * @return a^*, complex conjugate of a<a name="line.423"></a>
<span class="sourceLineNo">424</span> */<a name="line.424"></a>
<span class="sourceLineNo">425</span> public static Dataset conjugate(final Object a, final Dataset o) {<a name="line.425"></a>
<span class="sourceLineNo">426</span> final Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.426"></a>
<span class="sourceLineNo">427</span> int at = da.getDType();<a name="line.427"></a>
<span class="sourceLineNo">428</span> IndexIterator it1 = da.getIterator();<a name="line.428"></a>
<span class="sourceLineNo">429</span><a name="line.429"></a>
<span class="sourceLineNo">430</span> SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true, true, true);<a name="line.430"></a>
<span class="sourceLineNo">431</span> Dataset result = it.getOutput();<a name="line.431"></a>
<span class="sourceLineNo">432</span><a name="line.432"></a>
<span class="sourceLineNo">433</span> switch (at) {<a name="line.433"></a>
<span class="sourceLineNo">434</span> case Dataset.COMPLEX64:<a name="line.434"></a>
<span class="sourceLineNo">435</span> float[] c64data = ((ComplexFloatDataset) result).getData();<a name="line.435"></a>
<span class="sourceLineNo">436</span><a name="line.436"></a>
<span class="sourceLineNo">437</span> for (int i = 0; it1.hasNext();) {<a name="line.437"></a>
<span class="sourceLineNo">438</span> c64data[i++] = (float) da.getElementDoubleAbs(it1.index);<a name="line.438"></a>
<span class="sourceLineNo">439</span> c64data[i++] = (float) -da.getElementDoubleAbs(it1.index + 1);<a name="line.439"></a>
<span class="sourceLineNo">440</span> }<a name="line.440"></a>
<span class="sourceLineNo">441</span> result.setName(Operations.bracketIfNecessary(da.getName()).append("^*").toString());<a name="line.441"></a>
<span class="sourceLineNo">442</span> break;<a name="line.442"></a>
<span class="sourceLineNo">443</span> case Dataset.COMPLEX128:<a name="line.443"></a>
<span class="sourceLineNo">444</span> double[] c128data = ((ComplexDoubleDataset) result).getData();<a name="line.444"></a>
<span class="sourceLineNo">445</span><a name="line.445"></a>
<span class="sourceLineNo">446</span> for (int i = 0; it1.hasNext();) {<a name="line.446"></a>
<span class="sourceLineNo">447</span> c128data[i++] = da.getElementDoubleAbs(it1.index);<a name="line.447"></a>
<span class="sourceLineNo">448</span> c128data[i++] = -da.getElementDoubleAbs(it1.index + 1);<a name="line.448"></a>
<span class="sourceLineNo">449</span> }<a name="line.449"></a>
<span class="sourceLineNo">450</span> result.setName(Operations.bracketIfNecessary(da.getName()).append("^*").toString());<a name="line.450"></a>
<span class="sourceLineNo">451</span> break;<a name="line.451"></a>
<span class="sourceLineNo">452</span> default:<a name="line.452"></a>
<span class="sourceLineNo">453</span> result = da;<a name="line.453"></a>
<span class="sourceLineNo">454</span> }<a name="line.454"></a>
<span class="sourceLineNo">455</span><a name="line.455"></a>
<span class="sourceLineNo">456</span> return result;<a name="line.456"></a>
<span class="sourceLineNo">457</span> }<a name="line.457"></a>
<span class="sourceLineNo">458</span><a name="line.458"></a>
<span class="sourceLineNo">459</span> /**<a name="line.459"></a>
<span class="sourceLineNo">460</span> * @param a<a name="line.460"></a>
<span class="sourceLineNo">461</span> * side of right-angled triangle<a name="line.461"></a>
<span class="sourceLineNo">462</span> * @param b<a name="line.462"></a>
<span class="sourceLineNo">463</span> * side of right-angled triangle<a name="line.463"></a>
<span class="sourceLineNo">464</span> * @return hypotenuse of right-angled triangle: sqrt(a^2 + a^2)<a name="line.464"></a>
<span class="sourceLineNo">465</span> */<a name="line.465"></a>
<span class="sourceLineNo">466</span> public static Dataset hypot(final Object a, final Object b) {<a name="line.466"></a>
<span class="sourceLineNo">467</span> return hypot(a, b, null);<a name="line.467"></a>
<span class="sourceLineNo">468</span> }<a name="line.468"></a>
<span class="sourceLineNo">469</span><a name="line.469"></a>
<span class="sourceLineNo">470</span> /**<a name="line.470"></a>
<span class="sourceLineNo">471</span> * @param a<a name="line.471"></a>
<span class="sourceLineNo">472</span> * side of right-angled triangle<a name="line.472"></a>
<span class="sourceLineNo">473</span> * @param b<a name="line.473"></a>
<span class="sourceLineNo">474</span> * side of right-angled triangle<a name="line.474"></a>
<span class="sourceLineNo">475</span> * @param o<a name="line.475"></a>
<span class="sourceLineNo">476</span> * output can be null - in which case, a new dataset is created<a name="line.476"></a>
<span class="sourceLineNo">477</span> * @return hypotenuse of right-angled triangle: sqrt(a^2 + a^2)<a name="line.477"></a>
<span class="sourceLineNo">478</span> */<a name="line.478"></a>
<span class="sourceLineNo">479</span> public static Dataset hypot(final Object a, final Object b, final Dataset o) {<a name="line.479"></a>
<span class="sourceLineNo">480</span> final Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.480"></a>
<span class="sourceLineNo">481</span> final Dataset db = b instanceof Dataset ? (Dataset) b : DatasetFactory.createFromObject(b);<a name="line.481"></a>
<span class="sourceLineNo">482</span><a name="line.482"></a>
<span class="sourceLineNo">483</span> final BroadcastIterator it = BroadcastIterator.createIterator(da, db, o, true);<a name="line.483"></a>
<span class="sourceLineNo">484</span> it.setOutputDouble(true);<a name="line.484"></a>
<span class="sourceLineNo">485</span> final Dataset result = it.getOutput();<a name="line.485"></a>
<span class="sourceLineNo">486</span> final int is = result.getElementsPerItem();<a name="line.486"></a>
<span class="sourceLineNo">487</span> final int as = da.getElementsPerItem();<a name="line.487"></a>
<span class="sourceLineNo">488</span> final int bs = db.getElementsPerItem();<a name="line.488"></a>
<span class="sourceLineNo">489</span> final int dt = result.getDType();<a name="line.489"></a>
<span class="sourceLineNo">490</span> switch (dt) {<a name="line.490"></a>
<span class="sourceLineNo">491</span> case Dataset.BOOL:<a name="line.491"></a>
<span class="sourceLineNo">492</span> boolean[] bdata = ((BooleanDataset) result).getData();<a name="line.492"></a>
<span class="sourceLineNo">493</span><a name="line.493"></a>
<span class="sourceLineNo">494</span> while (it.hasNext()) {<a name="line.494"></a>
<span class="sourceLineNo">495</span> bdata[it.oIndex] = Math.hypot(it.aDouble, it.bDouble) != 0;<a name="line.495"></a>
<span class="sourceLineNo">496</span> }<a name="line.496"></a>
<span class="sourceLineNo">497</span> break;<a name="line.497"></a>
<span class="sourceLineNo">498</span> case Dataset.INT8:<a name="line.498"></a>
<span class="sourceLineNo">499</span> byte[] i8data = ((ByteDataset) result).getData();<a name="line.499"></a>
<span class="sourceLineNo">500</span><a name="line.500"></a>
<span class="sourceLineNo">501</span> while (it.hasNext()) {<a name="line.501"></a>
<span class="sourceLineNo">502</span> i8data[it.oIndex] = (byte) toLong(Math.hypot(it.aDouble, it.bDouble));<a name="line.502"></a>
<span class="sourceLineNo">503</span> }<a name="line.503"></a>
<span class="sourceLineNo">504</span> break;<a name="line.504"></a>
<span class="sourceLineNo">505</span> case Dataset.INT16:<a name="line.505"></a>
<span class="sourceLineNo">506</span> short[] i16data = ((ShortDataset) result).getData();<a name="line.506"></a>
<span class="sourceLineNo">507</span><a name="line.507"></a>
<span class="sourceLineNo">508</span> while (it.hasNext()) {<a name="line.508"></a>
<span class="sourceLineNo">509</span> i16data[it.oIndex] = (short) toLong(Math.hypot(it.aDouble, it.bDouble));<a name="line.509"></a>
<span class="sourceLineNo">510</span> }<a name="line.510"></a>
<span class="sourceLineNo">511</span> break;<a name="line.511"></a>
<span class="sourceLineNo">512</span> case Dataset.INT32:<a name="line.512"></a>
<span class="sourceLineNo">513</span> int[] i32data = ((IntegerDataset) result).getData();<a name="line.513"></a>
<span class="sourceLineNo">514</span><a name="line.514"></a>
<span class="sourceLineNo">515</span> while (it.hasNext()) {<a name="line.515"></a>
<span class="sourceLineNo">516</span> i32data[it.oIndex] = (int) toLong(Math.hypot(it.aDouble, it.bDouble));<a name="line.516"></a>
<span class="sourceLineNo">517</span> }<a name="line.517"></a>
<span class="sourceLineNo">518</span> break;<a name="line.518"></a>
<span class="sourceLineNo">519</span> case Dataset.INT64:<a name="line.519"></a>
<span class="sourceLineNo">520</span> long[] i64data = ((LongDataset) result).getData();<a name="line.520"></a>
<span class="sourceLineNo">521</span><a name="line.521"></a>
<span class="sourceLineNo">522</span> while (it.hasNext()) {<a name="line.522"></a>
<span class="sourceLineNo">523</span> i64data[it.oIndex] = toLong(Math.hypot(it.aDouble, it.bDouble));<a name="line.523"></a>
<span class="sourceLineNo">524</span> }<a name="line.524"></a>
<span class="sourceLineNo">525</span> break;<a name="line.525"></a>
<span class="sourceLineNo">526</span> case Dataset.FLOAT32:<a name="line.526"></a>
<span class="sourceLineNo">527</span> float[] f32data = ((FloatDataset) result).getData();<a name="line.527"></a>
<span class="sourceLineNo">528</span><a name="line.528"></a>
<span class="sourceLineNo">529</span> while (it.hasNext()) {<a name="line.529"></a>
<span class="sourceLineNo">530</span> f32data[it.oIndex] = (float) Math.hypot(it.aDouble, it.bDouble);<a name="line.530"></a>
<span class="sourceLineNo">531</span> }<a name="line.531"></a>
<span class="sourceLineNo">532</span> break;<a name="line.532"></a>
<span class="sourceLineNo">533</span> case Dataset.FLOAT64:<a name="line.533"></a>
<span class="sourceLineNo">534</span> double[] f64data = ((DoubleDataset) result).getData();<a name="line.534"></a>
<span class="sourceLineNo">535</span><a name="line.535"></a>
<span class="sourceLineNo">536</span> while (it.hasNext()) {<a name="line.536"></a>
<span class="sourceLineNo">537</span> f64data[it.oIndex] = Math.hypot(it.aDouble, it.bDouble);<a name="line.537"></a>
<span class="sourceLineNo">538</span> }<a name="line.538"></a>
<span class="sourceLineNo">539</span> break;<a name="line.539"></a>
<span class="sourceLineNo">540</span> case Dataset.ARRAYINT8:<a name="line.540"></a>
<span class="sourceLineNo">541</span> byte[] ai8data = ((CompoundByteDataset) result).getData();<a name="line.541"></a>
<span class="sourceLineNo">542</span><a name="line.542"></a>
<span class="sourceLineNo">543</span> if (is == 1) {<a name="line.543"></a>
<span class="sourceLineNo">544</span> while (it.hasNext()) {<a name="line.544"></a>
<span class="sourceLineNo">545</span> ai8data[it.oIndex] = (byte) toLong(Math.hypot(it.aDouble, it.bDouble));<a name="line.545"></a>
<span class="sourceLineNo">546</span> }<a name="line.546"></a>
<span class="sourceLineNo">547</span> } else if (as == 1) {<a name="line.547"></a>
<span class="sourceLineNo">548</span> while (it.hasNext()) {<a name="line.548"></a>
<span class="sourceLineNo">549</span> ai8data[it.oIndex] = (byte) toLong(Math.hypot(it.aDouble, it.bDouble));<a name="line.549"></a>
<span class="sourceLineNo">550</span> for (int j = 1; j &lt; is; j++) {<a name="line.550"></a>
<span class="sourceLineNo">551</span> ai8data[it.oIndex<a name="line.551"></a>
<span class="sourceLineNo">552</span> + j] = (byte) toLong(Math.hypot(it.aDouble, db.getElementDoubleAbs(it.bIndex + j)));<a name="line.552"></a>
<span class="sourceLineNo">553</span> }<a name="line.553"></a>
<span class="sourceLineNo">554</span> }<a name="line.554"></a>
<span class="sourceLineNo">555</span> } else if (bs == 1) {<a name="line.555"></a>
<span class="sourceLineNo">556</span> while (it.hasNext()) {<a name="line.556"></a>
<span class="sourceLineNo">557</span> ai8data[it.oIndex] = (byte) toLong(Math.hypot(it.aDouble, it.bDouble));<a name="line.557"></a>
<span class="sourceLineNo">558</span> for (int j = 1; j &lt; is; j++) {<a name="line.558"></a>
<span class="sourceLineNo">559</span> ai8data[it.oIndex<a name="line.559"></a>
<span class="sourceLineNo">560</span> + j] = (byte) toLong(Math.hypot(da.getElementDoubleAbs(it.aIndex + j), it.bDouble));<a name="line.560"></a>
<span class="sourceLineNo">561</span> }<a name="line.561"></a>
<span class="sourceLineNo">562</span> }<a name="line.562"></a>
<span class="sourceLineNo">563</span> } else {<a name="line.563"></a>
<span class="sourceLineNo">564</span> while (it.hasNext()) {<a name="line.564"></a>
<span class="sourceLineNo">565</span> ai8data[it.oIndex] = (byte) toLong(Math.hypot(it.aDouble, it.bDouble));<a name="line.565"></a>
<span class="sourceLineNo">566</span> for (int j = 1; j &lt; is; j++) {<a name="line.566"></a>
<span class="sourceLineNo">567</span> ai8data[it.oIndex + j] = (byte) toLong(Math.hypot(da.getElementDoubleAbs(it.aIndex + j),<a name="line.567"></a>
<span class="sourceLineNo">568</span> db.getElementDoubleAbs(it.bIndex + j)));<a name="line.568"></a>
<span class="sourceLineNo">569</span> }<a name="line.569"></a>
<span class="sourceLineNo">570</span> }<a name="line.570"></a>
<span class="sourceLineNo">571</span> }<a name="line.571"></a>
<span class="sourceLineNo">572</span> break;<a name="line.572"></a>
<span class="sourceLineNo">573</span> case Dataset.ARRAYINT16:<a name="line.573"></a>
<span class="sourceLineNo">574</span> short[] ai16data = ((CompoundShortDataset) result).getData();<a name="line.574"></a>
<span class="sourceLineNo">575</span><a name="line.575"></a>
<span class="sourceLineNo">576</span> if (is == 1) {<a name="line.576"></a>
<span class="sourceLineNo">577</span> while (it.hasNext()) {<a name="line.577"></a>
<span class="sourceLineNo">578</span> ai16data[it.oIndex] = (short) toLong(Math.hypot(it.aDouble, it.bDouble));<a name="line.578"></a>
<span class="sourceLineNo">579</span> }<a name="line.579"></a>
<span class="sourceLineNo">580</span> } else if (as == 1) {<a name="line.580"></a>
<span class="sourceLineNo">581</span> while (it.hasNext()) {<a name="line.581"></a>
<span class="sourceLineNo">582</span> ai16data[it.oIndex] = (short) toLong(Math.hypot(it.aDouble, it.bDouble));<a name="line.582"></a>
<span class="sourceLineNo">583</span> for (int j = 1; j &lt; is; j++) {<a name="line.583"></a>
<span class="sourceLineNo">584</span> ai16data[it.oIndex<a name="line.584"></a>
<span class="sourceLineNo">585</span> + j] = (short) toLong(Math.hypot(it.aDouble, db.getElementDoubleAbs(it.bIndex + j)));<a name="line.585"></a>
<span class="sourceLineNo">586</span> }<a name="line.586"></a>
<span class="sourceLineNo">587</span> }<a name="line.587"></a>
<span class="sourceLineNo">588</span> } else if (bs == 1) {<a name="line.588"></a>
<span class="sourceLineNo">589</span> while (it.hasNext()) {<a name="line.589"></a>
<span class="sourceLineNo">590</span> ai16data[it.oIndex] = (short) toLong(Math.hypot(it.aDouble, it.bDouble));<a name="line.590"></a>
<span class="sourceLineNo">591</span> for (int j = 1; j &lt; is; j++) {<a name="line.591"></a>
<span class="sourceLineNo">592</span> ai16data[it.oIndex<a name="line.592"></a>
<span class="sourceLineNo">593</span> + j] = (short) toLong(Math.hypot(da.getElementDoubleAbs(it.aIndex + j), it.bDouble));<a name="line.593"></a>
<span class="sourceLineNo">594</span> }<a name="line.594"></a>
<span class="sourceLineNo">595</span> }<a name="line.595"></a>
<span class="sourceLineNo">596</span> } else {<a name="line.596"></a>
<span class="sourceLineNo">597</span> while (it.hasNext()) {<a name="line.597"></a>
<span class="sourceLineNo">598</span> ai16data[it.oIndex] = (short) toLong(Math.hypot(it.aDouble, it.bDouble));<a name="line.598"></a>
<span class="sourceLineNo">599</span> for (int j = 1; j &lt; is; j++) {<a name="line.599"></a>
<span class="sourceLineNo">600</span> ai16data[it.oIndex + j] = (short) toLong(Math.hypot(da.getElementDoubleAbs(it.aIndex + j),<a name="line.600"></a>
<span class="sourceLineNo">601</span> db.getElementDoubleAbs(it.bIndex + j)));<a name="line.601"></a>
<span class="sourceLineNo">602</span> }<a name="line.602"></a>
<span class="sourceLineNo">603</span> }<a name="line.603"></a>
<span class="sourceLineNo">604</span> }<a name="line.604"></a>
<span class="sourceLineNo">605</span> break;<a name="line.605"></a>
<span class="sourceLineNo">606</span> case Dataset.ARRAYINT32:<a name="line.606"></a>
<span class="sourceLineNo">607</span> int[] ai32data = ((CompoundIntegerDataset) result).getData();<a name="line.607"></a>
<span class="sourceLineNo">608</span><a name="line.608"></a>
<span class="sourceLineNo">609</span> if (is == 1) {<a name="line.609"></a>
<span class="sourceLineNo">610</span> while (it.hasNext()) {<a name="line.610"></a>
<span class="sourceLineNo">611</span> ai32data[it.oIndex] = (int) toLong(Math.hypot(it.aDouble, it.bDouble));<a name="line.611"></a>
<span class="sourceLineNo">612</span> }<a name="line.612"></a>
<span class="sourceLineNo">613</span> } else if (as == 1) {<a name="line.613"></a>
<span class="sourceLineNo">614</span> while (it.hasNext()) {<a name="line.614"></a>
<span class="sourceLineNo">615</span> ai32data[it.oIndex] = (int) toLong(Math.hypot(it.aDouble, it.bDouble));<a name="line.615"></a>
<span class="sourceLineNo">616</span> for (int j = 1; j &lt; is; j++) {<a name="line.616"></a>
<span class="sourceLineNo">617</span> ai32data[it.oIndex<a name="line.617"></a>
<span class="sourceLineNo">618</span> + j] = (int) toLong(Math.hypot(it.aDouble, db.getElementDoubleAbs(it.bIndex + j)));<a name="line.618"></a>
<span class="sourceLineNo">619</span> }<a name="line.619"></a>
<span class="sourceLineNo">620</span> }<a name="line.620"></a>
<span class="sourceLineNo">621</span> } else if (bs == 1) {<a name="line.621"></a>
<span class="sourceLineNo">622</span> while (it.hasNext()) {<a name="line.622"></a>
<span class="sourceLineNo">623</span> ai32data[it.oIndex] = (int) toLong(Math.hypot(it.aDouble, it.bDouble));<a name="line.623"></a>
<span class="sourceLineNo">624</span> for (int j = 1; j &lt; is; j++) {<a name="line.624"></a>
<span class="sourceLineNo">625</span> ai32data[it.oIndex<a name="line.625"></a>
<span class="sourceLineNo">626</span> + j] = (int) toLong(Math.hypot(da.getElementDoubleAbs(it.aIndex + j), it.bDouble));<a name="line.626"></a>
<span class="sourceLineNo">627</span> }<a name="line.627"></a>
<span class="sourceLineNo">628</span> }<a name="line.628"></a>
<span class="sourceLineNo">629</span> } else {<a name="line.629"></a>
<span class="sourceLineNo">630</span> while (it.hasNext()) {<a name="line.630"></a>
<span class="sourceLineNo">631</span> ai32data[it.oIndex] = (int) toLong(Math.hypot(it.aDouble, it.bDouble));<a name="line.631"></a>
<span class="sourceLineNo">632</span> for (int j = 1; j &lt; is; j++) {<a name="line.632"></a>
<span class="sourceLineNo">633</span> ai32data[it.oIndex + j] = (int) toLong(Math.hypot(da.getElementDoubleAbs(it.aIndex + j),<a name="line.633"></a>
<span class="sourceLineNo">634</span> db.getElementDoubleAbs(it.bIndex + j)));<a name="line.634"></a>
<span class="sourceLineNo">635</span> }<a name="line.635"></a>
<span class="sourceLineNo">636</span> }<a name="line.636"></a>
<span class="sourceLineNo">637</span> }<a name="line.637"></a>
<span class="sourceLineNo">638</span> break;<a name="line.638"></a>
<span class="sourceLineNo">639</span> case Dataset.ARRAYINT64:<a name="line.639"></a>
<span class="sourceLineNo">640</span> long[] ai64data = ((CompoundLongDataset) result).getData();<a name="line.640"></a>
<span class="sourceLineNo">641</span><a name="line.641"></a>
<span class="sourceLineNo">642</span> if (is == 1) {<a name="line.642"></a>
<span class="sourceLineNo">643</span> while (it.hasNext()) {<a name="line.643"></a>
<span class="sourceLineNo">644</span> ai64data[it.oIndex] = toLong(Math.hypot(it.aDouble, it.bDouble));<a name="line.644"></a>
<span class="sourceLineNo">645</span> }<a name="line.645"></a>
<span class="sourceLineNo">646</span> } else if (as == 1) {<a name="line.646"></a>
<span class="sourceLineNo">647</span> while (it.hasNext()) {<a name="line.647"></a>
<span class="sourceLineNo">648</span> ai64data[it.oIndex] = toLong(Math.hypot(it.aDouble, it.bDouble));<a name="line.648"></a>
<span class="sourceLineNo">649</span> for (int j = 1; j &lt; is; j++) {<a name="line.649"></a>
<span class="sourceLineNo">650</span> ai64data[it.oIndex + j] = toLong(Math.hypot(it.aDouble, db.getElementDoubleAbs(it.bIndex + j)));<a name="line.650"></a>
<span class="sourceLineNo">651</span> }<a name="line.651"></a>
<span class="sourceLineNo">652</span> }<a name="line.652"></a>
<span class="sourceLineNo">653</span> } else if (bs == 1) {<a name="line.653"></a>
<span class="sourceLineNo">654</span> while (it.hasNext()) {<a name="line.654"></a>
<span class="sourceLineNo">655</span> ai64data[it.oIndex] = toLong(Math.hypot(it.aDouble, it.bDouble));<a name="line.655"></a>
<span class="sourceLineNo">656</span> for (int j = 1; j &lt; is; j++) {<a name="line.656"></a>
<span class="sourceLineNo">657</span> ai64data[it.oIndex + j] = toLong(Math.hypot(da.getElementDoubleAbs(it.aIndex + j), it.bDouble));<a name="line.657"></a>
<span class="sourceLineNo">658</span> }<a name="line.658"></a>
<span class="sourceLineNo">659</span> }<a name="line.659"></a>
<span class="sourceLineNo">660</span> } else {<a name="line.660"></a>
<span class="sourceLineNo">661</span> while (it.hasNext()) {<a name="line.661"></a>
<span class="sourceLineNo">662</span> ai64data[it.oIndex] = toLong(Math.hypot(it.aDouble, it.bDouble));<a name="line.662"></a>
<span class="sourceLineNo">663</span> for (int j = 1; j &lt; is; j++) {<a name="line.663"></a>
<span class="sourceLineNo">664</span> ai64data[it.oIndex + j] = toLong(Math.hypot(da.getElementDoubleAbs(it.aIndex + j),<a name="line.664"></a>
<span class="sourceLineNo">665</span> db.getElementDoubleAbs(it.bIndex + j)));<a name="line.665"></a>
<span class="sourceLineNo">666</span> }<a name="line.666"></a>
<span class="sourceLineNo">667</span> }<a name="line.667"></a>
<span class="sourceLineNo">668</span> }<a name="line.668"></a>
<span class="sourceLineNo">669</span> break;<a name="line.669"></a>
<span class="sourceLineNo">670</span> case Dataset.ARRAYFLOAT32:<a name="line.670"></a>
<span class="sourceLineNo">671</span> float[] a32data = ((CompoundFloatDataset) result).getData();<a name="line.671"></a>
<span class="sourceLineNo">672</span><a name="line.672"></a>
<span class="sourceLineNo">673</span> if (is == 1) {<a name="line.673"></a>
<span class="sourceLineNo">674</span> while (it.hasNext()) {<a name="line.674"></a>
<span class="sourceLineNo">675</span> a32data[it.oIndex] = (float) Math.hypot(it.aDouble, it.bDouble);<a name="line.675"></a>
<span class="sourceLineNo">676</span> }<a name="line.676"></a>
<span class="sourceLineNo">677</span> } else if (as == 1) {<a name="line.677"></a>
<span class="sourceLineNo">678</span> while (it.hasNext()) {<a name="line.678"></a>
<span class="sourceLineNo">679</span> a32data[it.oIndex] = (float) Math.hypot(it.aDouble, it.bDouble);<a name="line.679"></a>
<span class="sourceLineNo">680</span> for (int j = 1; j &lt; is; j++) {<a name="line.680"></a>
<span class="sourceLineNo">681</span> a32data[it.oIndex + j] = (float) Math.hypot(it.aDouble, db.getElementDoubleAbs(it.bIndex + j));<a name="line.681"></a>
<span class="sourceLineNo">682</span> }<a name="line.682"></a>
<span class="sourceLineNo">683</span> }<a name="line.683"></a>
<span class="sourceLineNo">684</span> } else if (bs == 1) {<a name="line.684"></a>
<span class="sourceLineNo">685</span> while (it.hasNext()) {<a name="line.685"></a>
<span class="sourceLineNo">686</span> a32data[it.oIndex] = (float) Math.hypot(it.aDouble, it.bDouble);<a name="line.686"></a>
<span class="sourceLineNo">687</span> for (int j = 1; j &lt; is; j++) {<a name="line.687"></a>
<span class="sourceLineNo">688</span> a32data[it.oIndex + j] = (float) Math.hypot(da.getElementDoubleAbs(it.aIndex + j), it.bDouble);<a name="line.688"></a>
<span class="sourceLineNo">689</span> }<a name="line.689"></a>
<span class="sourceLineNo">690</span> }<a name="line.690"></a>
<span class="sourceLineNo">691</span> } else {<a name="line.691"></a>
<span class="sourceLineNo">692</span> while (it.hasNext()) {<a name="line.692"></a>
<span class="sourceLineNo">693</span> a32data[it.oIndex] = (float) Math.hypot(it.aDouble, it.bDouble);<a name="line.693"></a>
<span class="sourceLineNo">694</span> for (int j = 1; j &lt; is; j++) {<a name="line.694"></a>
<span class="sourceLineNo">695</span> a32data[it.oIndex + j] = (float) Math.hypot(da.getElementDoubleAbs(it.aIndex + j),<a name="line.695"></a>
<span class="sourceLineNo">696</span> db.getElementDoubleAbs(it.bIndex + j));<a name="line.696"></a>
<span class="sourceLineNo">697</span> }<a name="line.697"></a>
<span class="sourceLineNo">698</span> }<a name="line.698"></a>
<span class="sourceLineNo">699</span> }<a name="line.699"></a>
<span class="sourceLineNo">700</span> break;<a name="line.700"></a>
<span class="sourceLineNo">701</span> case Dataset.ARRAYFLOAT64:<a name="line.701"></a>
<span class="sourceLineNo">702</span> double[] a64data = ((CompoundDoubleDataset) result).getData();<a name="line.702"></a>
<span class="sourceLineNo">703</span><a name="line.703"></a>
<span class="sourceLineNo">704</span> if (is == 1) {<a name="line.704"></a>
<span class="sourceLineNo">705</span> while (it.hasNext()) {<a name="line.705"></a>
<span class="sourceLineNo">706</span> a64data[it.oIndex] = Math.hypot(it.aDouble, it.bDouble);<a name="line.706"></a>
<span class="sourceLineNo">707</span> }<a name="line.707"></a>
<span class="sourceLineNo">708</span> } else if (as == 1) {<a name="line.708"></a>
<span class="sourceLineNo">709</span> while (it.hasNext()) {<a name="line.709"></a>
<span class="sourceLineNo">710</span> a64data[it.oIndex] = Math.hypot(it.aDouble, it.bDouble);<a name="line.710"></a>
<span class="sourceLineNo">711</span> for (int j = 1; j &lt; is; j++) {<a name="line.711"></a>
<span class="sourceLineNo">712</span> a64data[it.oIndex + j] = Math.hypot(it.aDouble, db.getElementDoubleAbs(it.bIndex + j));<a name="line.712"></a>
<span class="sourceLineNo">713</span> }<a name="line.713"></a>
<span class="sourceLineNo">714</span> }<a name="line.714"></a>
<span class="sourceLineNo">715</span> } else if (bs == 1) {<a name="line.715"></a>
<span class="sourceLineNo">716</span> while (it.hasNext()) {<a name="line.716"></a>
<span class="sourceLineNo">717</span> a64data[it.oIndex] = Math.hypot(it.aDouble, it.bDouble);<a name="line.717"></a>
<span class="sourceLineNo">718</span> for (int j = 1; j &lt; is; j++) {<a name="line.718"></a>
<span class="sourceLineNo">719</span> a64data[it.oIndex + j] = Math.hypot(da.getElementDoubleAbs(it.aIndex + j), it.bDouble);<a name="line.719"></a>
<span class="sourceLineNo">720</span> }<a name="line.720"></a>
<span class="sourceLineNo">721</span> }<a name="line.721"></a>
<span class="sourceLineNo">722</span> } else {<a name="line.722"></a>
<span class="sourceLineNo">723</span> while (it.hasNext()) {<a name="line.723"></a>
<span class="sourceLineNo">724</span> a64data[it.oIndex] = Math.hypot(it.aDouble, it.bDouble);<a name="line.724"></a>
<span class="sourceLineNo">725</span> for (int j = 1; j &lt; is; j++) {<a name="line.725"></a>
<span class="sourceLineNo">726</span> a64data[it.oIndex + j] = Math.hypot(da.getElementDoubleAbs(it.aIndex + j),<a name="line.726"></a>
<span class="sourceLineNo">727</span> db.getElementDoubleAbs(it.bIndex + j));<a name="line.727"></a>
<span class="sourceLineNo">728</span> }<a name="line.728"></a>
<span class="sourceLineNo">729</span> }<a name="line.729"></a>
<span class="sourceLineNo">730</span> }<a name="line.730"></a>
<span class="sourceLineNo">731</span> break;<a name="line.731"></a>
<span class="sourceLineNo">732</span> default:<a name="line.732"></a>
<span class="sourceLineNo">733</span> throw new UnsupportedOperationException("hypot does not support this dataset type");<a name="line.733"></a>
<span class="sourceLineNo">734</span> }<a name="line.734"></a>
<span class="sourceLineNo">735</span><a name="line.735"></a>
<span class="sourceLineNo">736</span> addFunctionName(da, db, result, "hypot");<a name="line.736"></a>
<span class="sourceLineNo">737</span><a name="line.737"></a>
<span class="sourceLineNo">738</span> return result;<a name="line.738"></a>
<span class="sourceLineNo">739</span> }<a name="line.739"></a>
<span class="sourceLineNo">740</span><a name="line.740"></a>
<span class="sourceLineNo">741</span> /**<a name="line.741"></a>
<span class="sourceLineNo">742</span> * @param a<a name="line.742"></a>
<span class="sourceLineNo">743</span> * opposite side of right-angled triangle<a name="line.743"></a>
<span class="sourceLineNo">744</span> * @param b<a name="line.744"></a>
<span class="sourceLineNo">745</span> * adjacent side of right-angled triangle<a name="line.745"></a>
<span class="sourceLineNo">746</span> * @return angle of triangle: atan(b/a)<a name="line.746"></a>
<span class="sourceLineNo">747</span> */<a name="line.747"></a>
<span class="sourceLineNo">748</span> public static Dataset arctan2(final Object a, final Object b) {<a name="line.748"></a>
<span class="sourceLineNo">749</span> return arctan2(a, b, null);<a name="line.749"></a>
<span class="sourceLineNo">750</span> }<a name="line.750"></a>
<span class="sourceLineNo">751</span><a name="line.751"></a>
<span class="sourceLineNo">752</span> /**<a name="line.752"></a>
<span class="sourceLineNo">753</span> * @param a<a name="line.753"></a>
<span class="sourceLineNo">754</span> * opposite side of right-angled triangle<a name="line.754"></a>
<span class="sourceLineNo">755</span> * @param b<a name="line.755"></a>
<span class="sourceLineNo">756</span> * adjacent side of right-angled triangle<a name="line.756"></a>
<span class="sourceLineNo">757</span> * @param o<a name="line.757"></a>
<span class="sourceLineNo">758</span> * output can be null - in which case, a new dataset is created<a name="line.758"></a>
<span class="sourceLineNo">759</span> * @return angle of triangle: atan(b/a)<a name="line.759"></a>
<span class="sourceLineNo">760</span> */<a name="line.760"></a>
<span class="sourceLineNo">761</span> public static Dataset arctan2(final Object a, final Object b, final Dataset o) {<a name="line.761"></a>
<span class="sourceLineNo">762</span> final Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.762"></a>
<span class="sourceLineNo">763</span> final Dataset db = b instanceof Dataset ? (Dataset) b : DatasetFactory.createFromObject(b);<a name="line.763"></a>
<span class="sourceLineNo">764</span><a name="line.764"></a>
<span class="sourceLineNo">765</span> final BroadcastIterator it = BroadcastIterator.createIterator(da, db, o, true);<a name="line.765"></a>
<span class="sourceLineNo">766</span> it.setOutputDouble(true);<a name="line.766"></a>
<span class="sourceLineNo">767</span> final Dataset result = it.getOutput();<a name="line.767"></a>
<span class="sourceLineNo">768</span> final int is = result.getElementsPerItem();<a name="line.768"></a>
<span class="sourceLineNo">769</span> final int as = da.getElementsPerItem();<a name="line.769"></a>
<span class="sourceLineNo">770</span> final int bs = db.getElementsPerItem();<a name="line.770"></a>
<span class="sourceLineNo">771</span> final int dt = result.getDType();<a name="line.771"></a>
<span class="sourceLineNo">772</span> switch (dt) {<a name="line.772"></a>
<span class="sourceLineNo">773</span> case Dataset.BOOL:<a name="line.773"></a>
<span class="sourceLineNo">774</span> boolean[] bdata = ((BooleanDataset) result).getData();<a name="line.774"></a>
<span class="sourceLineNo">775</span><a name="line.775"></a>
<span class="sourceLineNo">776</span> while (it.hasNext()) {<a name="line.776"></a>
<span class="sourceLineNo">777</span> bdata[it.oIndex] = Math.atan2(it.aDouble, it.bDouble) != 0;<a name="line.777"></a>
<span class="sourceLineNo">778</span> }<a name="line.778"></a>
<span class="sourceLineNo">779</span> break;<a name="line.779"></a>
<span class="sourceLineNo">780</span> case Dataset.INT8:<a name="line.780"></a>
<span class="sourceLineNo">781</span> byte[] i8data = ((ByteDataset) result).getData();<a name="line.781"></a>
<span class="sourceLineNo">782</span><a name="line.782"></a>
<span class="sourceLineNo">783</span> while (it.hasNext()) {<a name="line.783"></a>
<span class="sourceLineNo">784</span> i8data[it.oIndex] = (byte) toLong(Math.atan2(it.aDouble, it.bDouble));<a name="line.784"></a>
<span class="sourceLineNo">785</span> }<a name="line.785"></a>
<span class="sourceLineNo">786</span> break;<a name="line.786"></a>
<span class="sourceLineNo">787</span> case Dataset.INT16:<a name="line.787"></a>
<span class="sourceLineNo">788</span> short[] i16data = ((ShortDataset) result).getData();<a name="line.788"></a>
<span class="sourceLineNo">789</span><a name="line.789"></a>
<span class="sourceLineNo">790</span> while (it.hasNext()) {<a name="line.790"></a>
<span class="sourceLineNo">791</span> i16data[it.oIndex] = (short) toLong(Math.atan2(it.aDouble, it.bDouble));<a name="line.791"></a>
<span class="sourceLineNo">792</span> }<a name="line.792"></a>
<span class="sourceLineNo">793</span> break;<a name="line.793"></a>
<span class="sourceLineNo">794</span> case Dataset.INT32:<a name="line.794"></a>
<span class="sourceLineNo">795</span> int[] i32data = ((IntegerDataset) result).getData();<a name="line.795"></a>
<span class="sourceLineNo">796</span><a name="line.796"></a>
<span class="sourceLineNo">797</span> while (it.hasNext()) {<a name="line.797"></a>
<span class="sourceLineNo">798</span> i32data[it.oIndex] = (int) toLong(Math.atan2(it.aDouble, it.bDouble));<a name="line.798"></a>
<span class="sourceLineNo">799</span> }<a name="line.799"></a>
<span class="sourceLineNo">800</span> break;<a name="line.800"></a>
<span class="sourceLineNo">801</span> case Dataset.INT64:<a name="line.801"></a>
<span class="sourceLineNo">802</span> long[] i64data = ((LongDataset) result).getData();<a name="line.802"></a>
<span class="sourceLineNo">803</span><a name="line.803"></a>
<span class="sourceLineNo">804</span> while (it.hasNext()) {<a name="line.804"></a>
<span class="sourceLineNo">805</span> i64data[it.oIndex] = toLong(Math.atan2(it.aDouble, it.bDouble));<a name="line.805"></a>
<span class="sourceLineNo">806</span> }<a name="line.806"></a>
<span class="sourceLineNo">807</span> break;<a name="line.807"></a>
<span class="sourceLineNo">808</span> case Dataset.FLOAT32:<a name="line.808"></a>
<span class="sourceLineNo">809</span> float[] f32data = ((FloatDataset) result).getData();<a name="line.809"></a>
<span class="sourceLineNo">810</span><a name="line.810"></a>
<span class="sourceLineNo">811</span> while (it.hasNext()) {<a name="line.811"></a>
<span class="sourceLineNo">812</span> f32data[it.oIndex] = (float) Math.atan2(it.aDouble, it.bDouble);<a name="line.812"></a>
<span class="sourceLineNo">813</span> }<a name="line.813"></a>
<span class="sourceLineNo">814</span> break;<a name="line.814"></a>
<span class="sourceLineNo">815</span> case Dataset.FLOAT64:<a name="line.815"></a>
<span class="sourceLineNo">816</span> double[] f64data = ((DoubleDataset) result).getData();<a name="line.816"></a>
<span class="sourceLineNo">817</span><a name="line.817"></a>
<span class="sourceLineNo">818</span> while (it.hasNext()) {<a name="line.818"></a>
<span class="sourceLineNo">819</span> f64data[it.oIndex] = Math.atan2(it.aDouble, it.bDouble);<a name="line.819"></a>
<span class="sourceLineNo">820</span> }<a name="line.820"></a>
<span class="sourceLineNo">821</span> break;<a name="line.821"></a>
<span class="sourceLineNo">822</span> case Dataset.ARRAYINT8:<a name="line.822"></a>
<span class="sourceLineNo">823</span> byte[] ai8data = ((CompoundByteDataset) result).getData();<a name="line.823"></a>
<span class="sourceLineNo">824</span><a name="line.824"></a>
<span class="sourceLineNo">825</span> if (is == 1) {<a name="line.825"></a>
<span class="sourceLineNo">826</span> while (it.hasNext()) {<a name="line.826"></a>
<span class="sourceLineNo">827</span> ai8data[it.oIndex] = (byte) toLong(Math.atan2(it.aDouble, it.bDouble));<a name="line.827"></a>
<span class="sourceLineNo">828</span> }<a name="line.828"></a>
<span class="sourceLineNo">829</span> } else if (as == 1) {<a name="line.829"></a>
<span class="sourceLineNo">830</span> while (it.hasNext()) {<a name="line.830"></a>
<span class="sourceLineNo">831</span> ai8data[it.oIndex] = (byte) toLong(Math.atan2(it.aDouble, it.bDouble));<a name="line.831"></a>
<span class="sourceLineNo">832</span> for (int j = 1; j &lt; is; j++) {<a name="line.832"></a>
<span class="sourceLineNo">833</span> ai8data[it.oIndex<a name="line.833"></a>
<span class="sourceLineNo">834</span> + j] = (byte) toLong(Math.atan2(it.aDouble, db.getElementDoubleAbs(it.bIndex + j)));<a name="line.834"></a>
<span class="sourceLineNo">835</span> }<a name="line.835"></a>
<span class="sourceLineNo">836</span> }<a name="line.836"></a>
<span class="sourceLineNo">837</span> } else if (bs == 1) {<a name="line.837"></a>
<span class="sourceLineNo">838</span> while (it.hasNext()) {<a name="line.838"></a>
<span class="sourceLineNo">839</span> ai8data[it.oIndex] = (byte) toLong(Math.atan2(it.aDouble, it.bDouble));<a name="line.839"></a>
<span class="sourceLineNo">840</span> for (int j = 1; j &lt; is; j++) {<a name="line.840"></a>
<span class="sourceLineNo">841</span> ai8data[it.oIndex<a name="line.841"></a>
<span class="sourceLineNo">842</span> + j] = (byte) toLong(Math.atan2(da.getElementDoubleAbs(it.aIndex + j), it.bDouble));<a name="line.842"></a>
<span class="sourceLineNo">843</span> }<a name="line.843"></a>
<span class="sourceLineNo">844</span> }<a name="line.844"></a>
<span class="sourceLineNo">845</span> } else {<a name="line.845"></a>
<span class="sourceLineNo">846</span> while (it.hasNext()) {<a name="line.846"></a>
<span class="sourceLineNo">847</span> ai8data[it.oIndex] = (byte) toLong(Math.atan2(it.aDouble, it.bDouble));<a name="line.847"></a>
<span class="sourceLineNo">848</span> for (int j = 1; j &lt; is; j++) {<a name="line.848"></a>
<span class="sourceLineNo">849</span> ai8data[it.oIndex + j] = (byte) toLong(Math.atan2(da.getElementDoubleAbs(it.aIndex + j),<a name="line.849"></a>
<span class="sourceLineNo">850</span> db.getElementDoubleAbs(it.bIndex + j)));<a name="line.850"></a>
<span class="sourceLineNo">851</span> }<a name="line.851"></a>
<span class="sourceLineNo">852</span> }<a name="line.852"></a>
<span class="sourceLineNo">853</span> }<a name="line.853"></a>
<span class="sourceLineNo">854</span> break;<a name="line.854"></a>
<span class="sourceLineNo">855</span> case Dataset.ARRAYINT16:<a name="line.855"></a>
<span class="sourceLineNo">856</span> short[] ai16data = ((CompoundShortDataset) result).getData();<a name="line.856"></a>
<span class="sourceLineNo">857</span><a name="line.857"></a>
<span class="sourceLineNo">858</span> if (is == 1) {<a name="line.858"></a>
<span class="sourceLineNo">859</span> while (it.hasNext()) {<a name="line.859"></a>
<span class="sourceLineNo">860</span> ai16data[it.oIndex] = (short) toLong(Math.atan2(it.aDouble, it.bDouble));<a name="line.860"></a>
<span class="sourceLineNo">861</span> }<a name="line.861"></a>
<span class="sourceLineNo">862</span> } else if (as == 1) {<a name="line.862"></a>
<span class="sourceLineNo">863</span> while (it.hasNext()) {<a name="line.863"></a>
<span class="sourceLineNo">864</span> ai16data[it.oIndex] = (short) toLong(Math.atan2(it.aDouble, it.bDouble));<a name="line.864"></a>
<span class="sourceLineNo">865</span> for (int j = 1; j &lt; is; j++) {<a name="line.865"></a>
<span class="sourceLineNo">866</span> ai16data[it.oIndex<a name="line.866"></a>
<span class="sourceLineNo">867</span> + j] = (short) toLong(Math.atan2(it.aDouble, db.getElementDoubleAbs(it.bIndex + j)));<a name="line.867"></a>
<span class="sourceLineNo">868</span> }<a name="line.868"></a>
<span class="sourceLineNo">869</span> }<a name="line.869"></a>
<span class="sourceLineNo">870</span> } else if (bs == 1) {<a name="line.870"></a>
<span class="sourceLineNo">871</span> while (it.hasNext()) {<a name="line.871"></a>
<span class="sourceLineNo">872</span> ai16data[it.oIndex] = (short) toLong(Math.atan2(it.aDouble, it.bDouble));<a name="line.872"></a>
<span class="sourceLineNo">873</span> for (int j = 1; j &lt; is; j++) {<a name="line.873"></a>
<span class="sourceLineNo">874</span> ai16data[it.oIndex<a name="line.874"></a>
<span class="sourceLineNo">875</span> + j] = (short) toLong(Math.atan2(da.getElementDoubleAbs(it.aIndex + j), it.bDouble));<a name="line.875"></a>
<span class="sourceLineNo">876</span> }<a name="line.876"></a>
<span class="sourceLineNo">877</span> }<a name="line.877"></a>
<span class="sourceLineNo">878</span> } else {<a name="line.878"></a>
<span class="sourceLineNo">879</span> while (it.hasNext()) {<a name="line.879"></a>
<span class="sourceLineNo">880</span> ai16data[it.oIndex] = (short) toLong(Math.atan2(it.aDouble, it.bDouble));<a name="line.880"></a>
<span class="sourceLineNo">881</span> for (int j = 1; j &lt; is; j++) {<a name="line.881"></a>
<span class="sourceLineNo">882</span> ai16data[it.oIndex + j] = (short) toLong(Math.atan2(da.getElementDoubleAbs(it.aIndex + j),<a name="line.882"></a>
<span class="sourceLineNo">883</span> db.getElementDoubleAbs(it.bIndex + j)));<a name="line.883"></a>
<span class="sourceLineNo">884</span> }<a name="line.884"></a>
<span class="sourceLineNo">885</span> }<a name="line.885"></a>
<span class="sourceLineNo">886</span> }<a name="line.886"></a>
<span class="sourceLineNo">887</span> break;<a name="line.887"></a>
<span class="sourceLineNo">888</span> case Dataset.ARRAYINT32:<a name="line.888"></a>
<span class="sourceLineNo">889</span> int[] ai32data = ((CompoundIntegerDataset) result).getData();<a name="line.889"></a>
<span class="sourceLineNo">890</span><a name="line.890"></a>
<span class="sourceLineNo">891</span> if (is == 1) {<a name="line.891"></a>
<span class="sourceLineNo">892</span> while (it.hasNext()) {<a name="line.892"></a>
<span class="sourceLineNo">893</span> ai32data[it.oIndex] = (int) toLong(Math.atan2(it.aDouble, it.bDouble));<a name="line.893"></a>
<span class="sourceLineNo">894</span> }<a name="line.894"></a>
<span class="sourceLineNo">895</span> } else if (as == 1) {<a name="line.895"></a>
<span class="sourceLineNo">896</span> while (it.hasNext()) {<a name="line.896"></a>
<span class="sourceLineNo">897</span> ai32data[it.oIndex] = (int) toLong(Math.atan2(it.aDouble, it.bDouble));<a name="line.897"></a>
<span class="sourceLineNo">898</span> for (int j = 1; j &lt; is; j++) {<a name="line.898"></a>
<span class="sourceLineNo">899</span> ai32data[it.oIndex<a name="line.899"></a>
<span class="sourceLineNo">900</span> + j] = (int) toLong(Math.atan2(it.aDouble, db.getElementDoubleAbs(it.bIndex + j)));<a name="line.900"></a>
<span class="sourceLineNo">901</span> }<a name="line.901"></a>
<span class="sourceLineNo">902</span> }<a name="line.902"></a>
<span class="sourceLineNo">903</span> } else if (bs == 1) {<a name="line.903"></a>
<span class="sourceLineNo">904</span> while (it.hasNext()) {<a name="line.904"></a>
<span class="sourceLineNo">905</span> ai32data[it.oIndex] = (int) toLong(Math.atan2(it.aDouble, it.bDouble));<a name="line.905"></a>
<span class="sourceLineNo">906</span> for (int j = 1; j &lt; is; j++) {<a name="line.906"></a>
<span class="sourceLineNo">907</span> ai32data[it.oIndex<a name="line.907"></a>
<span class="sourceLineNo">908</span> + j] = (int) toLong(Math.atan2(da.getElementDoubleAbs(it.aIndex + j), it.bDouble));<a name="line.908"></a>
<span class="sourceLineNo">909</span> }<a name="line.909"></a>
<span class="sourceLineNo">910</span> }<a name="line.910"></a>
<span class="sourceLineNo">911</span> } else {<a name="line.911"></a>
<span class="sourceLineNo">912</span> while (it.hasNext()) {<a name="line.912"></a>
<span class="sourceLineNo">913</span> ai32data[it.oIndex] = (int) toLong(Math.atan2(it.aDouble, it.bDouble));<a name="line.913"></a>
<span class="sourceLineNo">914</span> for (int j = 1; j &lt; is; j++) {<a name="line.914"></a>
<span class="sourceLineNo">915</span> ai32data[it.oIndex + j] = (int) toLong(Math.atan2(da.getElementDoubleAbs(it.aIndex + j),<a name="line.915"></a>
<span class="sourceLineNo">916</span> db.getElementDoubleAbs(it.bIndex + j)));<a name="line.916"></a>
<span class="sourceLineNo">917</span> }<a name="line.917"></a>
<span class="sourceLineNo">918</span> }<a name="line.918"></a>
<span class="sourceLineNo">919</span> }<a name="line.919"></a>
<span class="sourceLineNo">920</span> break;<a name="line.920"></a>
<span class="sourceLineNo">921</span> case Dataset.ARRAYINT64:<a name="line.921"></a>
<span class="sourceLineNo">922</span> long[] ai64data = ((CompoundLongDataset) result).getData();<a name="line.922"></a>
<span class="sourceLineNo">923</span><a name="line.923"></a>
<span class="sourceLineNo">924</span> if (is == 1) {<a name="line.924"></a>
<span class="sourceLineNo">925</span> while (it.hasNext()) {<a name="line.925"></a>
<span class="sourceLineNo">926</span> ai64data[it.oIndex] = toLong(Math.atan2(it.aDouble, it.bDouble));<a name="line.926"></a>
<span class="sourceLineNo">927</span> }<a name="line.927"></a>
<span class="sourceLineNo">928</span> } else if (as == 1) {<a name="line.928"></a>
<span class="sourceLineNo">929</span> while (it.hasNext()) {<a name="line.929"></a>
<span class="sourceLineNo">930</span> ai64data[it.oIndex] = toLong(Math.atan2(it.aDouble, it.bDouble));<a name="line.930"></a>
<span class="sourceLineNo">931</span> for (int j = 1; j &lt; is; j++) {<a name="line.931"></a>
<span class="sourceLineNo">932</span> ai64data[it.oIndex + j] = toLong(Math.atan2(it.aDouble, db.getElementDoubleAbs(it.bIndex + j)));<a name="line.932"></a>
<span class="sourceLineNo">933</span> }<a name="line.933"></a>
<span class="sourceLineNo">934</span> }<a name="line.934"></a>
<span class="sourceLineNo">935</span> } else if (bs == 1) {<a name="line.935"></a>
<span class="sourceLineNo">936</span> while (it.hasNext()) {<a name="line.936"></a>
<span class="sourceLineNo">937</span> ai64data[it.oIndex] = toLong(Math.atan2(it.aDouble, it.bDouble));<a name="line.937"></a>
<span class="sourceLineNo">938</span> for (int j = 1; j &lt; is; j++) {<a name="line.938"></a>
<span class="sourceLineNo">939</span> ai64data[it.oIndex + j] = toLong(Math.atan2(da.getElementDoubleAbs(it.aIndex + j), it.bDouble));<a name="line.939"></a>
<span class="sourceLineNo">940</span> }<a name="line.940"></a>
<span class="sourceLineNo">941</span> }<a name="line.941"></a>
<span class="sourceLineNo">942</span> } else {<a name="line.942"></a>
<span class="sourceLineNo">943</span> while (it.hasNext()) {<a name="line.943"></a>
<span class="sourceLineNo">944</span> ai64data[it.oIndex] = toLong(Math.atan2(it.aDouble, it.bDouble));<a name="line.944"></a>
<span class="sourceLineNo">945</span> for (int j = 1; j &lt; is; j++) {<a name="line.945"></a>
<span class="sourceLineNo">946</span> ai64data[it.oIndex + j] = toLong(Math.atan2(da.getElementDoubleAbs(it.aIndex + j),<a name="line.946"></a>
<span class="sourceLineNo">947</span> db.getElementDoubleAbs(it.bIndex + j)));<a name="line.947"></a>
<span class="sourceLineNo">948</span> }<a name="line.948"></a>
<span class="sourceLineNo">949</span> }<a name="line.949"></a>
<span class="sourceLineNo">950</span> }<a name="line.950"></a>
<span class="sourceLineNo">951</span> break;<a name="line.951"></a>
<span class="sourceLineNo">952</span> case Dataset.ARRAYFLOAT32:<a name="line.952"></a>
<span class="sourceLineNo">953</span> float[] a32data = ((CompoundFloatDataset) result).getData();<a name="line.953"></a>
<span class="sourceLineNo">954</span><a name="line.954"></a>
<span class="sourceLineNo">955</span> if (is == 1) {<a name="line.955"></a>
<span class="sourceLineNo">956</span> while (it.hasNext()) {<a name="line.956"></a>
<span class="sourceLineNo">957</span> a32data[it.oIndex] = (float) Math.atan2(it.aDouble, it.bDouble);<a name="line.957"></a>
<span class="sourceLineNo">958</span> }<a name="line.958"></a>
<span class="sourceLineNo">959</span> } else if (as == 1) {<a name="line.959"></a>
<span class="sourceLineNo">960</span> while (it.hasNext()) {<a name="line.960"></a>
<span class="sourceLineNo">961</span> a32data[it.oIndex] = (float) Math.atan2(it.aDouble, it.bDouble);<a name="line.961"></a>
<span class="sourceLineNo">962</span> for (int j = 1; j &lt; is; j++) {<a name="line.962"></a>
<span class="sourceLineNo">963</span> a32data[it.oIndex + j] = (float) Math.atan2(it.aDouble, db.getElementDoubleAbs(it.bIndex + j));<a name="line.963"></a>
<span class="sourceLineNo">964</span> }<a name="line.964"></a>
<span class="sourceLineNo">965</span> }<a name="line.965"></a>
<span class="sourceLineNo">966</span> } else if (bs == 1) {<a name="line.966"></a>
<span class="sourceLineNo">967</span> while (it.hasNext()) {<a name="line.967"></a>
<span class="sourceLineNo">968</span> a32data[it.oIndex] = (float) Math.atan2(it.aDouble, it.bDouble);<a name="line.968"></a>
<span class="sourceLineNo">969</span> for (int j = 1; j &lt; is; j++) {<a name="line.969"></a>
<span class="sourceLineNo">970</span> a32data[it.oIndex + j] = (float) Math.atan2(da.getElementDoubleAbs(it.aIndex + j), it.bDouble);<a name="line.970"></a>
<span class="sourceLineNo">971</span> }<a name="line.971"></a>
<span class="sourceLineNo">972</span> }<a name="line.972"></a>
<span class="sourceLineNo">973</span> } else {<a name="line.973"></a>
<span class="sourceLineNo">974</span> while (it.hasNext()) {<a name="line.974"></a>
<span class="sourceLineNo">975</span> a32data[it.oIndex] = (float) Math.atan2(it.aDouble, it.bDouble);<a name="line.975"></a>
<span class="sourceLineNo">976</span> for (int j = 1; j &lt; is; j++) {<a name="line.976"></a>
<span class="sourceLineNo">977</span> a32data[it.oIndex + j] = (float) Math.atan2(da.getElementDoubleAbs(it.aIndex + j),<a name="line.977"></a>
<span class="sourceLineNo">978</span> db.getElementDoubleAbs(it.bIndex + j));<a name="line.978"></a>
<span class="sourceLineNo">979</span> }<a name="line.979"></a>
<span class="sourceLineNo">980</span> }<a name="line.980"></a>
<span class="sourceLineNo">981</span> }<a name="line.981"></a>
<span class="sourceLineNo">982</span> break;<a name="line.982"></a>
<span class="sourceLineNo">983</span> case Dataset.ARRAYFLOAT64:<a name="line.983"></a>
<span class="sourceLineNo">984</span> double[] a64data = ((CompoundDoubleDataset) result).getData();<a name="line.984"></a>
<span class="sourceLineNo">985</span><a name="line.985"></a>
<span class="sourceLineNo">986</span> if (is == 1) {<a name="line.986"></a>
<span class="sourceLineNo">987</span> while (it.hasNext()) {<a name="line.987"></a>
<span class="sourceLineNo">988</span> a64data[it.oIndex] = Math.atan2(it.aDouble, it.bDouble);<a name="line.988"></a>
<span class="sourceLineNo">989</span> }<a name="line.989"></a>
<span class="sourceLineNo">990</span> } else if (as == 1) {<a name="line.990"></a>
<span class="sourceLineNo">991</span> while (it.hasNext()) {<a name="line.991"></a>
<span class="sourceLineNo">992</span> a64data[it.oIndex] = Math.atan2(it.aDouble, it.bDouble);<a name="line.992"></a>
<span class="sourceLineNo">993</span> for (int j = 1; j &lt; is; j++) {<a name="line.993"></a>
<span class="sourceLineNo">994</span> a64data[it.oIndex + j] = Math.atan2(it.aDouble, db.getElementDoubleAbs(it.bIndex + j));<a name="line.994"></a>
<span class="sourceLineNo">995</span> }<a name="line.995"></a>
<span class="sourceLineNo">996</span> }<a name="line.996"></a>
<span class="sourceLineNo">997</span> } else if (bs == 1) {<a name="line.997"></a>
<span class="sourceLineNo">998</span> while (it.hasNext()) {<a name="line.998"></a>
<span class="sourceLineNo">999</span> a64data[it.oIndex] = Math.atan2(it.aDouble, it.bDouble);<a name="line.999"></a>
<span class="sourceLineNo">1000</span> for (int j = 1; j &lt; is; j++) {<a name="line.1000"></a>
<span class="sourceLineNo">1001</span> a64data[it.oIndex + j] = Math.atan2(da.getElementDoubleAbs(it.aIndex + j), it.bDouble);<a name="line.1001"></a>
<span class="sourceLineNo">1002</span> }<a name="line.1002"></a>
<span class="sourceLineNo">1003</span> }<a name="line.1003"></a>
<span class="sourceLineNo">1004</span> } else {<a name="line.1004"></a>
<span class="sourceLineNo">1005</span> while (it.hasNext()) {<a name="line.1005"></a>
<span class="sourceLineNo">1006</span> a64data[it.oIndex] = Math.atan2(it.aDouble, it.bDouble);<a name="line.1006"></a>
<span class="sourceLineNo">1007</span> for (int j = 1; j &lt; is; j++) {<a name="line.1007"></a>
<span class="sourceLineNo">1008</span> a64data[it.oIndex + j] = Math.atan2(da.getElementDoubleAbs(it.aIndex + j),<a name="line.1008"></a>
<span class="sourceLineNo">1009</span> db.getElementDoubleAbs(it.bIndex + j));<a name="line.1009"></a>
<span class="sourceLineNo">1010</span> }<a name="line.1010"></a>
<span class="sourceLineNo">1011</span> }<a name="line.1011"></a>
<span class="sourceLineNo">1012</span> }<a name="line.1012"></a>
<span class="sourceLineNo">1013</span> break;<a name="line.1013"></a>
<span class="sourceLineNo">1014</span> default:<a name="line.1014"></a>
<span class="sourceLineNo">1015</span> throw new UnsupportedOperationException("atan2 does not support multiple-element dataset");<a name="line.1015"></a>
<span class="sourceLineNo">1016</span> }<a name="line.1016"></a>
<span class="sourceLineNo">1017</span><a name="line.1017"></a>
<span class="sourceLineNo">1018</span> addFunctionName(da, db, result, "atan2");<a name="line.1018"></a>
<span class="sourceLineNo">1019</span><a name="line.1019"></a>
<span class="sourceLineNo">1020</span> return result;<a name="line.1020"></a>
<span class="sourceLineNo">1021</span> }<a name="line.1021"></a>
<span class="sourceLineNo">1022</span><a name="line.1022"></a>
<span class="sourceLineNo">1023</span> /**<a name="line.1023"></a>
<span class="sourceLineNo">1024</span> * Create a dataset of the arguments from a complex dataset<a name="line.1024"></a>
<span class="sourceLineNo">1025</span> * <a name="line.1025"></a>
<span class="sourceLineNo">1026</span> * @param a<a name="line.1026"></a>
<span class="sourceLineNo">1027</span> * @return dataset of angles in radians<a name="line.1027"></a>
<span class="sourceLineNo">1028</span> */<a name="line.1028"></a>
<span class="sourceLineNo">1029</span> public static Dataset angle(final Object a) {<a name="line.1029"></a>
<span class="sourceLineNo">1030</span> return angle(a, false, null);<a name="line.1030"></a>
<span class="sourceLineNo">1031</span> }<a name="line.1031"></a>
<span class="sourceLineNo">1032</span><a name="line.1032"></a>
<span class="sourceLineNo">1033</span> /**<a name="line.1033"></a>
<span class="sourceLineNo">1034</span> * Create a dataset of the arguments from a complex dataset<a name="line.1034"></a>
<span class="sourceLineNo">1035</span> * <a name="line.1035"></a>
<span class="sourceLineNo">1036</span> * @param a<a name="line.1036"></a>
<span class="sourceLineNo">1037</span> * @param inDegrees<a name="line.1037"></a>
<span class="sourceLineNo">1038</span> * if true then return angles in degrees else in radians<a name="line.1038"></a>
<span class="sourceLineNo">1039</span> * @return dataset of angles<a name="line.1039"></a>
<span class="sourceLineNo">1040</span> */<a name="line.1040"></a>
<span class="sourceLineNo">1041</span> public static Dataset angle(final Object a, final boolean inDegrees) {<a name="line.1041"></a>
<span class="sourceLineNo">1042</span> return angle(a, inDegrees, null);<a name="line.1042"></a>
<span class="sourceLineNo">1043</span> }<a name="line.1043"></a>
<span class="sourceLineNo">1044</span><a name="line.1044"></a>
<span class="sourceLineNo">1045</span> /**<a name="line.1045"></a>
<span class="sourceLineNo">1046</span> * Create a dataset of the arguments from a complex dataset<a name="line.1046"></a>
<span class="sourceLineNo">1047</span> * <a name="line.1047"></a>
<span class="sourceLineNo">1048</span> * @param a<a name="line.1048"></a>
<span class="sourceLineNo">1049</span> * @param o<a name="line.1049"></a>
<span class="sourceLineNo">1050</span> * output can be null - in which case, a new dataset is created<a name="line.1050"></a>
<span class="sourceLineNo">1051</span> * @return dataset of angles in radians<a name="line.1051"></a>
<span class="sourceLineNo">1052</span> */<a name="line.1052"></a>
<span class="sourceLineNo">1053</span> public static Dataset angle(final Object a, final Dataset o) {<a name="line.1053"></a>
<span class="sourceLineNo">1054</span> return angle(a, false, o);<a name="line.1054"></a>
<span class="sourceLineNo">1055</span> }<a name="line.1055"></a>
<span class="sourceLineNo">1056</span><a name="line.1056"></a>
<span class="sourceLineNo">1057</span> /**<a name="line.1057"></a>
<span class="sourceLineNo">1058</span> * Create a dataset of the arguments from a complex dataset<a name="line.1058"></a>
<span class="sourceLineNo">1059</span> * <a name="line.1059"></a>
<span class="sourceLineNo">1060</span> * @param a<a name="line.1060"></a>
<span class="sourceLineNo">1061</span> * @param inDegrees<a name="line.1061"></a>
<span class="sourceLineNo">1062</span> * if true then return angles in degrees else in radians<a name="line.1062"></a>
<span class="sourceLineNo">1063</span> * @param o<a name="line.1063"></a>
<span class="sourceLineNo">1064</span> * output can be null - in which case, a new dataset is created<a name="line.1064"></a>
<span class="sourceLineNo">1065</span> * @return dataset of angles<a name="line.1065"></a>
<span class="sourceLineNo">1066</span> */<a name="line.1066"></a>
<span class="sourceLineNo">1067</span> public static Dataset angle(final Object a, final boolean inDegrees, final Dataset o) {<a name="line.1067"></a>
<span class="sourceLineNo">1068</span> final Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.1068"></a>
<span class="sourceLineNo">1069</span><a name="line.1069"></a>
<span class="sourceLineNo">1070</span> if (!da.isComplex()) {<a name="line.1070"></a>
<span class="sourceLineNo">1071</span> throw new UnsupportedOperationException("angle does not support this dataset type");<a name="line.1071"></a>
<span class="sourceLineNo">1072</span> }<a name="line.1072"></a>
<span class="sourceLineNo">1073</span><a name="line.1073"></a>
<span class="sourceLineNo">1074</span> final SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true, false, false);<a name="line.1074"></a>
<span class="sourceLineNo">1075</span> final Dataset result = it.getOutput();<a name="line.1075"></a>
<span class="sourceLineNo">1076</span> final int is = result.getElementsPerItem();<a name="line.1076"></a>
<span class="sourceLineNo">1077</span> final int dt = result.getDType();<a name="line.1077"></a>
<span class="sourceLineNo">1078</span><a name="line.1078"></a>
<span class="sourceLineNo">1079</span> switch (dt) {<a name="line.1079"></a>
<span class="sourceLineNo">1080</span> case Dataset.INT8:<a name="line.1080"></a>
<span class="sourceLineNo">1081</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.1081"></a>
<span class="sourceLineNo">1082</span> it.setOutputDouble(false);<a name="line.1082"></a>
<span class="sourceLineNo">1083</span><a name="line.1083"></a>
<span class="sourceLineNo">1084</span> if (inDegrees) {<a name="line.1084"></a>
<span class="sourceLineNo">1085</span> while (it.hasNext()) {<a name="line.1085"></a>
<span class="sourceLineNo">1086</span> oi8data[it.oIndex] = (byte) toLong(<a name="line.1086"></a>
<span class="sourceLineNo">1087</span> Math.toDegrees(Math.atan2(da.getElementDoubleAbs(it.aIndex + 1), it.aDouble)));<a name="line.1087"></a>
<span class="sourceLineNo">1088</span> }<a name="line.1088"></a>
<span class="sourceLineNo">1089</span> } else {<a name="line.1089"></a>
<span class="sourceLineNo">1090</span> while (it.hasNext()) {<a name="line.1090"></a>
<span class="sourceLineNo">1091</span> oi8data[it.oIndex] = (byte) toLong(Math.atan2(da.getElementDoubleAbs(it.aIndex + 1), it.aDouble));<a name="line.1091"></a>
<span class="sourceLineNo">1092</span> }<a name="line.1092"></a>
<span class="sourceLineNo">1093</span> }<a name="line.1093"></a>
<span class="sourceLineNo">1094</span> break;<a name="line.1094"></a>
<span class="sourceLineNo">1095</span> case Dataset.INT16:<a name="line.1095"></a>
<span class="sourceLineNo">1096</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.1096"></a>
<span class="sourceLineNo">1097</span> it.setOutputDouble(false);<a name="line.1097"></a>
<span class="sourceLineNo">1098</span><a name="line.1098"></a>
<span class="sourceLineNo">1099</span> if (inDegrees) {<a name="line.1099"></a>
<span class="sourceLineNo">1100</span> while (it.hasNext()) {<a name="line.1100"></a>
<span class="sourceLineNo">1101</span> oi16data[it.oIndex] = (short) toLong(<a name="line.1101"></a>
<span class="sourceLineNo">1102</span> Math.toDegrees(Math.atan2(da.getElementDoubleAbs(it.aIndex + 1), it.aDouble)));<a name="line.1102"></a>
<span class="sourceLineNo">1103</span> }<a name="line.1103"></a>
<span class="sourceLineNo">1104</span> } else {<a name="line.1104"></a>
<span class="sourceLineNo">1105</span> while (it.hasNext()) {<a name="line.1105"></a>
<span class="sourceLineNo">1106</span> oi16data[it.oIndex] = (short) toLong(Math.atan2(da.getElementDoubleAbs(it.aIndex + 1), it.aDouble));<a name="line.1106"></a>
<span class="sourceLineNo">1107</span> }<a name="line.1107"></a>
<span class="sourceLineNo">1108</span> }<a name="line.1108"></a>
<span class="sourceLineNo">1109</span> break;<a name="line.1109"></a>
<span class="sourceLineNo">1110</span> case Dataset.INT32:<a name="line.1110"></a>
<span class="sourceLineNo">1111</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.1111"></a>
<span class="sourceLineNo">1112</span> it.setOutputDouble(false);<a name="line.1112"></a>
<span class="sourceLineNo">1113</span><a name="line.1113"></a>
<span class="sourceLineNo">1114</span> if (inDegrees) {<a name="line.1114"></a>
<span class="sourceLineNo">1115</span> while (it.hasNext()) {<a name="line.1115"></a>
<span class="sourceLineNo">1116</span> oi32data[it.oIndex] = (int) toLong(<a name="line.1116"></a>
<span class="sourceLineNo">1117</span> Math.toDegrees(Math.atan2(da.getElementDoubleAbs(it.aIndex + 1), it.aDouble)));<a name="line.1117"></a>
<span class="sourceLineNo">1118</span> }<a name="line.1118"></a>
<span class="sourceLineNo">1119</span> } else {<a name="line.1119"></a>
<span class="sourceLineNo">1120</span> while (it.hasNext()) {<a name="line.1120"></a>
<span class="sourceLineNo">1121</span> oi32data[it.oIndex] = (int) toLong(Math.atan2(da.getElementDoubleAbs(it.aIndex + 1), it.aDouble));<a name="line.1121"></a>
<span class="sourceLineNo">1122</span> }<a name="line.1122"></a>
<span class="sourceLineNo">1123</span> }<a name="line.1123"></a>
<span class="sourceLineNo">1124</span> break;<a name="line.1124"></a>
<span class="sourceLineNo">1125</span> case Dataset.INT64:<a name="line.1125"></a>
<span class="sourceLineNo">1126</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.1126"></a>
<span class="sourceLineNo">1127</span> it.setOutputDouble(false);<a name="line.1127"></a>
<span class="sourceLineNo">1128</span><a name="line.1128"></a>
<span class="sourceLineNo">1129</span> if (inDegrees) {<a name="line.1129"></a>
<span class="sourceLineNo">1130</span> while (it.hasNext()) {<a name="line.1130"></a>
<span class="sourceLineNo">1131</span> oi64data[it.oIndex] = toLong(<a name="line.1131"></a>
<span class="sourceLineNo">1132</span> Math.toDegrees(Math.atan2(da.getElementDoubleAbs(it.aIndex + 1), it.aDouble)));<a name="line.1132"></a>
<span class="sourceLineNo">1133</span> }<a name="line.1133"></a>
<span class="sourceLineNo">1134</span> } else {<a name="line.1134"></a>
<span class="sourceLineNo">1135</span> while (it.hasNext()) {<a name="line.1135"></a>
<span class="sourceLineNo">1136</span> oi64data[it.oIndex] = toLong(Math.atan2(da.getElementDoubleAbs(it.aIndex + 1), it.aDouble));<a name="line.1136"></a>
<span class="sourceLineNo">1137</span> }<a name="line.1137"></a>
<span class="sourceLineNo">1138</span> }<a name="line.1138"></a>
<span class="sourceLineNo">1139</span> break;<a name="line.1139"></a>
<span class="sourceLineNo">1140</span> case Dataset.ARRAYINT8:<a name="line.1140"></a>
<span class="sourceLineNo">1141</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.1141"></a>
<span class="sourceLineNo">1142</span> it.setOutputDouble(false);<a name="line.1142"></a>
<span class="sourceLineNo">1143</span><a name="line.1143"></a>
<span class="sourceLineNo">1144</span> if (inDegrees) {<a name="line.1144"></a>
<span class="sourceLineNo">1145</span> while (it.hasNext()) {<a name="line.1145"></a>
<span class="sourceLineNo">1146</span> final byte ox = (byte) toLong(<a name="line.1146"></a>
<span class="sourceLineNo">1147</span> Math.toDegrees(Math.atan2(da.getElementDoubleAbs(it.aIndex + 1), it.aDouble)));<a name="line.1147"></a>
<span class="sourceLineNo">1148</span> for (int j = 0; j &lt; is; j++) {<a name="line.1148"></a>
<span class="sourceLineNo">1149</span> oai8data[it.oIndex + j] = ox;<a name="line.1149"></a>
<span class="sourceLineNo">1150</span> }<a name="line.1150"></a>
<span class="sourceLineNo">1151</span> }<a name="line.1151"></a>
<span class="sourceLineNo">1152</span> } else {<a name="line.1152"></a>
<span class="sourceLineNo">1153</span> while (it.hasNext()) {<a name="line.1153"></a>
<span class="sourceLineNo">1154</span> final byte ox = (byte) toLong(Math.atan2(da.getElementDoubleAbs(it.aIndex + 1), it.aDouble));<a name="line.1154"></a>
<span class="sourceLineNo">1155</span> for (int j = 0; j &lt; is; j++) {<a name="line.1155"></a>
<span class="sourceLineNo">1156</span> oai8data[it.oIndex + j] = ox;<a name="line.1156"></a>
<span class="sourceLineNo">1157</span> }<a name="line.1157"></a>
<span class="sourceLineNo">1158</span> }<a name="line.1158"></a>
<span class="sourceLineNo">1159</span> }<a name="line.1159"></a>
<span class="sourceLineNo">1160</span> break;<a name="line.1160"></a>
<span class="sourceLineNo">1161</span> case Dataset.ARRAYINT16:<a name="line.1161"></a>
<span class="sourceLineNo">1162</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.1162"></a>
<span class="sourceLineNo">1163</span> it.setOutputDouble(false);<a name="line.1163"></a>
<span class="sourceLineNo">1164</span><a name="line.1164"></a>
<span class="sourceLineNo">1165</span> if (inDegrees) {<a name="line.1165"></a>
<span class="sourceLineNo">1166</span> while (it.hasNext()) {<a name="line.1166"></a>
<span class="sourceLineNo">1167</span> final short ox = (short) toLong(<a name="line.1167"></a>
<span class="sourceLineNo">1168</span> Math.toDegrees(Math.atan2(da.getElementDoubleAbs(it.aIndex + 1), it.aDouble)));<a name="line.1168"></a>
<span class="sourceLineNo">1169</span> for (int j = 0; j &lt; is; j++) {<a name="line.1169"></a>
<span class="sourceLineNo">1170</span> oai16data[it.oIndex + j] = ox;<a name="line.1170"></a>
<span class="sourceLineNo">1171</span> }<a name="line.1171"></a>
<span class="sourceLineNo">1172</span> }<a name="line.1172"></a>
<span class="sourceLineNo">1173</span> } else {<a name="line.1173"></a>
<span class="sourceLineNo">1174</span> while (it.hasNext()) {<a name="line.1174"></a>
<span class="sourceLineNo">1175</span> final short ox = (short) toLong(Math.atan2(da.getElementDoubleAbs(it.aIndex + 1), it.aDouble));<a name="line.1175"></a>
<span class="sourceLineNo">1176</span> for (int j = 0; j &lt; is; j++) {<a name="line.1176"></a>
<span class="sourceLineNo">1177</span> oai16data[it.oIndex + j] = ox;<a name="line.1177"></a>
<span class="sourceLineNo">1178</span> }<a name="line.1178"></a>
<span class="sourceLineNo">1179</span> }<a name="line.1179"></a>
<span class="sourceLineNo">1180</span> }<a name="line.1180"></a>
<span class="sourceLineNo">1181</span> break;<a name="line.1181"></a>
<span class="sourceLineNo">1182</span> case Dataset.ARRAYINT32:<a name="line.1182"></a>
<span class="sourceLineNo">1183</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.1183"></a>
<span class="sourceLineNo">1184</span> it.setOutputDouble(false);<a name="line.1184"></a>
<span class="sourceLineNo">1185</span><a name="line.1185"></a>
<span class="sourceLineNo">1186</span> if (inDegrees) {<a name="line.1186"></a>
<span class="sourceLineNo">1187</span> while (it.hasNext()) {<a name="line.1187"></a>
<span class="sourceLineNo">1188</span> final int ox = (int) toLong(<a name="line.1188"></a>
<span class="sourceLineNo">1189</span> Math.toDegrees(Math.atan2(da.getElementDoubleAbs(it.aIndex + 1), it.aDouble)));<a name="line.1189"></a>
<span class="sourceLineNo">1190</span> for (int j = 0; j &lt; is; j++) {<a name="line.1190"></a>
<span class="sourceLineNo">1191</span> oai32data[it.oIndex + j] = ox;<a name="line.1191"></a>
<span class="sourceLineNo">1192</span> }<a name="line.1192"></a>
<span class="sourceLineNo">1193</span> }<a name="line.1193"></a>
<span class="sourceLineNo">1194</span> } else {<a name="line.1194"></a>
<span class="sourceLineNo">1195</span> while (it.hasNext()) {<a name="line.1195"></a>
<span class="sourceLineNo">1196</span> final int ox = (int) toLong(Math.atan2(da.getElementDoubleAbs(it.aIndex + 1), it.aDouble));<a name="line.1196"></a>
<span class="sourceLineNo">1197</span> for (int j = 0; j &lt; is; j++) {<a name="line.1197"></a>
<span class="sourceLineNo">1198</span> oai32data[it.oIndex + j] = ox;<a name="line.1198"></a>
<span class="sourceLineNo">1199</span> }<a name="line.1199"></a>
<span class="sourceLineNo">1200</span> }<a name="line.1200"></a>
<span class="sourceLineNo">1201</span> }<a name="line.1201"></a>
<span class="sourceLineNo">1202</span> break;<a name="line.1202"></a>
<span class="sourceLineNo">1203</span> case Dataset.ARRAYINT64:<a name="line.1203"></a>
<span class="sourceLineNo">1204</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.1204"></a>
<span class="sourceLineNo">1205</span> it.setOutputDouble(false);<a name="line.1205"></a>
<span class="sourceLineNo">1206</span><a name="line.1206"></a>
<span class="sourceLineNo">1207</span> if (inDegrees) {<a name="line.1207"></a>
<span class="sourceLineNo">1208</span> while (it.hasNext()) {<a name="line.1208"></a>
<span class="sourceLineNo">1209</span> final long ox = toLong(<a name="line.1209"></a>
<span class="sourceLineNo">1210</span> Math.toDegrees(Math.atan2(da.getElementDoubleAbs(it.aIndex + 1), it.aDouble)));<a name="line.1210"></a>
<span class="sourceLineNo">1211</span> for (int j = 0; j &lt; is; j++) {<a name="line.1211"></a>
<span class="sourceLineNo">1212</span> oai64data[it.oIndex + j] = ox;<a name="line.1212"></a>
<span class="sourceLineNo">1213</span> }<a name="line.1213"></a>
<span class="sourceLineNo">1214</span> }<a name="line.1214"></a>
<span class="sourceLineNo">1215</span> } else {<a name="line.1215"></a>
<span class="sourceLineNo">1216</span> while (it.hasNext()) {<a name="line.1216"></a>
<span class="sourceLineNo">1217</span> final long ox = toLong(Math.atan2(da.getElementDoubleAbs(it.aIndex + 1), it.aDouble));<a name="line.1217"></a>
<span class="sourceLineNo">1218</span> for (int j = 0; j &lt; is; j++) {<a name="line.1218"></a>
<span class="sourceLineNo">1219</span> oai64data[it.oIndex + j] = ox;<a name="line.1219"></a>
<span class="sourceLineNo">1220</span> }<a name="line.1220"></a>
<span class="sourceLineNo">1221</span> }<a name="line.1221"></a>
<span class="sourceLineNo">1222</span> }<a name="line.1222"></a>
<span class="sourceLineNo">1223</span> break;<a name="line.1223"></a>
<span class="sourceLineNo">1224</span> case Dataset.FLOAT32:<a name="line.1224"></a>
<span class="sourceLineNo">1225</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.1225"></a>
<span class="sourceLineNo">1226</span><a name="line.1226"></a>
<span class="sourceLineNo">1227</span> if (inDegrees) {<a name="line.1227"></a>
<span class="sourceLineNo">1228</span> while (it.hasNext()) {<a name="line.1228"></a>
<span class="sourceLineNo">1229</span> of32data[it.oIndex] = (float) Math<a name="line.1229"></a>
<span class="sourceLineNo">1230</span> .toDegrees(Math.atan2(da.getElementDoubleAbs(it.aIndex + 1), it.aDouble));<a name="line.1230"></a>
<span class="sourceLineNo">1231</span> }<a name="line.1231"></a>
<span class="sourceLineNo">1232</span> } else {<a name="line.1232"></a>
<span class="sourceLineNo">1233</span> while (it.hasNext()) {<a name="line.1233"></a>
<span class="sourceLineNo">1234</span> of32data[it.oIndex] = (float) Math.atan2(da.getElementDoubleAbs(it.aIndex + 1), it.aDouble);<a name="line.1234"></a>
<span class="sourceLineNo">1235</span> }<a name="line.1235"></a>
<span class="sourceLineNo">1236</span> }<a name="line.1236"></a>
<span class="sourceLineNo">1237</span> break;<a name="line.1237"></a>
<span class="sourceLineNo">1238</span> case Dataset.FLOAT64:<a name="line.1238"></a>
<span class="sourceLineNo">1239</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.1239"></a>
<span class="sourceLineNo">1240</span><a name="line.1240"></a>
<span class="sourceLineNo">1241</span> if (inDegrees) {<a name="line.1241"></a>
<span class="sourceLineNo">1242</span> while (it.hasNext()) {<a name="line.1242"></a>
<span class="sourceLineNo">1243</span> of64data[it.oIndex] = Math.toDegrees(Math.atan2(da.getElementDoubleAbs(it.aIndex + 1), it.aDouble));<a name="line.1243"></a>
<span class="sourceLineNo">1244</span> }<a name="line.1244"></a>
<span class="sourceLineNo">1245</span> } else {<a name="line.1245"></a>
<span class="sourceLineNo">1246</span> while (it.hasNext()) {<a name="line.1246"></a>
<span class="sourceLineNo">1247</span> of64data[it.oIndex] = Math.atan2(da.getElementDoubleAbs(it.aIndex + 1), it.aDouble);<a name="line.1247"></a>
<span class="sourceLineNo">1248</span> }<a name="line.1248"></a>
<span class="sourceLineNo">1249</span> }<a name="line.1249"></a>
<span class="sourceLineNo">1250</span> break;<a name="line.1250"></a>
<span class="sourceLineNo">1251</span> case Dataset.ARRAYFLOAT32:<a name="line.1251"></a>
<span class="sourceLineNo">1252</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.1252"></a>
<span class="sourceLineNo">1253</span><a name="line.1253"></a>
<span class="sourceLineNo">1254</span> if (inDegrees) {<a name="line.1254"></a>
<span class="sourceLineNo">1255</span> while (it.hasNext()) {<a name="line.1255"></a>
<span class="sourceLineNo">1256</span> final float ox = (float) Math<a name="line.1256"></a>
<span class="sourceLineNo">1257</span> .toDegrees(Math.atan2(da.getElementDoubleAbs(it.aIndex + 1), it.aDouble));<a name="line.1257"></a>
<span class="sourceLineNo">1258</span> for (int j = 0; j &lt; is; j++) {<a name="line.1258"></a>
<span class="sourceLineNo">1259</span> oaf32data[it.oIndex + j] = ox;<a name="line.1259"></a>
<span class="sourceLineNo">1260</span> }<a name="line.1260"></a>
<span class="sourceLineNo">1261</span> }<a name="line.1261"></a>
<span class="sourceLineNo">1262</span> } else {<a name="line.1262"></a>
<span class="sourceLineNo">1263</span> while (it.hasNext()) {<a name="line.1263"></a>
<span class="sourceLineNo">1264</span> final float ox = (float) Math.atan2(da.getElementDoubleAbs(it.aIndex + 1), it.aDouble);<a name="line.1264"></a>
<span class="sourceLineNo">1265</span> for (int j = 0; j &lt; is; j++) {<a name="line.1265"></a>
<span class="sourceLineNo">1266</span> oaf32data[it.oIndex + j] = ox;<a name="line.1266"></a>
<span class="sourceLineNo">1267</span> }<a name="line.1267"></a>
<span class="sourceLineNo">1268</span> }<a name="line.1268"></a>
<span class="sourceLineNo">1269</span> }<a name="line.1269"></a>
<span class="sourceLineNo">1270</span> break;<a name="line.1270"></a>
<span class="sourceLineNo">1271</span> case Dataset.ARRAYFLOAT64:<a name="line.1271"></a>
<span class="sourceLineNo">1272</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.1272"></a>
<span class="sourceLineNo">1273</span><a name="line.1273"></a>
<span class="sourceLineNo">1274</span> if (inDegrees) {<a name="line.1274"></a>
<span class="sourceLineNo">1275</span> while (it.hasNext()) {<a name="line.1275"></a>
<span class="sourceLineNo">1276</span> final double ox = Math.toDegrees(Math.atan2(da.getElementDoubleAbs(it.aIndex + 1), it.aDouble));<a name="line.1276"></a>
<span class="sourceLineNo">1277</span> for (int j = 0; j &lt; is; j++) {<a name="line.1277"></a>
<span class="sourceLineNo">1278</span> oaf64data[it.oIndex + j] = ox;<a name="line.1278"></a>
<span class="sourceLineNo">1279</span> }<a name="line.1279"></a>
<span class="sourceLineNo">1280</span> }<a name="line.1280"></a>
<span class="sourceLineNo">1281</span> } else {<a name="line.1281"></a>
<span class="sourceLineNo">1282</span> while (it.hasNext()) {<a name="line.1282"></a>
<span class="sourceLineNo">1283</span> final double ox = Math.atan2(da.getElementDoubleAbs(it.aIndex + 1), it.aDouble);<a name="line.1283"></a>
<span class="sourceLineNo">1284</span> for (int j = 0; j &lt; is; j++) {<a name="line.1284"></a>
<span class="sourceLineNo">1285</span> oaf64data[it.oIndex + j] = ox;<a name="line.1285"></a>
<span class="sourceLineNo">1286</span> }<a name="line.1286"></a>
<span class="sourceLineNo">1287</span> }<a name="line.1287"></a>
<span class="sourceLineNo">1288</span> }<a name="line.1288"></a>
<span class="sourceLineNo">1289</span> break;<a name="line.1289"></a>
<span class="sourceLineNo">1290</span> case Dataset.COMPLEX64:<a name="line.1290"></a>
<span class="sourceLineNo">1291</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.1291"></a>
<span class="sourceLineNo">1292</span><a name="line.1292"></a>
<span class="sourceLineNo">1293</span> if (inDegrees) {<a name="line.1293"></a>
<span class="sourceLineNo">1294</span> while (it.hasNext()) {<a name="line.1294"></a>
<span class="sourceLineNo">1295</span> oc64data[it.oIndex] = (float) Math<a name="line.1295"></a>
<span class="sourceLineNo">1296</span> .toDegrees(Math.atan2(da.getElementDoubleAbs(it.aIndex + 1), it.aDouble));<a name="line.1296"></a>
<span class="sourceLineNo">1297</span> oc64data[it.oIndex + 1] = 0;<a name="line.1297"></a>
<span class="sourceLineNo">1298</span> }<a name="line.1298"></a>
<span class="sourceLineNo">1299</span> } else {<a name="line.1299"></a>
<span class="sourceLineNo">1300</span> while (it.hasNext()) {<a name="line.1300"></a>
<span class="sourceLineNo">1301</span> oc64data[it.oIndex] = (float) Math.atan2(da.getElementDoubleAbs(it.aIndex + 1), it.aDouble);<a name="line.1301"></a>
<span class="sourceLineNo">1302</span> oc64data[it.oIndex + 1] = 0;<a name="line.1302"></a>
<span class="sourceLineNo">1303</span> }<a name="line.1303"></a>
<span class="sourceLineNo">1304</span> }<a name="line.1304"></a>
<span class="sourceLineNo">1305</span> break;<a name="line.1305"></a>
<span class="sourceLineNo">1306</span> case Dataset.COMPLEX128:<a name="line.1306"></a>
<span class="sourceLineNo">1307</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.1307"></a>
<span class="sourceLineNo">1308</span><a name="line.1308"></a>
<span class="sourceLineNo">1309</span> if (inDegrees) {<a name="line.1309"></a>
<span class="sourceLineNo">1310</span> while (it.hasNext()) {<a name="line.1310"></a>
<span class="sourceLineNo">1311</span> oc128data[it.oIndex] = Math<a name="line.1311"></a>
<span class="sourceLineNo">1312</span> .toDegrees(Math.atan2(da.getElementDoubleAbs(it.aIndex + 1), it.aDouble));<a name="line.1312"></a>
<span class="sourceLineNo">1313</span> oc128data[it.oIndex + 1] = 0;<a name="line.1313"></a>
<span class="sourceLineNo">1314</span> }<a name="line.1314"></a>
<span class="sourceLineNo">1315</span> } else {<a name="line.1315"></a>
<span class="sourceLineNo">1316</span> while (it.hasNext()) {<a name="line.1316"></a>
<span class="sourceLineNo">1317</span> oc128data[it.oIndex] = Math.atan2(da.getElementDoubleAbs(it.aIndex + 1), it.aDouble);<a name="line.1317"></a>
<span class="sourceLineNo">1318</span> oc128data[it.oIndex + 1] = 0;<a name="line.1318"></a>
<span class="sourceLineNo">1319</span> }<a name="line.1319"></a>
<span class="sourceLineNo">1320</span> }<a name="line.1320"></a>
<span class="sourceLineNo">1321</span> break;<a name="line.1321"></a>
<span class="sourceLineNo">1322</span> default:<a name="line.1322"></a>
<span class="sourceLineNo">1323</span> throw new IllegalArgumentException("angle does not support this dataset type");<a name="line.1323"></a>
<span class="sourceLineNo">1324</span> }<a name="line.1324"></a>
<span class="sourceLineNo">1325</span><a name="line.1325"></a>
<span class="sourceLineNo">1326</span> addFunctionName(result, "angle");<a name="line.1326"></a>
<span class="sourceLineNo">1327</span><a name="line.1327"></a>
<span class="sourceLineNo">1328</span> return result;<a name="line.1328"></a>
<span class="sourceLineNo">1329</span> }<a name="line.1329"></a>
<span class="sourceLineNo">1330</span><a name="line.1330"></a>
<span class="sourceLineNo">1331</span> /**<a name="line.1331"></a>
<span class="sourceLineNo">1332</span> * Create a phase only dataset. NB it will contain NaNs if there are any<a name="line.1332"></a>
<span class="sourceLineNo">1333</span> * items with zero amplitude<a name="line.1333"></a>
<span class="sourceLineNo">1334</span> * <a name="line.1334"></a>
<span class="sourceLineNo">1335</span> * @param a<a name="line.1335"></a>
<span class="sourceLineNo">1336</span> * dataset<a name="line.1336"></a>
<span class="sourceLineNo">1337</span> * @param keepZeros<a name="line.1337"></a>
<span class="sourceLineNo">1338</span> * if true then zero items are returned as zero rather than NaNs<a name="line.1338"></a>
<span class="sourceLineNo">1339</span> * @return complex dataset where items have unit amplitude<a name="line.1339"></a>
<span class="sourceLineNo">1340</span> */<a name="line.1340"></a>
<span class="sourceLineNo">1341</span> public static Dataset phaseAsComplexNumber(final Object a, final boolean keepZeros) {<a name="line.1341"></a>
<span class="sourceLineNo">1342</span> return phaseAsComplexNumber(a, null, keepZeros);<a name="line.1342"></a>
<span class="sourceLineNo">1343</span> }<a name="line.1343"></a>
<span class="sourceLineNo">1344</span><a name="line.1344"></a>
<span class="sourceLineNo">1345</span> /**<a name="line.1345"></a>
<span class="sourceLineNo">1346</span> * Create a phase only dataset. NB it will contain NaNs if there are any<a name="line.1346"></a>
<span class="sourceLineNo">1347</span> * items with zero amplitude<a name="line.1347"></a>
<span class="sourceLineNo">1348</span> * <a name="line.1348"></a>
<span class="sourceLineNo">1349</span> * @param a<a name="line.1349"></a>
<span class="sourceLineNo">1350</span> * dataset<a name="line.1350"></a>
<span class="sourceLineNo">1351</span> * @param o<a name="line.1351"></a>
<span class="sourceLineNo">1352</span> * output can be null - in which case, a new dataset is created<a name="line.1352"></a>
<span class="sourceLineNo">1353</span> * @param keepZeros<a name="line.1353"></a>
<span class="sourceLineNo">1354</span> * if true then zero items are returned as zero rather than NaNs<a name="line.1354"></a>
<span class="sourceLineNo">1355</span> * @return complex dataset where items have unit amplitude<a name="line.1355"></a>
<span class="sourceLineNo">1356</span> */<a name="line.1356"></a>
<span class="sourceLineNo">1357</span> public static Dataset phaseAsComplexNumber(final Object a, final Dataset o, final boolean keepZeros) {<a name="line.1357"></a>
<span class="sourceLineNo">1358</span> final Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.1358"></a>
<span class="sourceLineNo">1359</span><a name="line.1359"></a>
<span class="sourceLineNo">1360</span> if (!da.isComplex()) {<a name="line.1360"></a>
<span class="sourceLineNo">1361</span> throw new IllegalArgumentException("Input dataset is not of complex type");<a name="line.1361"></a>
<span class="sourceLineNo">1362</span> }<a name="line.1362"></a>
<span class="sourceLineNo">1363</span> Dataset result = o == null ? DatasetFactory.zeros(da) : o;<a name="line.1363"></a>
<span class="sourceLineNo">1364</span> if (!result.isComplex()) {<a name="line.1364"></a>
<span class="sourceLineNo">1365</span> throw new IllegalArgumentException("Output dataset is not of complex type");<a name="line.1365"></a>
<span class="sourceLineNo">1366</span> }<a name="line.1366"></a>
<span class="sourceLineNo">1367</span> final int dt = result.getDType();<a name="line.1367"></a>
<span class="sourceLineNo">1368</span> SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, result);<a name="line.1368"></a>
<span class="sourceLineNo">1369</span><a name="line.1369"></a>
<span class="sourceLineNo">1370</span> switch (dt) {<a name="line.1370"></a>
<span class="sourceLineNo">1371</span> case Dataset.COMPLEX64:<a name="line.1371"></a>
<span class="sourceLineNo">1372</span> float[] z64data = ((ComplexFloatDataset) result).getData();<a name="line.1372"></a>
<span class="sourceLineNo">1373</span><a name="line.1373"></a>
<span class="sourceLineNo">1374</span> if (keepZeros) {<a name="line.1374"></a>
<span class="sourceLineNo">1375</span> while (it.hasNext()) {<a name="line.1375"></a>
<span class="sourceLineNo">1376</span> double rr = it.aDouble;<a name="line.1376"></a>
<span class="sourceLineNo">1377</span> double ri = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.1377"></a>
<span class="sourceLineNo">1378</span> double am = Math.hypot(rr, ri);<a name="line.1378"></a>
<span class="sourceLineNo">1379</span> if (am == 0) {<a name="line.1379"></a>
<span class="sourceLineNo">1380</span> z64data[it.oIndex] = 0;<a name="line.1380"></a>
<span class="sourceLineNo">1381</span> z64data[it.oIndex + 1] = 0;<a name="line.1381"></a>
<span class="sourceLineNo">1382</span> } else {<a name="line.1382"></a>
<span class="sourceLineNo">1383</span> z64data[it.oIndex] = (float) (rr / am);<a name="line.1383"></a>
<span class="sourceLineNo">1384</span> z64data[it.oIndex + 1] = (float) (ri / am);<a name="line.1384"></a>
<span class="sourceLineNo">1385</span> }<a name="line.1385"></a>
<span class="sourceLineNo">1386</span> }<a name="line.1386"></a>
<span class="sourceLineNo">1387</span> } else {<a name="line.1387"></a>
<span class="sourceLineNo">1388</span> while (it.hasNext()) {<a name="line.1388"></a>
<span class="sourceLineNo">1389</span> double rr = it.aDouble;<a name="line.1389"></a>
<span class="sourceLineNo">1390</span> double ri = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.1390"></a>
<span class="sourceLineNo">1391</span> double am = Math.hypot(rr, ri);<a name="line.1391"></a>
<span class="sourceLineNo">1392</span> z64data[it.oIndex] = (float) (rr / am);<a name="line.1392"></a>
<span class="sourceLineNo">1393</span> z64data[it.oIndex + 1] = (float) (ri / am);<a name="line.1393"></a>
<span class="sourceLineNo">1394</span> }<a name="line.1394"></a>
<span class="sourceLineNo">1395</span> }<a name="line.1395"></a>
<span class="sourceLineNo">1396</span> break;<a name="line.1396"></a>
<span class="sourceLineNo">1397</span> case Dataset.COMPLEX128:<a name="line.1397"></a>
<span class="sourceLineNo">1398</span> double[] z128data = ((ComplexDoubleDataset) result).getData();<a name="line.1398"></a>
<span class="sourceLineNo">1399</span><a name="line.1399"></a>
<span class="sourceLineNo">1400</span> if (keepZeros) {<a name="line.1400"></a>
<span class="sourceLineNo">1401</span> while (it.hasNext()) {<a name="line.1401"></a>
<span class="sourceLineNo">1402</span> double rr = it.aDouble;<a name="line.1402"></a>
<span class="sourceLineNo">1403</span> double ri = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.1403"></a>
<span class="sourceLineNo">1404</span> double am = Math.hypot(rr, ri);<a name="line.1404"></a>
<span class="sourceLineNo">1405</span> if (am == 0) {<a name="line.1405"></a>
<span class="sourceLineNo">1406</span> z128data[it.oIndex] = 0;<a name="line.1406"></a>
<span class="sourceLineNo">1407</span> z128data[it.oIndex + 1] = 0;<a name="line.1407"></a>
<span class="sourceLineNo">1408</span> } else {<a name="line.1408"></a>
<span class="sourceLineNo">1409</span> z128data[it.oIndex] = rr / am;<a name="line.1409"></a>
<span class="sourceLineNo">1410</span> z128data[it.oIndex + 1] = ri / am;<a name="line.1410"></a>
<span class="sourceLineNo">1411</span> }<a name="line.1411"></a>
<span class="sourceLineNo">1412</span> }<a name="line.1412"></a>
<span class="sourceLineNo">1413</span> } else {<a name="line.1413"></a>
<span class="sourceLineNo">1414</span> while (it.hasNext()) {<a name="line.1414"></a>
<span class="sourceLineNo">1415</span> double rr = it.aDouble;<a name="line.1415"></a>
<span class="sourceLineNo">1416</span> double ri = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.1416"></a>
<span class="sourceLineNo">1417</span> double am = Math.hypot(rr, ri);<a name="line.1417"></a>
<span class="sourceLineNo">1418</span> z128data[it.oIndex] = rr / am;<a name="line.1418"></a>
<span class="sourceLineNo">1419</span> z128data[it.oIndex + 1] = ri / am;<a name="line.1419"></a>
<span class="sourceLineNo">1420</span> }<a name="line.1420"></a>
<span class="sourceLineNo">1421</span> }<a name="line.1421"></a>
<span class="sourceLineNo">1422</span> break;<a name="line.1422"></a>
<span class="sourceLineNo">1423</span> }<a name="line.1423"></a>
<span class="sourceLineNo">1424</span><a name="line.1424"></a>
<span class="sourceLineNo">1425</span> addFunctionName(result, "phase");<a name="line.1425"></a>
<span class="sourceLineNo">1426</span><a name="line.1426"></a>
<span class="sourceLineNo">1427</span> return result;<a name="line.1427"></a>
<span class="sourceLineNo">1428</span> }<a name="line.1428"></a>
<span class="sourceLineNo">1429</span><a name="line.1429"></a>
<span class="sourceLineNo">1430</span> /**<a name="line.1430"></a>
<span class="sourceLineNo">1431</span> * Adds all sets passed in together<a name="line.1431"></a>
<span class="sourceLineNo">1432</span> * <a name="line.1432"></a>
<span class="sourceLineNo">1433</span> * The first IDataset must cast to Dataset<a name="line.1433"></a>
<span class="sourceLineNo">1434</span> * <a name="line.1434"></a>
<span class="sourceLineNo">1435</span> * For memory efficiency sake if add(...) is called with a set of size one,<a name="line.1435"></a>
<span class="sourceLineNo">1436</span> * no clone is done, the original object is returned directly. Otherwise a<a name="line.1436"></a>
<span class="sourceLineNo">1437</span> * new data set is returned, the sum of those passed in.<a name="line.1437"></a>
<span class="sourceLineNo">1438</span> * <a name="line.1438"></a>
<span class="sourceLineNo">1439</span> * @param sets<a name="line.1439"></a>
<span class="sourceLineNo">1440</span> * @param requireClone<a name="line.1440"></a>
<span class="sourceLineNo">1441</span> * @return sum of collection<a name="line.1441"></a>
<span class="sourceLineNo">1442</span> */<a name="line.1442"></a>
<span class="sourceLineNo">1443</span> public static Dataset add(final Collection&lt;IDataset&gt; sets, boolean requireClone) {<a name="line.1443"></a>
<span class="sourceLineNo">1444</span> if (sets.isEmpty())<a name="line.1444"></a>
<span class="sourceLineNo">1445</span> return null;<a name="line.1445"></a>
<span class="sourceLineNo">1446</span> final Iterator&lt;IDataset&gt; it = sets.iterator();<a name="line.1446"></a>
<span class="sourceLineNo">1447</span> if (sets.size() == 1)<a name="line.1447"></a>
<span class="sourceLineNo">1448</span> return DatasetUtils.convertToDataset(it.next());<a name="line.1448"></a>
<span class="sourceLineNo">1449</span><a name="line.1449"></a>
<span class="sourceLineNo">1450</span> Dataset sum = requireClone ? ((Dataset) it.next()).clone() : (Dataset) it.next();<a name="line.1450"></a>
<span class="sourceLineNo">1451</span><a name="line.1451"></a>
<span class="sourceLineNo">1452</span> while (it.hasNext()) {<a name="line.1452"></a>
<span class="sourceLineNo">1453</span> Maths.add(sum, it.next(), sum);<a name="line.1453"></a>
<span class="sourceLineNo">1454</span> }<a name="line.1454"></a>
<span class="sourceLineNo">1455</span><a name="line.1455"></a>
<span class="sourceLineNo">1456</span> return sum;<a name="line.1456"></a>
<span class="sourceLineNo">1457</span> }<a name="line.1457"></a>
<span class="sourceLineNo">1458</span><a name="line.1458"></a>
<span class="sourceLineNo">1459</span> /**<a name="line.1459"></a>
<span class="sourceLineNo">1460</span> * Multiplies all sets passed in together<a name="line.1460"></a>
<span class="sourceLineNo">1461</span> * <a name="line.1461"></a>
<span class="sourceLineNo">1462</span> * The first IDataset must cast to Dataset<a name="line.1462"></a>
<span class="sourceLineNo">1463</span> * <a name="line.1463"></a>
<span class="sourceLineNo">1464</span> * @param sets<a name="line.1464"></a>
<span class="sourceLineNo">1465</span> * @param requireClone<a name="line.1465"></a>
<span class="sourceLineNo">1466</span> * @return product of collection<a name="line.1466"></a>
<span class="sourceLineNo">1467</span> */<a name="line.1467"></a>
<span class="sourceLineNo">1468</span> public static Dataset multiply(final Collection&lt;IDataset&gt; sets, boolean requireClone) {<a name="line.1468"></a>
<span class="sourceLineNo">1469</span> if (sets.isEmpty())<a name="line.1469"></a>
<span class="sourceLineNo">1470</span> return null;<a name="line.1470"></a>
<span class="sourceLineNo">1471</span> final Iterator&lt;IDataset&gt; it = sets.iterator();<a name="line.1471"></a>
<span class="sourceLineNo">1472</span> if (sets.size() == 1)<a name="line.1472"></a>
<span class="sourceLineNo">1473</span> return DatasetUtils.convertToDataset(it.next());<a name="line.1473"></a>
<span class="sourceLineNo">1474</span> Dataset product = requireClone ? ((Dataset) it.next()).clone() : (Dataset) it.next();<a name="line.1474"></a>
<span class="sourceLineNo">1475</span><a name="line.1475"></a>
<span class="sourceLineNo">1476</span> while (it.hasNext()) {<a name="line.1476"></a>
<span class="sourceLineNo">1477</span> Maths.multiply(product, it.next(), product);<a name="line.1477"></a>
<span class="sourceLineNo">1478</span> }<a name="line.1478"></a>
<span class="sourceLineNo">1479</span><a name="line.1479"></a>
<span class="sourceLineNo">1480</span> return product;<a name="line.1480"></a>
<span class="sourceLineNo">1481</span> }<a name="line.1481"></a>
<span class="sourceLineNo">1482</span><a name="line.1482"></a>
<span class="sourceLineNo">1483</span> /**<a name="line.1483"></a>
<span class="sourceLineNo">1484</span> * Linearly interpolate values at points in a 1D dataset corresponding to<a name="line.1484"></a>
<span class="sourceLineNo">1485</span> * given coordinates.<a name="line.1485"></a>
<span class="sourceLineNo">1486</span> * <a name="line.1486"></a>
<span class="sourceLineNo">1487</span> * @param x<a name="line.1487"></a>
<span class="sourceLineNo">1488</span> * input 1-D coordinate dataset (must be ordered)<a name="line.1488"></a>
<span class="sourceLineNo">1489</span> * @param d<a name="line.1489"></a>
<span class="sourceLineNo">1490</span> * input 1-D dataset<a name="line.1490"></a>
<span class="sourceLineNo">1491</span> * @param x0<a name="line.1491"></a>
<span class="sourceLineNo">1492</span> * coordinate values<a name="line.1492"></a>
<span class="sourceLineNo">1493</span> * @param left<a name="line.1493"></a>
<span class="sourceLineNo">1494</span> * value to use when x0 lies left of domain. If null, then<a name="line.1494"></a>
<span class="sourceLineNo">1495</span> * interpolate to zero by using leftmost interval<a name="line.1495"></a>
<span class="sourceLineNo">1496</span> * @param right<a name="line.1496"></a>
<span class="sourceLineNo">1497</span> * value to use when x0 lies right of domain. If null, then<a name="line.1497"></a>
<span class="sourceLineNo">1498</span> * interpolate to zero by using rightmost interval<a name="line.1498"></a>
<span class="sourceLineNo">1499</span> * @return interpolated values<a name="line.1499"></a>
<span class="sourceLineNo">1500</span> */<a name="line.1500"></a>
<span class="sourceLineNo">1501</span> public static Dataset interpolate(final Dataset x, final Dataset d, final IDataset x0, Number left, Number right) {<a name="line.1501"></a>
<span class="sourceLineNo">1502</span> assert x.getRank() == 1;<a name="line.1502"></a>
<span class="sourceLineNo">1503</span> assert d.getRank() == 1;<a name="line.1503"></a>
<span class="sourceLineNo">1504</span><a name="line.1504"></a>
<span class="sourceLineNo">1505</span> DoubleDataset r = DatasetFactory.zeros(DoubleDataset.class, x0.getShape());<a name="line.1505"></a>
<span class="sourceLineNo">1506</span><a name="line.1506"></a>
<span class="sourceLineNo">1507</span> Monotonicity mono = Comparisons.findMonotonicity(x);<a name="line.1507"></a>
<span class="sourceLineNo">1508</span> if (mono == Monotonicity.NOT_ORDERED) {<a name="line.1508"></a>
<span class="sourceLineNo">1509</span> throw new IllegalArgumentException("Dataset x must be ordered");<a name="line.1509"></a>
<span class="sourceLineNo">1510</span> }<a name="line.1510"></a>
<span class="sourceLineNo">1511</span> DoubleDataset dx = DatasetUtils.cast(DoubleDataset.class, x);<a name="line.1511"></a>
<span class="sourceLineNo">1512</span> Dataset dx0 = DatasetUtils.convertToDataset(x0);<a name="line.1512"></a>
<span class="sourceLineNo">1513</span> if (x == dx) {<a name="line.1513"></a>
<span class="sourceLineNo">1514</span> dx = (DoubleDataset) x.flatten();<a name="line.1514"></a>
<span class="sourceLineNo">1515</span> }<a name="line.1515"></a>
<span class="sourceLineNo">1516</span> double[] xa = dx.getData();<a name="line.1516"></a>
<span class="sourceLineNo">1517</span> int s = xa.length - 1;<a name="line.1517"></a>
<span class="sourceLineNo">1518</span> boolean isReversed = mono == Monotonicity.STRICTLY_DECREASING || mono == Monotonicity.NONINCREASING;<a name="line.1518"></a>
<span class="sourceLineNo">1519</span> if (isReversed) {<a name="line.1519"></a>
<span class="sourceLineNo">1520</span> double[] txa = xa.clone();<a name="line.1520"></a>
<span class="sourceLineNo">1521</span> for (int i = 0; i &lt;= s; i++) { // reverse order<a name="line.1521"></a>
<span class="sourceLineNo">1522</span> txa[s - i] = xa[i];<a name="line.1522"></a>
<span class="sourceLineNo">1523</span> }<a name="line.1523"></a>
<span class="sourceLineNo">1524</span> xa = txa;<a name="line.1524"></a>
<span class="sourceLineNo">1525</span> }<a name="line.1525"></a>
<span class="sourceLineNo">1526</span><a name="line.1526"></a>
<span class="sourceLineNo">1527</span> IndexIterator it = dx0.getIterator();<a name="line.1527"></a>
<span class="sourceLineNo">1528</span> int k = -1;<a name="line.1528"></a>
<span class="sourceLineNo">1529</span> while (it.hasNext()) {<a name="line.1529"></a>
<span class="sourceLineNo">1530</span> k++;<a name="line.1530"></a>
<span class="sourceLineNo">1531</span> double v = dx0.getElementDoubleAbs(it.index);<a name="line.1531"></a>
<span class="sourceLineNo">1532</span> int i = Arrays.binarySearch(xa, v);<a name="line.1532"></a>
<span class="sourceLineNo">1533</span> if (i &lt; 0) {<a name="line.1533"></a>
<span class="sourceLineNo">1534</span> // i = -(insertion point) - 1<a name="line.1534"></a>
<span class="sourceLineNo">1535</span> if (i == -1) {<a name="line.1535"></a>
<span class="sourceLineNo">1536</span> if (left != null) {<a name="line.1536"></a>
<span class="sourceLineNo">1537</span> r.setAbs(k, left.doubleValue());<a name="line.1537"></a>
<span class="sourceLineNo">1538</span> continue;<a name="line.1538"></a>
<span class="sourceLineNo">1539</span> }<a name="line.1539"></a>
<span class="sourceLineNo">1540</span> final double d1 = xa[0] - xa[1];<a name="line.1540"></a>
<span class="sourceLineNo">1541</span> double t = d1 - v + xa[0];<a name="line.1541"></a>
<span class="sourceLineNo">1542</span> if (t &gt;= 0) {<a name="line.1542"></a>
<span class="sourceLineNo">1543</span> continue; // sets to zero<a name="line.1543"></a>
<span class="sourceLineNo">1544</span> }<a name="line.1544"></a>
<span class="sourceLineNo">1545</span> t /= d1;<a name="line.1545"></a>
<span class="sourceLineNo">1546</span> r.setAbs(k, t * d.getDouble(isReversed ? s : 0));<a name="line.1546"></a>
<span class="sourceLineNo">1547</span> } else if (i == -s - 2) {<a name="line.1547"></a>
<span class="sourceLineNo">1548</span> if (right != null) {<a name="line.1548"></a>
<span class="sourceLineNo">1549</span> r.setAbs(k, right.doubleValue());<a name="line.1549"></a>
<span class="sourceLineNo">1550</span> continue;<a name="line.1550"></a>
<span class="sourceLineNo">1551</span> }<a name="line.1551"></a>
<span class="sourceLineNo">1552</span> final double d1 = xa[s] - xa[s - 1];<a name="line.1552"></a>
<span class="sourceLineNo">1553</span> double t = d1 - v + xa[s];<a name="line.1553"></a>
<span class="sourceLineNo">1554</span> if (t &lt;= 0) {<a name="line.1554"></a>
<span class="sourceLineNo">1555</span> continue; // sets to zero<a name="line.1555"></a>
<span class="sourceLineNo">1556</span> }<a name="line.1556"></a>
<span class="sourceLineNo">1557</span> t /= d1;<a name="line.1557"></a>
<span class="sourceLineNo">1558</span> r.setAbs(k, t * d.getDouble(isReversed ? 0 : s));<a name="line.1558"></a>
<span class="sourceLineNo">1559</span> } else {<a name="line.1559"></a>
<span class="sourceLineNo">1560</span> i = -i - 1;<a name="line.1560"></a>
<span class="sourceLineNo">1561</span> double t = (xa[i] - v) / (xa[i] - xa[i - 1]);<a name="line.1561"></a>
<span class="sourceLineNo">1562</span> if (isReversed) {<a name="line.1562"></a>
<span class="sourceLineNo">1563</span> i = s - i;<a name="line.1563"></a>
<span class="sourceLineNo">1564</span> r.setAbs(k, t * d.getDouble(i + 1) + (1 - t) * d.getDouble(i));<a name="line.1564"></a>
<span class="sourceLineNo">1565</span> } else {<a name="line.1565"></a>
<span class="sourceLineNo">1566</span> r.setAbs(k, (1 - t) * d.getDouble(i) + t * d.getDouble(i - 1));<a name="line.1566"></a>
<span class="sourceLineNo">1567</span> }<a name="line.1567"></a>
<span class="sourceLineNo">1568</span> }<a name="line.1568"></a>
<span class="sourceLineNo">1569</span> } else {<a name="line.1569"></a>
<span class="sourceLineNo">1570</span> r.setAbs(k, d.getDouble(isReversed ? s - i : i));<a name="line.1570"></a>
<span class="sourceLineNo">1571</span> }<a name="line.1571"></a>
<span class="sourceLineNo">1572</span> }<a name="line.1572"></a>
<span class="sourceLineNo">1573</span> return r;<a name="line.1573"></a>
<span class="sourceLineNo">1574</span> }<a name="line.1574"></a>
<span class="sourceLineNo">1575</span><a name="line.1575"></a>
<span class="sourceLineNo">1576</span> /**<a name="line.1576"></a>
<span class="sourceLineNo">1577</span> * Linearly interpolate a value at a point in a 1D dataset. The dataset is<a name="line.1577"></a>
<span class="sourceLineNo">1578</span> * considered to have zero support outside its bounds. Thus points just<a name="line.1578"></a>
<span class="sourceLineNo">1579</span> * outside are interpolated from the boundary value to zero.<a name="line.1579"></a>
<span class="sourceLineNo">1580</span> * <a name="line.1580"></a>
<span class="sourceLineNo">1581</span> * @param d<a name="line.1581"></a>
<span class="sourceLineNo">1582</span> * input dataset<a name="line.1582"></a>
<span class="sourceLineNo">1583</span> * @param x0<a name="line.1583"></a>
<span class="sourceLineNo">1584</span> * coordinate<a name="line.1584"></a>
<span class="sourceLineNo">1585</span> * @return interpolated value<a name="line.1585"></a>
<span class="sourceLineNo">1586</span> */<a name="line.1586"></a>
<span class="sourceLineNo">1587</span> public static double interpolate(final Dataset d, final double x0) {<a name="line.1587"></a>
<span class="sourceLineNo">1588</span> assert d.getRank() == 1;<a name="line.1588"></a>
<span class="sourceLineNo">1589</span><a name="line.1589"></a>
<span class="sourceLineNo">1590</span> final int i0 = (int) Math.floor(x0);<a name="line.1590"></a>
<span class="sourceLineNo">1591</span> final int e0 = d.getSize() - 1;<a name="line.1591"></a>
<span class="sourceLineNo">1592</span> if (i0 &lt; -1 || i0 &gt; e0) {<a name="line.1592"></a>
<span class="sourceLineNo">1593</span> return 0;<a name="line.1593"></a>
<span class="sourceLineNo">1594</span> }<a name="line.1594"></a>
<span class="sourceLineNo">1595</span><a name="line.1595"></a>
<span class="sourceLineNo">1596</span> final double u0 = x0 - i0;<a name="line.1596"></a>
<span class="sourceLineNo">1597</span><a name="line.1597"></a>
<span class="sourceLineNo">1598</span> double r = 0;<a name="line.1598"></a>
<span class="sourceLineNo">1599</span> final double f1 = i0 &lt; 0 ? 0 : d.getDouble(i0);<a name="line.1599"></a>
<span class="sourceLineNo">1600</span> if (u0 &gt; 0) {<a name="line.1600"></a>
<span class="sourceLineNo">1601</span> r = (1 - u0) * f1 + (i0 == e0 ? 0 : u0 * d.getDouble(i0 + 1));<a name="line.1601"></a>
<span class="sourceLineNo">1602</span> } else {<a name="line.1602"></a>
<span class="sourceLineNo">1603</span> r = f1;<a name="line.1603"></a>
<span class="sourceLineNo">1604</span> }<a name="line.1604"></a>
<span class="sourceLineNo">1605</span> return r;<a name="line.1605"></a>
<span class="sourceLineNo">1606</span> }<a name="line.1606"></a>
<span class="sourceLineNo">1607</span><a name="line.1607"></a>
<span class="sourceLineNo">1608</span> /**<a name="line.1608"></a>
<span class="sourceLineNo">1609</span> * Linearly interpolate a value at a point in a 1D dataset with a mask. The<a name="line.1609"></a>
<span class="sourceLineNo">1610</span> * dataset is considered to have zero support outside its bounds. Thus<a name="line.1610"></a>
<span class="sourceLineNo">1611</span> * points just outside are interpolated from the boundary value to zero.<a name="line.1611"></a>
<span class="sourceLineNo">1612</span> * <a name="line.1612"></a>
<span class="sourceLineNo">1613</span> * @param d<a name="line.1613"></a>
<span class="sourceLineNo">1614</span> * input dataset<a name="line.1614"></a>
<span class="sourceLineNo">1615</span> * @param m<a name="line.1615"></a>
<span class="sourceLineNo">1616</span> * mask dataset<a name="line.1616"></a>
<span class="sourceLineNo">1617</span> * @param x0<a name="line.1617"></a>
<span class="sourceLineNo">1618</span> * coordinate<a name="line.1618"></a>
<span class="sourceLineNo">1619</span> * @return interpolated value<a name="line.1619"></a>
<span class="sourceLineNo">1620</span> */<a name="line.1620"></a>
<span class="sourceLineNo">1621</span> public static double interpolate(final Dataset d, final Dataset m, final double x0) {<a name="line.1621"></a>
<span class="sourceLineNo">1622</span> assert d.getRank() == 1;<a name="line.1622"></a>
<span class="sourceLineNo">1623</span> assert m.getRank() == 1;<a name="line.1623"></a>
<span class="sourceLineNo">1624</span><a name="line.1624"></a>
<span class="sourceLineNo">1625</span> final int i0 = (int) Math.floor(x0);<a name="line.1625"></a>
<span class="sourceLineNo">1626</span> final int e0 = d.getSize() - 1;<a name="line.1626"></a>
<span class="sourceLineNo">1627</span> if (i0 &lt; -1 || i0 &gt; e0) {<a name="line.1627"></a>
<span class="sourceLineNo">1628</span> return 0;<a name="line.1628"></a>
<span class="sourceLineNo">1629</span> }<a name="line.1629"></a>
<span class="sourceLineNo">1630</span><a name="line.1630"></a>
<span class="sourceLineNo">1631</span> final double u0 = x0 - i0;<a name="line.1631"></a>
<span class="sourceLineNo">1632</span><a name="line.1632"></a>
<span class="sourceLineNo">1633</span> double r = 0;<a name="line.1633"></a>
<span class="sourceLineNo">1634</span> final double f1 = i0 &lt; 0 ? 0 : d.getDouble(i0) * m.getDouble(i0);<a name="line.1634"></a>
<span class="sourceLineNo">1635</span> if (u0 &gt; 0) {<a name="line.1635"></a>
<span class="sourceLineNo">1636</span> r = (1 - u0) * f1 + (i0 == e0 ? 0 : u0 * d.getDouble(i0 + 1) * m.getDouble(i0 + 1));<a name="line.1636"></a>
<span class="sourceLineNo">1637</span> } else {<a name="line.1637"></a>
<span class="sourceLineNo">1638</span> r = f1;<a name="line.1638"></a>
<span class="sourceLineNo">1639</span> }<a name="line.1639"></a>
<span class="sourceLineNo">1640</span> return r;<a name="line.1640"></a>
<span class="sourceLineNo">1641</span> }<a name="line.1641"></a>
<span class="sourceLineNo">1642</span><a name="line.1642"></a>
<span class="sourceLineNo">1643</span> /**<a name="line.1643"></a>
<span class="sourceLineNo">1644</span> * Linearly interpolate an array of values at a point in a compound 1D<a name="line.1644"></a>
<span class="sourceLineNo">1645</span> * dataset. The dataset is considered to have zero support outside its<a name="line.1645"></a>
<span class="sourceLineNo">1646</span> * bounds. Thus points just outside are interpolated from the boundary value<a name="line.1646"></a>
<span class="sourceLineNo">1647</span> * to zero.<a name="line.1647"></a>
<span class="sourceLineNo">1648</span> * <a name="line.1648"></a>
<span class="sourceLineNo">1649</span> * @param values<a name="line.1649"></a>
<span class="sourceLineNo">1650</span> * interpolated array<a name="line.1650"></a>
<span class="sourceLineNo">1651</span> * @param d<a name="line.1651"></a>
<span class="sourceLineNo">1652</span> * input dataset<a name="line.1652"></a>
<span class="sourceLineNo">1653</span> * @param x0<a name="line.1653"></a>
<span class="sourceLineNo">1654</span> * coordinate<a name="line.1654"></a>
<span class="sourceLineNo">1655</span> */<a name="line.1655"></a>
<span class="sourceLineNo">1656</span> public static void interpolate(final double[] values, final CompoundDataset d, final double x0) {<a name="line.1656"></a>
<span class="sourceLineNo">1657</span> assert d.getRank() == 1;<a name="line.1657"></a>
<span class="sourceLineNo">1658</span><a name="line.1658"></a>
<span class="sourceLineNo">1659</span> final int is = d.getElementsPerItem();<a name="line.1659"></a>
<span class="sourceLineNo">1660</span> if (is != values.length) {<a name="line.1660"></a>
<span class="sourceLineNo">1661</span> throw new IllegalArgumentException("Output array length must match elements in item");<a name="line.1661"></a>
<span class="sourceLineNo">1662</span> }<a name="line.1662"></a>
<span class="sourceLineNo">1663</span> final double[] f1, f2;<a name="line.1663"></a>
<span class="sourceLineNo">1664</span><a name="line.1664"></a>
<span class="sourceLineNo">1665</span> final int i0 = (int) Math.floor(x0);<a name="line.1665"></a>
<span class="sourceLineNo">1666</span> final int e0 = d.getSize() - 1;<a name="line.1666"></a>
<span class="sourceLineNo">1667</span> if (i0 &lt; -1 || i0 &gt; e0) {<a name="line.1667"></a>
<span class="sourceLineNo">1668</span> Arrays.fill(values, 0);<a name="line.1668"></a>
<span class="sourceLineNo">1669</span> return;<a name="line.1669"></a>
<span class="sourceLineNo">1670</span> }<a name="line.1670"></a>
<span class="sourceLineNo">1671</span> final double u0 = x0 - i0;<a name="line.1671"></a>
<span class="sourceLineNo">1672</span><a name="line.1672"></a>
<span class="sourceLineNo">1673</span> if (u0 &gt; 0) {<a name="line.1673"></a>
<span class="sourceLineNo">1674</span> f1 = new double[is];<a name="line.1674"></a>
<span class="sourceLineNo">1675</span> if (i0 &gt;= 0) {<a name="line.1675"></a>
<span class="sourceLineNo">1676</span> d.getDoubleArray(f1, i0);<a name="line.1676"></a>
<span class="sourceLineNo">1677</span> }<a name="line.1677"></a>
<span class="sourceLineNo">1678</span> double t = 1 - u0;<a name="line.1678"></a>
<span class="sourceLineNo">1679</span> if (i0 == e0) {<a name="line.1679"></a>
<span class="sourceLineNo">1680</span> for (int j = 0; j &lt; is; j++) {<a name="line.1680"></a>
<span class="sourceLineNo">1681</span> values[j] = t * f1[j];<a name="line.1681"></a>
<span class="sourceLineNo">1682</span> }<a name="line.1682"></a>
<span class="sourceLineNo">1683</span> } else {<a name="line.1683"></a>
<span class="sourceLineNo">1684</span> f2 = new double[is];<a name="line.1684"></a>
<span class="sourceLineNo">1685</span> d.getDoubleArray(f2, i0 + 1);<a name="line.1685"></a>
<span class="sourceLineNo">1686</span> for (int j = 0; j &lt; is; j++) {<a name="line.1686"></a>
<span class="sourceLineNo">1687</span> values[j] = t * f1[j] + u0 * f2[j];<a name="line.1687"></a>
<span class="sourceLineNo">1688</span> }<a name="line.1688"></a>
<span class="sourceLineNo">1689</span> }<a name="line.1689"></a>
<span class="sourceLineNo">1690</span> } else {<a name="line.1690"></a>
<span class="sourceLineNo">1691</span> if (i0 &gt;= 0) {<a name="line.1691"></a>
<span class="sourceLineNo">1692</span> d.getDoubleArray(values, i0);<a name="line.1692"></a>
<span class="sourceLineNo">1693</span> } else {<a name="line.1693"></a>
<span class="sourceLineNo">1694</span> Arrays.fill(values, 0);<a name="line.1694"></a>
<span class="sourceLineNo">1695</span> }<a name="line.1695"></a>
<span class="sourceLineNo">1696</span> }<a name="line.1696"></a>
<span class="sourceLineNo">1697</span> }<a name="line.1697"></a>
<span class="sourceLineNo">1698</span><a name="line.1698"></a>
<span class="sourceLineNo">1699</span> /**<a name="line.1699"></a>
<span class="sourceLineNo">1700</span> * Linearly interpolate a value at a point in a 2D dataset. The dataset is<a name="line.1700"></a>
<span class="sourceLineNo">1701</span> * considered to have zero support outside its bounds. Thus points just<a name="line.1701"></a>
<span class="sourceLineNo">1702</span> * outside are interpolated from the boundary value to zero.<a name="line.1702"></a>
<span class="sourceLineNo">1703</span> * <a name="line.1703"></a>
<span class="sourceLineNo">1704</span> * @param d<a name="line.1704"></a>
<span class="sourceLineNo">1705</span> * input dataset<a name="line.1705"></a>
<span class="sourceLineNo">1706</span> * @param x0<a name="line.1706"></a>
<span class="sourceLineNo">1707</span> * coordinate<a name="line.1707"></a>
<span class="sourceLineNo">1708</span> * @param x1<a name="line.1708"></a>
<span class="sourceLineNo">1709</span> * coordinate<a name="line.1709"></a>
<span class="sourceLineNo">1710</span> * @return bilinear interpolation<a name="line.1710"></a>
<span class="sourceLineNo">1711</span> */<a name="line.1711"></a>
<span class="sourceLineNo">1712</span> public static double interpolate(final Dataset d, final double x0, final double x1) {<a name="line.1712"></a>
<span class="sourceLineNo">1713</span> final int[] s = d.getShape();<a name="line.1713"></a>
<span class="sourceLineNo">1714</span> assert s.length == 2;<a name="line.1714"></a>
<span class="sourceLineNo">1715</span><a name="line.1715"></a>
<span class="sourceLineNo">1716</span> final int e0 = s[0] - 1;<a name="line.1716"></a>
<span class="sourceLineNo">1717</span> final int e1 = s[1] - 1;<a name="line.1717"></a>
<span class="sourceLineNo">1718</span> final int i0 = (int) Math.floor(x0);<a name="line.1718"></a>
<span class="sourceLineNo">1719</span> final int i1 = (int) Math.floor(x1);<a name="line.1719"></a>
<span class="sourceLineNo">1720</span> final double u0 = x0 - i0;<a name="line.1720"></a>
<span class="sourceLineNo">1721</span> final double u1 = x1 - i1;<a name="line.1721"></a>
<span class="sourceLineNo">1722</span> if (i0 &lt; -1 || i0 &gt; e0 || i1 &lt; -1 || i1 &gt; e1) {<a name="line.1722"></a>
<span class="sourceLineNo">1723</span> return 0;<a name="line.1723"></a>
<span class="sourceLineNo">1724</span> }<a name="line.1724"></a>
<span class="sourceLineNo">1725</span><a name="line.1725"></a>
<span class="sourceLineNo">1726</span> // use bilinear interpolation<a name="line.1726"></a>
<span class="sourceLineNo">1727</span> double r = 0;<a name="line.1727"></a>
<span class="sourceLineNo">1728</span> final double f1, f2, f3, f4;<a name="line.1728"></a>
<span class="sourceLineNo">1729</span> f1 = i0 &lt; 0 || i1 &lt; 0 ? 0 : d.getDouble(i0, i1);<a name="line.1729"></a>
<span class="sourceLineNo">1730</span> if (u1 &gt; 0) {<a name="line.1730"></a>
<span class="sourceLineNo">1731</span> if (u0 &gt; 0) {<a name="line.1731"></a>
<span class="sourceLineNo">1732</span> if (i0 == e0) {<a name="line.1732"></a>
<span class="sourceLineNo">1733</span> f2 = 0;<a name="line.1733"></a>
<span class="sourceLineNo">1734</span> f4 = 0;<a name="line.1734"></a>
<span class="sourceLineNo">1735</span> f3 = i1 == e1 ? 0 : d.getDouble(i0, i1 + 1);<a name="line.1735"></a>
<span class="sourceLineNo">1736</span> } else {<a name="line.1736"></a>
<span class="sourceLineNo">1737</span> f2 = i1 &lt; 0 ? 0 : d.getDouble(i0 + 1, i1);<a name="line.1737"></a>
<span class="sourceLineNo">1738</span> if (i1 == e1) {<a name="line.1738"></a>
<span class="sourceLineNo">1739</span> f4 = 0;<a name="line.1739"></a>
<span class="sourceLineNo">1740</span> f3 = 0;<a name="line.1740"></a>
<span class="sourceLineNo">1741</span> } else {<a name="line.1741"></a>
<span class="sourceLineNo">1742</span> f4 = d.getDouble(i0 + 1, i1 + 1);<a name="line.1742"></a>
<span class="sourceLineNo">1743</span> f3 = i0 &lt; 0 ? 0 : d.getDouble(i0, i1 + 1);<a name="line.1743"></a>
<span class="sourceLineNo">1744</span> }<a name="line.1744"></a>
<span class="sourceLineNo">1745</span> }<a name="line.1745"></a>
<span class="sourceLineNo">1746</span> r = (1 - u0) * (1 - u1) * f1 + u0 * (1 - u1) * f2 + (1 - u0) * u1 * f3 + u0 * u1 * f4;<a name="line.1746"></a>
<span class="sourceLineNo">1747</span> } else {<a name="line.1747"></a>
<span class="sourceLineNo">1748</span> f3 = i0 &lt; 0 || i1 == e1 ? 0 : d.getDouble(i0, i1 + 1);<a name="line.1748"></a>
<span class="sourceLineNo">1749</span> r = (1 - u1) * f1 + u1 * f3;<a name="line.1749"></a>
<span class="sourceLineNo">1750</span> }<a name="line.1750"></a>
<span class="sourceLineNo">1751</span> } else { // exactly on axis 1<a name="line.1751"></a>
<span class="sourceLineNo">1752</span> if (u0 &gt; 0) {<a name="line.1752"></a>
<span class="sourceLineNo">1753</span> f2 = i0 == e0 || i1 &lt; 0 ? 0 : d.getDouble(i0 + 1, i1);<a name="line.1753"></a>
<span class="sourceLineNo">1754</span> r = (1 - u0) * f1 + u0 * f2;<a name="line.1754"></a>
<span class="sourceLineNo">1755</span> } else { // exactly on axis 0<a name="line.1755"></a>
<span class="sourceLineNo">1756</span> r = f1;<a name="line.1756"></a>
<span class="sourceLineNo">1757</span> }<a name="line.1757"></a>
<span class="sourceLineNo">1758</span> }<a name="line.1758"></a>
<span class="sourceLineNo">1759</span> return r;<a name="line.1759"></a>
<span class="sourceLineNo">1760</span> }<a name="line.1760"></a>
<span class="sourceLineNo">1761</span><a name="line.1761"></a>
<span class="sourceLineNo">1762</span> /**<a name="line.1762"></a>
<span class="sourceLineNo">1763</span> * Linearly interpolate a value at a point in a 2D dataset with a mask. The<a name="line.1763"></a>
<span class="sourceLineNo">1764</span> * dataset is considered to have zero support outside its bounds. Thus<a name="line.1764"></a>
<span class="sourceLineNo">1765</span> * points just outside are interpolated from the boundary value to zero.<a name="line.1765"></a>
<span class="sourceLineNo">1766</span> * <a name="line.1766"></a>
<span class="sourceLineNo">1767</span> * @param d<a name="line.1767"></a>
<span class="sourceLineNo">1768</span> * input dataset<a name="line.1768"></a>
<span class="sourceLineNo">1769</span> * @param m<a name="line.1769"></a>
<span class="sourceLineNo">1770</span> * mask dataset<a name="line.1770"></a>
<span class="sourceLineNo">1771</span> * @param x0<a name="line.1771"></a>
<span class="sourceLineNo">1772</span> * coordinate<a name="line.1772"></a>
<span class="sourceLineNo">1773</span> * @param x1<a name="line.1773"></a>
<span class="sourceLineNo">1774</span> * coordinate<a name="line.1774"></a>
<span class="sourceLineNo">1775</span> * @return bilinear interpolation<a name="line.1775"></a>
<span class="sourceLineNo">1776</span> */<a name="line.1776"></a>
<span class="sourceLineNo">1777</span> public static double interpolate(final Dataset d, final Dataset m, final double x0, final double x1) {<a name="line.1777"></a>
<span class="sourceLineNo">1778</span> if (m == null) {<a name="line.1778"></a>
<span class="sourceLineNo">1779</span> return interpolate(d, x0, x1);<a name="line.1779"></a>
<span class="sourceLineNo">1780</span> }<a name="line.1780"></a>
<span class="sourceLineNo">1781</span><a name="line.1781"></a>
<span class="sourceLineNo">1782</span> final int[] s = d.getShapeRef();<a name="line.1782"></a>
<span class="sourceLineNo">1783</span> assert s.length == 2;<a name="line.1783"></a>
<span class="sourceLineNo">1784</span> assert m.getRank() == 2;<a name="line.1784"></a>
<span class="sourceLineNo">1785</span><a name="line.1785"></a>
<span class="sourceLineNo">1786</span> final int e0 = s[0] - 1;<a name="line.1786"></a>
<span class="sourceLineNo">1787</span> final int e1 = s[1] - 1;<a name="line.1787"></a>
<span class="sourceLineNo">1788</span> final int i0 = (int) Math.floor(x0);<a name="line.1788"></a>
<span class="sourceLineNo">1789</span> final int i1 = (int) Math.floor(x1);<a name="line.1789"></a>
<span class="sourceLineNo">1790</span> final double u0 = x0 - i0;<a name="line.1790"></a>
<span class="sourceLineNo">1791</span> final double u1 = x1 - i1;<a name="line.1791"></a>
<span class="sourceLineNo">1792</span> if (i0 &lt; -1 || i0 &gt; e0 || i1 &lt; -1 || i1 &gt; e1) {<a name="line.1792"></a>
<span class="sourceLineNo">1793</span> return 0;<a name="line.1793"></a>
<span class="sourceLineNo">1794</span> }<a name="line.1794"></a>
<span class="sourceLineNo">1795</span><a name="line.1795"></a>
<span class="sourceLineNo">1796</span> // use bilinear interpolation<a name="line.1796"></a>
<span class="sourceLineNo">1797</span> double r = 0;<a name="line.1797"></a>
<span class="sourceLineNo">1798</span> final double f1, f2, f3, f4;<a name="line.1798"></a>
<span class="sourceLineNo">1799</span> f1 = i0 &lt; 0 || i1 &lt; 0 ? 0 : d.getDouble(i0, i1) * m.getDouble(i0, i1);<a name="line.1799"></a>
<span class="sourceLineNo">1800</span> if (u1 &gt; 0) {<a name="line.1800"></a>
<span class="sourceLineNo">1801</span> if (i0 == e0) {<a name="line.1801"></a>
<span class="sourceLineNo">1802</span> f2 = 0;<a name="line.1802"></a>
<span class="sourceLineNo">1803</span> f4 = 0;<a name="line.1803"></a>
<span class="sourceLineNo">1804</span> f3 = i1 == e1 ? 0 : d.getDouble(i0, i1 + 1) * m.getDouble(i0, i1 + 1);<a name="line.1804"></a>
<span class="sourceLineNo">1805</span> } else {<a name="line.1805"></a>
<span class="sourceLineNo">1806</span> f2 = i1 &lt; 0 ? 0 : d.getDouble(i0 + 1, i1) * m.getDouble(i0 + 1, i1);<a name="line.1806"></a>
<span class="sourceLineNo">1807</span> if (i1 == e1) {<a name="line.1807"></a>
<span class="sourceLineNo">1808</span> f4 = 0;<a name="line.1808"></a>
<span class="sourceLineNo">1809</span> f3 = 0;<a name="line.1809"></a>
<span class="sourceLineNo">1810</span> } else {<a name="line.1810"></a>
<span class="sourceLineNo">1811</span> f4 = d.getDouble(i0 + 1, i1 + 1) * m.getDouble(i0 + 1, i1 + 1);<a name="line.1811"></a>
<span class="sourceLineNo">1812</span> f3 = i0 &lt; 0 ? 0 : d.getDouble(i0, i1 + 1) * m.getDouble(i0, i1 + 1);<a name="line.1812"></a>
<span class="sourceLineNo">1813</span> }<a name="line.1813"></a>
<span class="sourceLineNo">1814</span> }<a name="line.1814"></a>
<span class="sourceLineNo">1815</span> r = (1 - u0) * (1 - u1) * f1 + u0 * (1 - u1) * f2 + (1 - u0) * u1 * f3 + u0 * u1 * f4;<a name="line.1815"></a>
<span class="sourceLineNo">1816</span> } else { // exactly on axis 1<a name="line.1816"></a>
<span class="sourceLineNo">1817</span> if (u0 &gt; 0) {<a name="line.1817"></a>
<span class="sourceLineNo">1818</span> f2 = i0 == e0 || i1 &lt; 0 ? 0 : d.getDouble(i0 + 1, i1) * m.getDouble(i0 + 1, i1);<a name="line.1818"></a>
<span class="sourceLineNo">1819</span> r = (1 - u0) * f1 + u0 * f2;<a name="line.1819"></a>
<span class="sourceLineNo">1820</span> } else { // exactly on axis 0<a name="line.1820"></a>
<span class="sourceLineNo">1821</span> r = f1;<a name="line.1821"></a>
<span class="sourceLineNo">1822</span> }<a name="line.1822"></a>
<span class="sourceLineNo">1823</span> }<a name="line.1823"></a>
<span class="sourceLineNo">1824</span> return r;<a name="line.1824"></a>
<span class="sourceLineNo">1825</span> }<a name="line.1825"></a>
<span class="sourceLineNo">1826</span><a name="line.1826"></a>
<span class="sourceLineNo">1827</span> /**<a name="line.1827"></a>
<span class="sourceLineNo">1828</span> * Linearly interpolate an array of values at a point in a compound 2D<a name="line.1828"></a>
<span class="sourceLineNo">1829</span> * dataset. The dataset is considered to have zero support outside its<a name="line.1829"></a>
<span class="sourceLineNo">1830</span> * bounds. Thus points just outside are interpolated from the boundary value<a name="line.1830"></a>
<span class="sourceLineNo">1831</span> * to zero.<a name="line.1831"></a>
<span class="sourceLineNo">1832</span> * <a name="line.1832"></a>
<span class="sourceLineNo">1833</span> * @param values<a name="line.1833"></a>
<span class="sourceLineNo">1834</span> * bilinear interpolated array<a name="line.1834"></a>
<span class="sourceLineNo">1835</span> * @param d<a name="line.1835"></a>
<span class="sourceLineNo">1836</span> * @param x0<a name="line.1836"></a>
<span class="sourceLineNo">1837</span> * @param x1<a name="line.1837"></a>
<span class="sourceLineNo">1838</span> */<a name="line.1838"></a>
<span class="sourceLineNo">1839</span> public static void interpolate(final double[] values, final CompoundDataset d, final double x0, final double x1) {<a name="line.1839"></a>
<span class="sourceLineNo">1840</span> final int[] s = d.getShapeRef();<a name="line.1840"></a>
<span class="sourceLineNo">1841</span> assert s.length == 2;<a name="line.1841"></a>
<span class="sourceLineNo">1842</span><a name="line.1842"></a>
<span class="sourceLineNo">1843</span> final int is = d.getElementsPerItem();<a name="line.1843"></a>
<span class="sourceLineNo">1844</span> if (is != values.length) {<a name="line.1844"></a>
<span class="sourceLineNo">1845</span> throw new IllegalArgumentException("Output array length must match elements in item");<a name="line.1845"></a>
<span class="sourceLineNo">1846</span> }<a name="line.1846"></a>
<span class="sourceLineNo">1847</span><a name="line.1847"></a>
<span class="sourceLineNo">1848</span> final int e0 = s[0] - 1;<a name="line.1848"></a>
<span class="sourceLineNo">1849</span> final int e1 = s[1] - 1;<a name="line.1849"></a>
<span class="sourceLineNo">1850</span> final int i0 = (int) Math.floor(x0);<a name="line.1850"></a>
<span class="sourceLineNo">1851</span> final int i1 = (int) Math.floor(x1);<a name="line.1851"></a>
<span class="sourceLineNo">1852</span> final double u0 = x0 - i0;<a name="line.1852"></a>
<span class="sourceLineNo">1853</span> final double u1 = x1 - i1;<a name="line.1853"></a>
<span class="sourceLineNo">1854</span> if (i0 &lt; -1 || i0 &gt; e0 || i1 &lt; -1 || i1 &gt; e1) {<a name="line.1854"></a>
<span class="sourceLineNo">1855</span> Arrays.fill(values, 0);<a name="line.1855"></a>
<span class="sourceLineNo">1856</span> return;<a name="line.1856"></a>
<span class="sourceLineNo">1857</span> }<a name="line.1857"></a>
<span class="sourceLineNo">1858</span> // use bilinear interpolation<a name="line.1858"></a>
<span class="sourceLineNo">1859</span> double[] f1 = new double[is];<a name="line.1859"></a>
<span class="sourceLineNo">1860</span> if (i0 &gt;= 0 &amp;&amp; i1 &gt;= 0) {<a name="line.1860"></a>
<span class="sourceLineNo">1861</span> d.getDoubleArray(f1, i0, i1);<a name="line.1861"></a>
<span class="sourceLineNo">1862</span> }<a name="line.1862"></a>
<span class="sourceLineNo">1863</span><a name="line.1863"></a>
<span class="sourceLineNo">1864</span> if (u1 &gt; 0) {<a name="line.1864"></a>
<span class="sourceLineNo">1865</span> if (u0 &gt; 0) {<a name="line.1865"></a>
<span class="sourceLineNo">1866</span> double[] f2 = new double[is];<a name="line.1866"></a>
<span class="sourceLineNo">1867</span> double[] f3 = new double[is];<a name="line.1867"></a>
<span class="sourceLineNo">1868</span> double[] f4 = new double[is];<a name="line.1868"></a>
<span class="sourceLineNo">1869</span> if (i0 != e0) {<a name="line.1869"></a>
<span class="sourceLineNo">1870</span> if (i1 != e1) {<a name="line.1870"></a>
<span class="sourceLineNo">1871</span> d.getDoubleArray(f3, i0 + 1, i1 + 1);<a name="line.1871"></a>
<span class="sourceLineNo">1872</span> }<a name="line.1872"></a>
<span class="sourceLineNo">1873</span> if (i1 &gt;= 0) {<a name="line.1873"></a>
<span class="sourceLineNo">1874</span> d.getDoubleArray(f4, i0 + 1, i1);<a name="line.1874"></a>
<span class="sourceLineNo">1875</span> }<a name="line.1875"></a>
<span class="sourceLineNo">1876</span> }<a name="line.1876"></a>
<span class="sourceLineNo">1877</span> if (i0 &gt;= 0 &amp;&amp; i1 != e1) {<a name="line.1877"></a>
<span class="sourceLineNo">1878</span> d.getDoubleArray(f2, i0, i1 + 1);<a name="line.1878"></a>
<span class="sourceLineNo">1879</span> }<a name="line.1879"></a>
<span class="sourceLineNo">1880</span> final double t0 = 1 - u0;<a name="line.1880"></a>
<span class="sourceLineNo">1881</span> final double t1 = 1 - u1;<a name="line.1881"></a>
<span class="sourceLineNo">1882</span> final double w1 = t0 * t1;<a name="line.1882"></a>
<span class="sourceLineNo">1883</span> final double w2 = t0 * u1;<a name="line.1883"></a>
<span class="sourceLineNo">1884</span> final double w3 = u0 * u1;<a name="line.1884"></a>
<span class="sourceLineNo">1885</span> final double w4 = u0 * t1;<a name="line.1885"></a>
<span class="sourceLineNo">1886</span> for (int j = 0; j &lt; is; j++) {<a name="line.1886"></a>
<span class="sourceLineNo">1887</span> values[j] = w1 * f1[j] + w2 * f2[j] + w3 * f3[j] + w4 * f4[j];<a name="line.1887"></a>
<span class="sourceLineNo">1888</span> }<a name="line.1888"></a>
<span class="sourceLineNo">1889</span> } else {<a name="line.1889"></a>
<span class="sourceLineNo">1890</span> double[] f2 = new double[is];<a name="line.1890"></a>
<span class="sourceLineNo">1891</span> if (i0 &gt;= 0 &amp;&amp; i1 != e1) {<a name="line.1891"></a>
<span class="sourceLineNo">1892</span> d.getDoubleArray(f2, i0, i1 + 1);<a name="line.1892"></a>
<span class="sourceLineNo">1893</span> }<a name="line.1893"></a>
<span class="sourceLineNo">1894</span> final double t1 = 1 - u1;<a name="line.1894"></a>
<span class="sourceLineNo">1895</span> for (int j = 0; j &lt; is; j++) {<a name="line.1895"></a>
<span class="sourceLineNo">1896</span> values[j] = t1 * f1[j] + u1 * f2[j];<a name="line.1896"></a>
<span class="sourceLineNo">1897</span> }<a name="line.1897"></a>
<span class="sourceLineNo">1898</span> }<a name="line.1898"></a>
<span class="sourceLineNo">1899</span> } else { // exactly on axis 1<a name="line.1899"></a>
<span class="sourceLineNo">1900</span> if (u0 &gt; 0) {<a name="line.1900"></a>
<span class="sourceLineNo">1901</span> double[] f4 = new double[is];<a name="line.1901"></a>
<span class="sourceLineNo">1902</span> if (i0 != e0 &amp;&amp; i1 &gt;= 0) {<a name="line.1902"></a>
<span class="sourceLineNo">1903</span> d.getDoubleArray(f4, i0 + 1, i1);<a name="line.1903"></a>
<span class="sourceLineNo">1904</span> }<a name="line.1904"></a>
<span class="sourceLineNo">1905</span> final double t0 = 1 - u0;<a name="line.1905"></a>
<span class="sourceLineNo">1906</span> for (int j = 0; j &lt; is; j++) {<a name="line.1906"></a>
<span class="sourceLineNo">1907</span> values[j] = t0 * f1[j] + u0 * f4[j];<a name="line.1907"></a>
<span class="sourceLineNo">1908</span> }<a name="line.1908"></a>
<span class="sourceLineNo">1909</span> } else { // exactly on axis 0<a name="line.1909"></a>
<span class="sourceLineNo">1910</span> if (i0 &gt;= 0 &amp;&amp; i1 &gt;= 0) {<a name="line.1910"></a>
<span class="sourceLineNo">1911</span> d.getDoubleArray(values, i0, i1);<a name="line.1911"></a>
<span class="sourceLineNo">1912</span> } else {<a name="line.1912"></a>
<span class="sourceLineNo">1913</span> Arrays.fill(values, 0);<a name="line.1913"></a>
<span class="sourceLineNo">1914</span> }<a name="line.1914"></a>
<span class="sourceLineNo">1915</span> }<a name="line.1915"></a>
<span class="sourceLineNo">1916</span> }<a name="line.1916"></a>
<span class="sourceLineNo">1917</span> }<a name="line.1917"></a>
<span class="sourceLineNo">1918</span><a name="line.1918"></a>
<span class="sourceLineNo">1919</span> /**<a name="line.1919"></a>
<span class="sourceLineNo">1920</span> * Linearly interpolate a value at a point in a n-D dataset. The dataset is<a name="line.1920"></a>
<span class="sourceLineNo">1921</span> * considered to have zero support outside its bounds. Thus points just<a name="line.1921"></a>
<span class="sourceLineNo">1922</span> * outside are interpolated from the boundary value to zero. The number of<a name="line.1922"></a>
<span class="sourceLineNo">1923</span> * coordinates must match the rank of the dataset.<a name="line.1923"></a>
<span class="sourceLineNo">1924</span> * <a name="line.1924"></a>
<span class="sourceLineNo">1925</span> * @param d<a name="line.1925"></a>
<span class="sourceLineNo">1926</span> * input dataset<a name="line.1926"></a>
<span class="sourceLineNo">1927</span> * @param x<a name="line.1927"></a>
<span class="sourceLineNo">1928</span> * coordinates<a name="line.1928"></a>
<span class="sourceLineNo">1929</span> * @return interpolated value<a name="line.1929"></a>
<span class="sourceLineNo">1930</span> */<a name="line.1930"></a>
<span class="sourceLineNo">1931</span> public static double interpolate(final Dataset d, final double... x) {<a name="line.1931"></a>
<span class="sourceLineNo">1932</span> return interpolate(d, null, x);<a name="line.1932"></a>
<span class="sourceLineNo">1933</span> }<a name="line.1933"></a>
<span class="sourceLineNo">1934</span><a name="line.1934"></a>
<span class="sourceLineNo">1935</span> /**<a name="line.1935"></a>
<span class="sourceLineNo">1936</span> * Linearly interpolate a value at a point in a n-D dataset with a mask. The<a name="line.1936"></a>
<span class="sourceLineNo">1937</span> * dataset is considered to have zero support outside its bounds. Thus<a name="line.1937"></a>
<span class="sourceLineNo">1938</span> * points just outside are interpolated from the boundary value to zero. The<a name="line.1938"></a>
<span class="sourceLineNo">1939</span> * number of coordinates must match the rank of the dataset.<a name="line.1939"></a>
<span class="sourceLineNo">1940</span> * <a name="line.1940"></a>
<span class="sourceLineNo">1941</span> * @param d<a name="line.1941"></a>
<span class="sourceLineNo">1942</span> * input dataset<a name="line.1942"></a>
<span class="sourceLineNo">1943</span> * @param m<a name="line.1943"></a>
<span class="sourceLineNo">1944</span> * mask dataset (can be null)<a name="line.1944"></a>
<span class="sourceLineNo">1945</span> * @param x<a name="line.1945"></a>
<span class="sourceLineNo">1946</span> * coordinates<a name="line.1946"></a>
<span class="sourceLineNo">1947</span> * @return interpolated value<a name="line.1947"></a>
<span class="sourceLineNo">1948</span> */<a name="line.1948"></a>
<span class="sourceLineNo">1949</span> public static double interpolate(final Dataset d, final Dataset m, final double... x) {<a name="line.1949"></a>
<span class="sourceLineNo">1950</span> int r = d.getRank();<a name="line.1950"></a>
<span class="sourceLineNo">1951</span> if (r != x.length) {<a name="line.1951"></a>
<span class="sourceLineNo">1952</span> throw new IllegalArgumentException("Number of coordinates must be equal to rank of dataset");<a name="line.1952"></a>
<span class="sourceLineNo">1953</span> }<a name="line.1953"></a>
<span class="sourceLineNo">1954</span><a name="line.1954"></a>
<span class="sourceLineNo">1955</span> switch (r) {<a name="line.1955"></a>
<span class="sourceLineNo">1956</span> case 1:<a name="line.1956"></a>
<span class="sourceLineNo">1957</span> return m == null ? interpolate(d, x[0]) : interpolate(d, m, x[0]);<a name="line.1957"></a>
<span class="sourceLineNo">1958</span> case 2:<a name="line.1958"></a>
<span class="sourceLineNo">1959</span> return m == null ? interpolate(d, x[0], x[1]) : interpolate(d, m, x[0], x[1]);<a name="line.1959"></a>
<span class="sourceLineNo">1960</span> }<a name="line.1960"></a>
<span class="sourceLineNo">1961</span><a name="line.1961"></a>
<span class="sourceLineNo">1962</span> if (m != null &amp;&amp; r != m.getRank()) {<a name="line.1962"></a>
<span class="sourceLineNo">1963</span> throw new IllegalArgumentException("Rank of mask dataset must be equal to rank of dataset");<a name="line.1963"></a>
<span class="sourceLineNo">1964</span> }<a name="line.1964"></a>
<span class="sourceLineNo">1965</span><a name="line.1965"></a>
<span class="sourceLineNo">1966</span> // now do it iteratively<a name="line.1966"></a>
<span class="sourceLineNo">1967</span> int[] l = new int[r]; // lower indexes<a name="line.1967"></a>
<span class="sourceLineNo">1968</span> double[] f = new double[r]; // fractions<a name="line.1968"></a>
<span class="sourceLineNo">1969</span> for (int i = 0; i &lt; r; i++) {<a name="line.1969"></a>
<span class="sourceLineNo">1970</span> double xi = x[i];<a name="line.1970"></a>
<span class="sourceLineNo">1971</span> l[i] = (int) Math.floor(xi);<a name="line.1971"></a>
<span class="sourceLineNo">1972</span> f[i] = xi - l[i];<a name="line.1972"></a>
<span class="sourceLineNo">1973</span> }<a name="line.1973"></a>
<span class="sourceLineNo">1974</span><a name="line.1974"></a>
<span class="sourceLineNo">1975</span> int[] s = d.getShape();<a name="line.1975"></a>
<span class="sourceLineNo">1976</span><a name="line.1976"></a>
<span class="sourceLineNo">1977</span> int n = 1 &lt;&lt; r;<a name="line.1977"></a>
<span class="sourceLineNo">1978</span> double[] results = new double[n];<a name="line.1978"></a>
<span class="sourceLineNo">1979</span><a name="line.1979"></a>
<span class="sourceLineNo">1980</span> // iterate over permutations {l} and {l+1}<a name="line.1980"></a>
<span class="sourceLineNo">1981</span> int[] twos = new int[r];<a name="line.1981"></a>
<span class="sourceLineNo">1982</span> Arrays.fill(twos, 2);<a name="line.1982"></a>
<span class="sourceLineNo">1983</span> PositionIterator it = new PositionIterator(twos);<a name="line.1983"></a>
<span class="sourceLineNo">1984</span> int[] ip = it.getPos();<a name="line.1984"></a>
<span class="sourceLineNo">1985</span> int j = 0;<a name="line.1985"></a>
<span class="sourceLineNo">1986</span> if (m == null) {<a name="line.1986"></a>
<span class="sourceLineNo">1987</span> while (it.hasNext()) {<a name="line.1987"></a>
<span class="sourceLineNo">1988</span> int[] p = l.clone();<a name="line.1988"></a>
<span class="sourceLineNo">1989</span> boolean omit = false;<a name="line.1989"></a>
<span class="sourceLineNo">1990</span> for (int i = 0; i &lt; r; i++) {<a name="line.1990"></a>
<span class="sourceLineNo">1991</span> int pi = p[i] + ip[i];<a name="line.1991"></a>
<span class="sourceLineNo">1992</span> if (pi &lt; 0 || pi &gt;= s[i]) {<a name="line.1992"></a>
<span class="sourceLineNo">1993</span> omit = true;<a name="line.1993"></a>
<span class="sourceLineNo">1994</span> break;<a name="line.1994"></a>
<span class="sourceLineNo">1995</span> }<a name="line.1995"></a>
<span class="sourceLineNo">1996</span> p[i] = pi;<a name="line.1996"></a>
<span class="sourceLineNo">1997</span> }<a name="line.1997"></a>
<span class="sourceLineNo">1998</span> results[j++] = omit ? 0 : d.getDouble(p);<a name="line.1998"></a>
<span class="sourceLineNo">1999</span> }<a name="line.1999"></a>
<span class="sourceLineNo">2000</span> } else {<a name="line.2000"></a>
<span class="sourceLineNo">2001</span> while (it.hasNext()) {<a name="line.2001"></a>
<span class="sourceLineNo">2002</span> int[] p = l.clone();<a name="line.2002"></a>
<span class="sourceLineNo">2003</span> boolean omit = false;<a name="line.2003"></a>
<span class="sourceLineNo">2004</span> for (int i = 0; i &lt; r; i++) {<a name="line.2004"></a>
<span class="sourceLineNo">2005</span> int pi = p[i] + ip[i];<a name="line.2005"></a>
<span class="sourceLineNo">2006</span> if (pi &lt; 0 || pi &gt;= s[i]) {<a name="line.2006"></a>
<span class="sourceLineNo">2007</span> omit = true;<a name="line.2007"></a>
<span class="sourceLineNo">2008</span> break;<a name="line.2008"></a>
<span class="sourceLineNo">2009</span> }<a name="line.2009"></a>
<span class="sourceLineNo">2010</span> p[i] = pi;<a name="line.2010"></a>
<span class="sourceLineNo">2011</span> }<a name="line.2011"></a>
<span class="sourceLineNo">2012</span> results[j++] = omit ? 0 : d.getDouble(p) * m.getDouble(p);<a name="line.2012"></a>
<span class="sourceLineNo">2013</span> }<a name="line.2013"></a>
<span class="sourceLineNo">2014</span> }<a name="line.2014"></a>
<span class="sourceLineNo">2015</span><a name="line.2015"></a>
<span class="sourceLineNo">2016</span> // reduce recursively<a name="line.2016"></a>
<span class="sourceLineNo">2017</span> for (int i = r - 1; i &gt;= 0; i--) {<a name="line.2017"></a>
<span class="sourceLineNo">2018</span> results = combine(results, f[i], 1 &lt;&lt; i);<a name="line.2018"></a>
<span class="sourceLineNo">2019</span> }<a name="line.2019"></a>
<span class="sourceLineNo">2020</span> return results[0];<a name="line.2020"></a>
<span class="sourceLineNo">2021</span> }<a name="line.2021"></a>
<span class="sourceLineNo">2022</span><a name="line.2022"></a>
<span class="sourceLineNo">2023</span> private static double[] combine(double[] values, double f, int n) {<a name="line.2023"></a>
<span class="sourceLineNo">2024</span> double g = 1 - f;<a name="line.2024"></a>
<span class="sourceLineNo">2025</span> double[] results = new double[n];<a name="line.2025"></a>
<span class="sourceLineNo">2026</span> for (int j = 0; j &lt; n; j++) {<a name="line.2026"></a>
<span class="sourceLineNo">2027</span> int tj = 2 * j;<a name="line.2027"></a>
<span class="sourceLineNo">2028</span> results[j] = g * values[tj] + f * values[tj + 1];<a name="line.2028"></a>
<span class="sourceLineNo">2029</span> }<a name="line.2029"></a>
<span class="sourceLineNo">2030</span><a name="line.2030"></a>
<span class="sourceLineNo">2031</span> return results;<a name="line.2031"></a>
<span class="sourceLineNo">2032</span> }<a name="line.2032"></a>
<span class="sourceLineNo">2033</span><a name="line.2033"></a>
<span class="sourceLineNo">2034</span> /**<a name="line.2034"></a>
<span class="sourceLineNo">2035</span> * Linearly interpolate an array of values at a point in a compound n-D<a name="line.2035"></a>
<span class="sourceLineNo">2036</span> * dataset. The dataset is considered to have zero support outside its<a name="line.2036"></a>
<span class="sourceLineNo">2037</span> * bounds. Thus points just outside are interpolated from the boundary value<a name="line.2037"></a>
<span class="sourceLineNo">2038</span> * to zero.<a name="line.2038"></a>
<span class="sourceLineNo">2039</span> * <a name="line.2039"></a>
<span class="sourceLineNo">2040</span> * @param values<a name="line.2040"></a>
<span class="sourceLineNo">2041</span> * linearly interpolated array<a name="line.2041"></a>
<span class="sourceLineNo">2042</span> * @param d<a name="line.2042"></a>
<span class="sourceLineNo">2043</span> * @param x<a name="line.2043"></a>
<span class="sourceLineNo">2044</span> */<a name="line.2044"></a>
<span class="sourceLineNo">2045</span> public static void interpolate(final double[] values, final CompoundDataset d, final double... x) {<a name="line.2045"></a>
<span class="sourceLineNo">2046</span> int r = d.getRank();<a name="line.2046"></a>
<span class="sourceLineNo">2047</span> if (r != x.length) {<a name="line.2047"></a>
<span class="sourceLineNo">2048</span> throw new IllegalArgumentException("Number of coordinates must be equal to rank of dataset");<a name="line.2048"></a>
<span class="sourceLineNo">2049</span> }<a name="line.2049"></a>
<span class="sourceLineNo">2050</span><a name="line.2050"></a>
<span class="sourceLineNo">2051</span> switch (r) {<a name="line.2051"></a>
<span class="sourceLineNo">2052</span> case 1:<a name="line.2052"></a>
<span class="sourceLineNo">2053</span> interpolate(values, d, x[0]);<a name="line.2053"></a>
<span class="sourceLineNo">2054</span> return;<a name="line.2054"></a>
<span class="sourceLineNo">2055</span> case 2:<a name="line.2055"></a>
<span class="sourceLineNo">2056</span> interpolate(values, d, x[0], x[1]);<a name="line.2056"></a>
<span class="sourceLineNo">2057</span> return;<a name="line.2057"></a>
<span class="sourceLineNo">2058</span> }<a name="line.2058"></a>
<span class="sourceLineNo">2059</span><a name="line.2059"></a>
<span class="sourceLineNo">2060</span> final int is = d.getElementsPerItem();<a name="line.2060"></a>
<span class="sourceLineNo">2061</span> if (is != values.length) {<a name="line.2061"></a>
<span class="sourceLineNo">2062</span> throw new IllegalArgumentException("Output array length must match elements in item");<a name="line.2062"></a>
<span class="sourceLineNo">2063</span> }<a name="line.2063"></a>
<span class="sourceLineNo">2064</span><a name="line.2064"></a>
<span class="sourceLineNo">2065</span> // now do it iteratively<a name="line.2065"></a>
<span class="sourceLineNo">2066</span> int[] l = new int[r]; // lower indexes<a name="line.2066"></a>
<span class="sourceLineNo">2067</span> double[] f = new double[r]; // fractions<a name="line.2067"></a>
<span class="sourceLineNo">2068</span> for (int i = 0; i &lt; r; i++) {<a name="line.2068"></a>
<span class="sourceLineNo">2069</span> double xi = x[i];<a name="line.2069"></a>
<span class="sourceLineNo">2070</span> l[i] = (int) Math.floor(xi);<a name="line.2070"></a>
<span class="sourceLineNo">2071</span> f[i] = xi - l[i];<a name="line.2071"></a>
<span class="sourceLineNo">2072</span> }<a name="line.2072"></a>
<span class="sourceLineNo">2073</span><a name="line.2073"></a>
<span class="sourceLineNo">2074</span> int[] s = d.getShape();<a name="line.2074"></a>
<span class="sourceLineNo">2075</span><a name="line.2075"></a>
<span class="sourceLineNo">2076</span> int n = 1 &lt;&lt; r;<a name="line.2076"></a>
<span class="sourceLineNo">2077</span> double[][] results = new double[n][is];<a name="line.2077"></a>
<span class="sourceLineNo">2078</span><a name="line.2078"></a>
<span class="sourceLineNo">2079</span> // iterate over permutations {l} and {l+1}<a name="line.2079"></a>
<span class="sourceLineNo">2080</span> int[] twos = new int[r];<a name="line.2080"></a>
<span class="sourceLineNo">2081</span> Arrays.fill(twos, 2);<a name="line.2081"></a>
<span class="sourceLineNo">2082</span> PositionIterator it = new PositionIterator(twos);<a name="line.2082"></a>
<span class="sourceLineNo">2083</span> int[] ip = it.getPos();<a name="line.2083"></a>
<span class="sourceLineNo">2084</span> int j = 0;<a name="line.2084"></a>
<span class="sourceLineNo">2085</span> while (it.hasNext()) {<a name="line.2085"></a>
<span class="sourceLineNo">2086</span> int[] p = l.clone();<a name="line.2086"></a>
<span class="sourceLineNo">2087</span> boolean omit = false;<a name="line.2087"></a>
<span class="sourceLineNo">2088</span> for (int i = 0; i &lt; r; i++) {<a name="line.2088"></a>
<span class="sourceLineNo">2089</span> int pi = p[i] + ip[i];<a name="line.2089"></a>
<span class="sourceLineNo">2090</span> if (pi &lt; 0 || pi &gt;= s[i]) {<a name="line.2090"></a>
<span class="sourceLineNo">2091</span> omit = true;<a name="line.2091"></a>
<span class="sourceLineNo">2092</span> break;<a name="line.2092"></a>
<span class="sourceLineNo">2093</span> }<a name="line.2093"></a>
<span class="sourceLineNo">2094</span> p[i] = pi;<a name="line.2094"></a>
<span class="sourceLineNo">2095</span> }<a name="line.2095"></a>
<span class="sourceLineNo">2096</span> if (!omit) {<a name="line.2096"></a>
<span class="sourceLineNo">2097</span> d.getDoubleArray(results[j++], p);<a name="line.2097"></a>
<span class="sourceLineNo">2098</span> }<a name="line.2098"></a>
<span class="sourceLineNo">2099</span> }<a name="line.2099"></a>
<span class="sourceLineNo">2100</span><a name="line.2100"></a>
<span class="sourceLineNo">2101</span> // reduce recursively<a name="line.2101"></a>
<span class="sourceLineNo">2102</span> for (int i = r - 1; i &gt;= 0; i--) {<a name="line.2102"></a>
<span class="sourceLineNo">2103</span> results = combineArray(is, results, f[i], 1 &lt;&lt; i);<a name="line.2103"></a>
<span class="sourceLineNo">2104</span> }<a name="line.2104"></a>
<span class="sourceLineNo">2105</span> for (int k = 0; k &lt; is; k++) {<a name="line.2105"></a>
<span class="sourceLineNo">2106</span> values[k] = results[0][k];<a name="line.2106"></a>
<span class="sourceLineNo">2107</span> }<a name="line.2107"></a>
<span class="sourceLineNo">2108</span> }<a name="line.2108"></a>
<span class="sourceLineNo">2109</span><a name="line.2109"></a>
<span class="sourceLineNo">2110</span> private static double[][] combineArray(int is, double[][] values, double f, int n) {<a name="line.2110"></a>
<span class="sourceLineNo">2111</span> double g = 1 - f;<a name="line.2111"></a>
<span class="sourceLineNo">2112</span> double[][] results = new double[n][is];<a name="line.2112"></a>
<span class="sourceLineNo">2113</span> for (int j = 0; j &lt; n; j++) {<a name="line.2113"></a>
<span class="sourceLineNo">2114</span> int tj = 2 * j;<a name="line.2114"></a>
<span class="sourceLineNo">2115</span> for (int k = 0; k &lt; is; k++) {<a name="line.2115"></a>
<span class="sourceLineNo">2116</span> results[j][k] = g * values[tj][k] + f * values[tj + 1][k];<a name="line.2116"></a>
<span class="sourceLineNo">2117</span> }<a name="line.2117"></a>
<span class="sourceLineNo">2118</span> }<a name="line.2118"></a>
<span class="sourceLineNo">2119</span><a name="line.2119"></a>
<span class="sourceLineNo">2120</span> return results;<a name="line.2120"></a>
<span class="sourceLineNo">2121</span> }<a name="line.2121"></a>
<span class="sourceLineNo">2122</span><a name="line.2122"></a>
<span class="sourceLineNo">2123</span> /**<a name="line.2123"></a>
<span class="sourceLineNo">2124</span> * Linearly interpolate a value at a point in a 1D dataset. The dataset is<a name="line.2124"></a>
<span class="sourceLineNo">2125</span> * considered to have zero support outside its bounds. Thus points just<a name="line.2125"></a>
<span class="sourceLineNo">2126</span> * outside are interpolated from the boundary value to zero.<a name="line.2126"></a>
<span class="sourceLineNo">2127</span> * <a name="line.2127"></a>
<span class="sourceLineNo">2128</span> * @param d<a name="line.2128"></a>
<span class="sourceLineNo">2129</span> * input dataset<a name="line.2129"></a>
<span class="sourceLineNo">2130</span> * @param x0<a name="line.2130"></a>
<span class="sourceLineNo">2131</span> * coordinate<a name="line.2131"></a>
<span class="sourceLineNo">2132</span> * @return interpolated value<a name="line.2132"></a>
<span class="sourceLineNo">2133</span> * @deprecated Use {@link #interpolate(Dataset, double)}<a name="line.2133"></a>
<span class="sourceLineNo">2134</span> */<a name="line.2134"></a>
<span class="sourceLineNo">2135</span> @Deprecated<a name="line.2135"></a>
<span class="sourceLineNo">2136</span> public static double getLinear(final IDataset d, final double x0) {<a name="line.2136"></a>
<span class="sourceLineNo">2137</span> return interpolate(DatasetUtils.convertToDataset(d), x0);<a name="line.2137"></a>
<span class="sourceLineNo">2138</span> }<a name="line.2138"></a>
<span class="sourceLineNo">2139</span><a name="line.2139"></a>
<span class="sourceLineNo">2140</span> /**<a name="line.2140"></a>
<span class="sourceLineNo">2141</span> * Linearly interpolate a value at a point in a compound 1D dataset. The<a name="line.2141"></a>
<span class="sourceLineNo">2142</span> * dataset is considered to have zero support outside its bounds. Thus<a name="line.2142"></a>
<span class="sourceLineNo">2143</span> * points just outside are interpolated from the boundary value to zero.<a name="line.2143"></a>
<span class="sourceLineNo">2144</span> * <a name="line.2144"></a>
<span class="sourceLineNo">2145</span> * @param values<a name="line.2145"></a>
<span class="sourceLineNo">2146</span> * interpolated array<a name="line.2146"></a>
<span class="sourceLineNo">2147</span> * @param d<a name="line.2147"></a>
<span class="sourceLineNo">2148</span> * input dataset<a name="line.2148"></a>
<span class="sourceLineNo">2149</span> * @param x0<a name="line.2149"></a>
<span class="sourceLineNo">2150</span> * coordinate<a name="line.2150"></a>
<span class="sourceLineNo">2151</span> * @deprecated Use {@link #interpolate(double[], CompoundDataset, double)}<a name="line.2151"></a>
<span class="sourceLineNo">2152</span> */<a name="line.2152"></a>
<span class="sourceLineNo">2153</span> @Deprecated<a name="line.2153"></a>
<span class="sourceLineNo">2154</span> public static void getLinear(final double[] values, final CompoundDataset d, final double x0) {<a name="line.2154"></a>
<span class="sourceLineNo">2155</span> interpolate(values, d, x0);<a name="line.2155"></a>
<span class="sourceLineNo">2156</span> }<a name="line.2156"></a>
<span class="sourceLineNo">2157</span><a name="line.2157"></a>
<span class="sourceLineNo">2158</span> /**<a name="line.2158"></a>
<span class="sourceLineNo">2159</span> * Interpolated a value from 2D dataset<a name="line.2159"></a>
<span class="sourceLineNo">2160</span> * <a name="line.2160"></a>
<span class="sourceLineNo">2161</span> * @param d<a name="line.2161"></a>
<span class="sourceLineNo">2162</span> * input dataset<a name="line.2162"></a>
<span class="sourceLineNo">2163</span> * @param x0<a name="line.2163"></a>
<span class="sourceLineNo">2164</span> * coordinate<a name="line.2164"></a>
<span class="sourceLineNo">2165</span> * @param x1<a name="line.2165"></a>
<span class="sourceLineNo">2166</span> * coordinate<a name="line.2166"></a>
<span class="sourceLineNo">2167</span> * @return bilinear interpolation<a name="line.2167"></a>
<span class="sourceLineNo">2168</span> * @deprecated Use {@link #interpolate(Dataset, double, double)}<a name="line.2168"></a>
<span class="sourceLineNo">2169</span> */<a name="line.2169"></a>
<span class="sourceLineNo">2170</span> @Deprecated<a name="line.2170"></a>
<span class="sourceLineNo">2171</span> public static double getBilinear(final IDataset d, final double x0, final double x1) {<a name="line.2171"></a>
<span class="sourceLineNo">2172</span> return interpolate(DatasetUtils.convertToDataset(d), x0, x1);<a name="line.2172"></a>
<span class="sourceLineNo">2173</span> }<a name="line.2173"></a>
<span class="sourceLineNo">2174</span><a name="line.2174"></a>
<span class="sourceLineNo">2175</span> /**<a name="line.2175"></a>
<span class="sourceLineNo">2176</span> * Interpolated a value from 2D dataset with mask<a name="line.2176"></a>
<span class="sourceLineNo">2177</span> * <a name="line.2177"></a>
<span class="sourceLineNo">2178</span> * @param d<a name="line.2178"></a>
<span class="sourceLineNo">2179</span> * input dataset<a name="line.2179"></a>
<span class="sourceLineNo">2180</span> * @param m<a name="line.2180"></a>
<span class="sourceLineNo">2181</span> * mask dataset<a name="line.2181"></a>
<span class="sourceLineNo">2182</span> * @param x0<a name="line.2182"></a>
<span class="sourceLineNo">2183</span> * coordinate<a name="line.2183"></a>
<span class="sourceLineNo">2184</span> * @param x1<a name="line.2184"></a>
<span class="sourceLineNo">2185</span> * coordinate<a name="line.2185"></a>
<span class="sourceLineNo">2186</span> * @return bilinear interpolation<a name="line.2186"></a>
<span class="sourceLineNo">2187</span> * @deprecated Use {@link #interpolate(Dataset, Dataset, double, double)}<a name="line.2187"></a>
<span class="sourceLineNo">2188</span> */<a name="line.2188"></a>
<span class="sourceLineNo">2189</span> @Deprecated<a name="line.2189"></a>
<span class="sourceLineNo">2190</span> public static double getBilinear(final IDataset d, final IDataset m, final double x0, final double x1) {<a name="line.2190"></a>
<span class="sourceLineNo">2191</span> return interpolate(DatasetUtils.convertToDataset(d), DatasetUtils.convertToDataset(m), x0, x1);<a name="line.2191"></a>
<span class="sourceLineNo">2192</span> }<a name="line.2192"></a>
<span class="sourceLineNo">2193</span><a name="line.2193"></a>
<span class="sourceLineNo">2194</span> /**<a name="line.2194"></a>
<span class="sourceLineNo">2195</span> * Interpolated a value from 2D compound dataset<a name="line.2195"></a>
<span class="sourceLineNo">2196</span> * <a name="line.2196"></a>
<span class="sourceLineNo">2197</span> * @param values<a name="line.2197"></a>
<span class="sourceLineNo">2198</span> * bilinear interpolated array<a name="line.2198"></a>
<span class="sourceLineNo">2199</span> * @param d<a name="line.2199"></a>
<span class="sourceLineNo">2200</span> * @param x0<a name="line.2200"></a>
<span class="sourceLineNo">2201</span> * @param x1<a name="line.2201"></a>
<span class="sourceLineNo">2202</span> * @deprecated Use<a name="line.2202"></a>
<span class="sourceLineNo">2203</span> * {@link #interpolate(double[], CompoundDataset, double, double)}<a name="line.2203"></a>
<span class="sourceLineNo">2204</span> */<a name="line.2204"></a>
<span class="sourceLineNo">2205</span> @Deprecated<a name="line.2205"></a>
<span class="sourceLineNo">2206</span> public static void getBilinear(final double[] values, final CompoundDataset d, final double x0, final double x1) {<a name="line.2206"></a>
<span class="sourceLineNo">2207</span> interpolate(values, d, x0, x1);<a name="line.2207"></a>
<span class="sourceLineNo">2208</span> }<a name="line.2208"></a>
<span class="sourceLineNo">2209</span><a name="line.2209"></a>
<span class="sourceLineNo">2210</span> /**<a name="line.2210"></a>
<span class="sourceLineNo">2211</span> * generate binomial coefficients with negative sign:<a name="line.2211"></a>
<span class="sourceLineNo">2212</span> * &lt;p&gt;<a name="line.2212"></a>
<span class="sourceLineNo">2213</span> * <a name="line.2213"></a>
<span class="sourceLineNo">2214</span> * &lt;pre&gt;<a name="line.2214"></a>
<span class="sourceLineNo">2215</span> * (-1)^i n! / ( i! (n-i)! )<a name="line.2215"></a>
<span class="sourceLineNo">2216</span> * &lt;/pre&gt;<a name="line.2216"></a>
<span class="sourceLineNo">2217</span> * <a name="line.2217"></a>
<span class="sourceLineNo">2218</span> * @param n<a name="line.2218"></a>
<span class="sourceLineNo">2219</span> * @return array of coefficients<a name="line.2219"></a>
<span class="sourceLineNo">2220</span> */<a name="line.2220"></a>
<span class="sourceLineNo">2221</span> private static int[] bincoeff(final int n) {<a name="line.2221"></a>
<span class="sourceLineNo">2222</span> final int[] b = new int[n + 1];<a name="line.2222"></a>
<span class="sourceLineNo">2223</span> final int hn = n / 2;<a name="line.2223"></a>
<span class="sourceLineNo">2224</span><a name="line.2224"></a>
<span class="sourceLineNo">2225</span> int bc = 1;<a name="line.2225"></a>
<span class="sourceLineNo">2226</span> b[0] = bc;<a name="line.2226"></a>
<span class="sourceLineNo">2227</span> for (int i = 1; i &lt;= hn; i++) {<a name="line.2227"></a>
<span class="sourceLineNo">2228</span> bc = -(bc * (n - i + 1)) / i;<a name="line.2228"></a>
<span class="sourceLineNo">2229</span> b[i] = bc;<a name="line.2229"></a>
<span class="sourceLineNo">2230</span> }<a name="line.2230"></a>
<span class="sourceLineNo">2231</span> if (n % 2 != 0) {<a name="line.2231"></a>
<span class="sourceLineNo">2232</span> for (int i = hn + 1; i &lt;= n; i++) {<a name="line.2232"></a>
<span class="sourceLineNo">2233</span> b[i] = -b[n - i];<a name="line.2233"></a>
<span class="sourceLineNo">2234</span> }<a name="line.2234"></a>
<span class="sourceLineNo">2235</span> } else {<a name="line.2235"></a>
<span class="sourceLineNo">2236</span> for (int i = hn + 1; i &lt;= n; i++) {<a name="line.2236"></a>
<span class="sourceLineNo">2237</span> b[i] = b[n - i];<a name="line.2237"></a>
<span class="sourceLineNo">2238</span> }<a name="line.2238"></a>
<span class="sourceLineNo">2239</span> }<a name="line.2239"></a>
<span class="sourceLineNo">2240</span> return b;<a name="line.2240"></a>
<span class="sourceLineNo">2241</span> }<a name="line.2241"></a>
<span class="sourceLineNo">2242</span><a name="line.2242"></a>
<span class="sourceLineNo">2243</span> /**<a name="line.2243"></a>
<span class="sourceLineNo">2244</span> * 1st order discrete difference of dataset along flattened dataset using<a name="line.2244"></a>
<span class="sourceLineNo">2245</span> * finite difference<a name="line.2245"></a>
<span class="sourceLineNo">2246</span> * <a name="line.2246"></a>
<span class="sourceLineNo">2247</span> * @param a<a name="line.2247"></a>
<span class="sourceLineNo">2248</span> * is 1d dataset<a name="line.2248"></a>
<span class="sourceLineNo">2249</span> * @param out<a name="line.2249"></a>
<span class="sourceLineNo">2250</span> * is 1d dataset<a name="line.2250"></a>
<span class="sourceLineNo">2251</span> */<a name="line.2251"></a>
<span class="sourceLineNo">2252</span> private static void difference(final Dataset a, final Dataset out) {<a name="line.2252"></a>
<span class="sourceLineNo">2253</span> final int isize = a.getElementsPerItem();<a name="line.2253"></a>
<span class="sourceLineNo">2254</span><a name="line.2254"></a>
<span class="sourceLineNo">2255</span> final IndexIterator it = a.getIterator();<a name="line.2255"></a>
<span class="sourceLineNo">2256</span> if (!it.hasNext())<a name="line.2256"></a>
<span class="sourceLineNo">2257</span> return;<a name="line.2257"></a>
<span class="sourceLineNo">2258</span> int oi = it.index;<a name="line.2258"></a>
<span class="sourceLineNo">2259</span><a name="line.2259"></a>
<span class="sourceLineNo">2260</span> switch (a.getDType()) {<a name="line.2260"></a>
<span class="sourceLineNo">2261</span> case Dataset.INT8:<a name="line.2261"></a>
<span class="sourceLineNo">2262</span> final byte[] i8data = ((ByteDataset) a).getData();<a name="line.2262"></a>
<span class="sourceLineNo">2263</span> final byte[] oi8data = ((ByteDataset) out).getData();<a name="line.2263"></a>
<span class="sourceLineNo">2264</span> for (int i = 0; it.hasNext();) {<a name="line.2264"></a>
<span class="sourceLineNo">2265</span> oi8data[i++] = (byte) (i8data[it.index] - i8data[oi]);<a name="line.2265"></a>
<span class="sourceLineNo">2266</span> oi = it.index;<a name="line.2266"></a>
<span class="sourceLineNo">2267</span> }<a name="line.2267"></a>
<span class="sourceLineNo">2268</span> break;<a name="line.2268"></a>
<span class="sourceLineNo">2269</span> case Dataset.INT16:<a name="line.2269"></a>
<span class="sourceLineNo">2270</span> final short[] i16data = ((ShortDataset) a).getData();<a name="line.2270"></a>
<span class="sourceLineNo">2271</span> final short[] oi16data = ((ShortDataset) out).getData();<a name="line.2271"></a>
<span class="sourceLineNo">2272</span> for (int i = 0; it.hasNext();) {<a name="line.2272"></a>
<span class="sourceLineNo">2273</span> oi16data[i++] = (short) (i16data[it.index] - i16data[oi]);<a name="line.2273"></a>
<span class="sourceLineNo">2274</span> oi = it.index;<a name="line.2274"></a>
<span class="sourceLineNo">2275</span> }<a name="line.2275"></a>
<span class="sourceLineNo">2276</span> break;<a name="line.2276"></a>
<span class="sourceLineNo">2277</span> case Dataset.INT32:<a name="line.2277"></a>
<span class="sourceLineNo">2278</span> final int[] i32data = ((IntegerDataset) a).getData();<a name="line.2278"></a>
<span class="sourceLineNo">2279</span> final int[] oi32data = ((IntegerDataset) out).getData();<a name="line.2279"></a>
<span class="sourceLineNo">2280</span> for (int i = 0; it.hasNext();) {<a name="line.2280"></a>
<span class="sourceLineNo">2281</span> oi32data[i++] = i32data[it.index] - i32data[oi];<a name="line.2281"></a>
<span class="sourceLineNo">2282</span> oi = it.index;<a name="line.2282"></a>
<span class="sourceLineNo">2283</span> }<a name="line.2283"></a>
<span class="sourceLineNo">2284</span> break;<a name="line.2284"></a>
<span class="sourceLineNo">2285</span> case Dataset.INT64:<a name="line.2285"></a>
<span class="sourceLineNo">2286</span> final long[] i64data = ((LongDataset) a).getData();<a name="line.2286"></a>
<span class="sourceLineNo">2287</span> final long[] oi64data = ((LongDataset) out).getData();<a name="line.2287"></a>
<span class="sourceLineNo">2288</span> for (int i = 0; it.hasNext();) {<a name="line.2288"></a>
<span class="sourceLineNo">2289</span> oi64data[i++] = i64data[it.index] - i64data[oi];<a name="line.2289"></a>
<span class="sourceLineNo">2290</span> oi = it.index;<a name="line.2290"></a>
<span class="sourceLineNo">2291</span> }<a name="line.2291"></a>
<span class="sourceLineNo">2292</span> break;<a name="line.2292"></a>
<span class="sourceLineNo">2293</span> case Dataset.ARRAYINT8:<a name="line.2293"></a>
<span class="sourceLineNo">2294</span> final byte[] ai8data = ((CompoundByteDataset) a).getData();<a name="line.2294"></a>
<span class="sourceLineNo">2295</span> final byte[] oai8data = ((CompoundByteDataset) out).getData();<a name="line.2295"></a>
<span class="sourceLineNo">2296</span> for (int i = 0; it.hasNext();) {<a name="line.2296"></a>
<span class="sourceLineNo">2297</span> for (int k = 0; k &lt; isize; k++) {<a name="line.2297"></a>
<span class="sourceLineNo">2298</span> oai8data[i++] = (byte) (ai8data[it.index + k] - ai8data[oi++]);<a name="line.2298"></a>
<span class="sourceLineNo">2299</span> }<a name="line.2299"></a>
<span class="sourceLineNo">2300</span> oi = it.index;<a name="line.2300"></a>
<span class="sourceLineNo">2301</span> }<a name="line.2301"></a>
<span class="sourceLineNo">2302</span> break;<a name="line.2302"></a>
<span class="sourceLineNo">2303</span> case Dataset.ARRAYINT16:<a name="line.2303"></a>
<span class="sourceLineNo">2304</span> final short[] ai16data = ((CompoundShortDataset) a).getData();<a name="line.2304"></a>
<span class="sourceLineNo">2305</span> final short[] oai16data = ((CompoundShortDataset) out).getData();<a name="line.2305"></a>
<span class="sourceLineNo">2306</span> for (int i = 0; it.hasNext();) {<a name="line.2306"></a>
<span class="sourceLineNo">2307</span> for (int k = 0; k &lt; isize; k++) {<a name="line.2307"></a>
<span class="sourceLineNo">2308</span> oai16data[i++] = (short) (ai16data[it.index + k] - ai16data[oi++]);<a name="line.2308"></a>
<span class="sourceLineNo">2309</span> }<a name="line.2309"></a>
<span class="sourceLineNo">2310</span> oi = it.index;<a name="line.2310"></a>
<span class="sourceLineNo">2311</span> }<a name="line.2311"></a>
<span class="sourceLineNo">2312</span> break;<a name="line.2312"></a>
<span class="sourceLineNo">2313</span> case Dataset.ARRAYINT32:<a name="line.2313"></a>
<span class="sourceLineNo">2314</span> final int[] ai32data = ((CompoundIntegerDataset) a).getData();<a name="line.2314"></a>
<span class="sourceLineNo">2315</span> final int[] oai32data = ((CompoundIntegerDataset) out).getData();<a name="line.2315"></a>
<span class="sourceLineNo">2316</span> for (int i = 0; it.hasNext();) {<a name="line.2316"></a>
<span class="sourceLineNo">2317</span> for (int k = 0; k &lt; isize; k++) {<a name="line.2317"></a>
<span class="sourceLineNo">2318</span> oai32data[i++] = ai32data[it.index + k] - ai32data[oi++];<a name="line.2318"></a>
<span class="sourceLineNo">2319</span> }<a name="line.2319"></a>
<span class="sourceLineNo">2320</span> oi = it.index;<a name="line.2320"></a>
<span class="sourceLineNo">2321</span> }<a name="line.2321"></a>
<span class="sourceLineNo">2322</span> break;<a name="line.2322"></a>
<span class="sourceLineNo">2323</span> case Dataset.ARRAYINT64:<a name="line.2323"></a>
<span class="sourceLineNo">2324</span> final long[] ai64data = ((CompoundLongDataset) a).getData();<a name="line.2324"></a>
<span class="sourceLineNo">2325</span> final long[] oai64data = ((CompoundLongDataset) out).getData();<a name="line.2325"></a>
<span class="sourceLineNo">2326</span> for (int i = 0; it.hasNext();) {<a name="line.2326"></a>
<span class="sourceLineNo">2327</span> for (int k = 0; k &lt; isize; k++) {<a name="line.2327"></a>
<span class="sourceLineNo">2328</span> oai64data[i++] = ai64data[it.index + k] - ai64data[oi++];<a name="line.2328"></a>
<span class="sourceLineNo">2329</span> }<a name="line.2329"></a>
<span class="sourceLineNo">2330</span> oi = it.index;<a name="line.2330"></a>
<span class="sourceLineNo">2331</span> }<a name="line.2331"></a>
<span class="sourceLineNo">2332</span> break;<a name="line.2332"></a>
<span class="sourceLineNo">2333</span> case Dataset.FLOAT32:<a name="line.2333"></a>
<span class="sourceLineNo">2334</span> final float[] f32data = ((FloatDataset) a).getData();<a name="line.2334"></a>
<span class="sourceLineNo">2335</span> final float[] of32data = ((FloatDataset) out).getData();<a name="line.2335"></a>
<span class="sourceLineNo">2336</span> for (int i = 0; it.hasNext();) {<a name="line.2336"></a>
<span class="sourceLineNo">2337</span> of32data[i++] = f32data[it.index] - f32data[oi];<a name="line.2337"></a>
<span class="sourceLineNo">2338</span> oi = it.index;<a name="line.2338"></a>
<span class="sourceLineNo">2339</span> }<a name="line.2339"></a>
<span class="sourceLineNo">2340</span> break;<a name="line.2340"></a>
<span class="sourceLineNo">2341</span> case Dataset.FLOAT64:<a name="line.2341"></a>
<span class="sourceLineNo">2342</span> final double[] f64data = ((DoubleDataset) a).getData();<a name="line.2342"></a>
<span class="sourceLineNo">2343</span> final double[] of64data = ((DoubleDataset) out).getData();<a name="line.2343"></a>
<span class="sourceLineNo">2344</span> for (int i = 0; it.hasNext();) {<a name="line.2344"></a>
<span class="sourceLineNo">2345</span> of64data[i++] = f64data[it.index] - f64data[oi];<a name="line.2345"></a>
<span class="sourceLineNo">2346</span> oi = it.index;<a name="line.2346"></a>
<span class="sourceLineNo">2347</span> }<a name="line.2347"></a>
<span class="sourceLineNo">2348</span> break;<a name="line.2348"></a>
<span class="sourceLineNo">2349</span> case Dataset.COMPLEX64:<a name="line.2349"></a>
<span class="sourceLineNo">2350</span> final float[] c64data = ((ComplexFloatDataset) a).getData();<a name="line.2350"></a>
<span class="sourceLineNo">2351</span> final float[] oc64data = ((ComplexFloatDataset) out).getData();<a name="line.2351"></a>
<span class="sourceLineNo">2352</span> for (int i = 0; it.hasNext();) {<a name="line.2352"></a>
<span class="sourceLineNo">2353</span> oc64data[i++] = c64data[it.index] - c64data[oi];<a name="line.2353"></a>
<span class="sourceLineNo">2354</span> oc64data[i++] = c64data[it.index + 1] - c64data[oi + 1];<a name="line.2354"></a>
<span class="sourceLineNo">2355</span> oi = it.index;<a name="line.2355"></a>
<span class="sourceLineNo">2356</span> }<a name="line.2356"></a>
<span class="sourceLineNo">2357</span> break;<a name="line.2357"></a>
<span class="sourceLineNo">2358</span> case Dataset.COMPLEX128:<a name="line.2358"></a>
<span class="sourceLineNo">2359</span> final double[] c128data = ((ComplexDoubleDataset) a).getData();<a name="line.2359"></a>
<span class="sourceLineNo">2360</span> final double[] oc128data = ((ComplexDoubleDataset) out).getData();<a name="line.2360"></a>
<span class="sourceLineNo">2361</span> for (int i = 0; it.hasNext();) {<a name="line.2361"></a>
<span class="sourceLineNo">2362</span> oc128data[i++] = c128data[it.index] - c128data[oi];<a name="line.2362"></a>
<span class="sourceLineNo">2363</span> oc128data[i++] = c128data[it.index + 1] - c128data[oi + 1];<a name="line.2363"></a>
<span class="sourceLineNo">2364</span> oi = it.index;<a name="line.2364"></a>
<span class="sourceLineNo">2365</span> }<a name="line.2365"></a>
<span class="sourceLineNo">2366</span> break;<a name="line.2366"></a>
<span class="sourceLineNo">2367</span> case Dataset.ARRAYFLOAT32:<a name="line.2367"></a>
<span class="sourceLineNo">2368</span> final float[] af32data = ((CompoundFloatDataset) a).getData();<a name="line.2368"></a>
<span class="sourceLineNo">2369</span> final float[] oaf32data = ((CompoundFloatDataset) out).getData();<a name="line.2369"></a>
<span class="sourceLineNo">2370</span> for (int i = 0; it.hasNext();) {<a name="line.2370"></a>
<span class="sourceLineNo">2371</span> for (int k = 0; k &lt; isize; k++) {<a name="line.2371"></a>
<span class="sourceLineNo">2372</span> oaf32data[i++] = af32data[it.index + k] - af32data[oi++];<a name="line.2372"></a>
<span class="sourceLineNo">2373</span> }<a name="line.2373"></a>
<span class="sourceLineNo">2374</span> oi = it.index;<a name="line.2374"></a>
<span class="sourceLineNo">2375</span> }<a name="line.2375"></a>
<span class="sourceLineNo">2376</span> break;<a name="line.2376"></a>
<span class="sourceLineNo">2377</span> case Dataset.ARRAYFLOAT64:<a name="line.2377"></a>
<span class="sourceLineNo">2378</span> final double[] af64data = ((CompoundDoubleDataset) a).getData();<a name="line.2378"></a>
<span class="sourceLineNo">2379</span> final double[] oaf64data = ((CompoundDoubleDataset) out).getData();<a name="line.2379"></a>
<span class="sourceLineNo">2380</span> for (int i = 0; it.hasNext();) {<a name="line.2380"></a>
<span class="sourceLineNo">2381</span> for (int k = 0; k &lt; isize; k++) {<a name="line.2381"></a>
<span class="sourceLineNo">2382</span> oaf64data[i++] = af64data[it.index + k] - af64data[oi++];<a name="line.2382"></a>
<span class="sourceLineNo">2383</span> }<a name="line.2383"></a>
<span class="sourceLineNo">2384</span> oi = it.index;<a name="line.2384"></a>
<span class="sourceLineNo">2385</span> }<a name="line.2385"></a>
<span class="sourceLineNo">2386</span> break;<a name="line.2386"></a>
<span class="sourceLineNo">2387</span> default:<a name="line.2387"></a>
<span class="sourceLineNo">2388</span> throw new UnsupportedOperationException("difference does not support this dataset type");<a name="line.2388"></a>
<span class="sourceLineNo">2389</span> }<a name="line.2389"></a>
<span class="sourceLineNo">2390</span> }<a name="line.2390"></a>
<span class="sourceLineNo">2391</span><a name="line.2391"></a>
<span class="sourceLineNo">2392</span> /**<a name="line.2392"></a>
<span class="sourceLineNo">2393</span> * Get next set of indexes<a name="line.2393"></a>
<span class="sourceLineNo">2394</span> * <a name="line.2394"></a>
<span class="sourceLineNo">2395</span> * @param it<a name="line.2395"></a>
<span class="sourceLineNo">2396</span> * @param indexes<a name="line.2396"></a>
<span class="sourceLineNo">2397</span> * @return true if there is more<a name="line.2397"></a>
<span class="sourceLineNo">2398</span> */<a name="line.2398"></a>
<span class="sourceLineNo">2399</span> private static boolean nextIndexes(IndexIterator it, int[] indexes) {<a name="line.2399"></a>
<span class="sourceLineNo">2400</span> if (!it.hasNext())<a name="line.2400"></a>
<span class="sourceLineNo">2401</span> return false;<a name="line.2401"></a>
<span class="sourceLineNo">2402</span> int m = indexes.length;<a name="line.2402"></a>
<span class="sourceLineNo">2403</span> int i = 0;<a name="line.2403"></a>
<span class="sourceLineNo">2404</span> for (i = 0; i &lt; m - 1; i++) {<a name="line.2404"></a>
<span class="sourceLineNo">2405</span> indexes[i] = indexes[i + 1];<a name="line.2405"></a>
<span class="sourceLineNo">2406</span> }<a name="line.2406"></a>
<span class="sourceLineNo">2407</span> indexes[i] = it.index;<a name="line.2407"></a>
<span class="sourceLineNo">2408</span> return true;<a name="line.2408"></a>
<span class="sourceLineNo">2409</span> }<a name="line.2409"></a>
<span class="sourceLineNo">2410</span><a name="line.2410"></a>
<span class="sourceLineNo">2411</span> /**<a name="line.2411"></a>
<span class="sourceLineNo">2412</span> * General order discrete difference of dataset along flattened dataset<a name="line.2412"></a>
<span class="sourceLineNo">2413</span> * using finite difference<a name="line.2413"></a>
<span class="sourceLineNo">2414</span> * <a name="line.2414"></a>
<span class="sourceLineNo">2415</span> * @param a<a name="line.2415"></a>
<span class="sourceLineNo">2416</span> * is 1d dataset<a name="line.2416"></a>
<span class="sourceLineNo">2417</span> * @param out<a name="line.2417"></a>
<span class="sourceLineNo">2418</span> * is 1d dataset<a name="line.2418"></a>
<span class="sourceLineNo">2419</span> * @param n<a name="line.2419"></a>
<span class="sourceLineNo">2420</span> * order of difference<a name="line.2420"></a>
<span class="sourceLineNo">2421</span> */<a name="line.2421"></a>
<span class="sourceLineNo">2422</span> private static void difference(final Dataset a, final Dataset out, final int n) {<a name="line.2422"></a>
<span class="sourceLineNo">2423</span> if (n == 1) {<a name="line.2423"></a>
<span class="sourceLineNo">2424</span> difference(a, out);<a name="line.2424"></a>
<span class="sourceLineNo">2425</span> return;<a name="line.2425"></a>
<span class="sourceLineNo">2426</span> }<a name="line.2426"></a>
<span class="sourceLineNo">2427</span><a name="line.2427"></a>
<span class="sourceLineNo">2428</span> final int isize = a.getElementsPerItem();<a name="line.2428"></a>
<span class="sourceLineNo">2429</span><a name="line.2429"></a>
<span class="sourceLineNo">2430</span> final int[] coeff = bincoeff(n);<a name="line.2430"></a>
<span class="sourceLineNo">2431</span> final int m = n + 1;<a name="line.2431"></a>
<span class="sourceLineNo">2432</span> final int[] indexes = new int[m]; // store for index values<a name="line.2432"></a>
<span class="sourceLineNo">2433</span><a name="line.2433"></a>
<span class="sourceLineNo">2434</span> final IndexIterator it = a.getIterator();<a name="line.2434"></a>
<span class="sourceLineNo">2435</span> for (int i = 0; i &lt; n; i++) {<a name="line.2435"></a>
<span class="sourceLineNo">2436</span> indexes[i] = it.index;<a name="line.2436"></a>
<span class="sourceLineNo">2437</span> it.hasNext();<a name="line.2437"></a>
<span class="sourceLineNo">2438</span> }<a name="line.2438"></a>
<span class="sourceLineNo">2439</span> indexes[n] = it.index;<a name="line.2439"></a>
<span class="sourceLineNo">2440</span><a name="line.2440"></a>
<span class="sourceLineNo">2441</span> switch (a.getDType()) {<a name="line.2441"></a>
<span class="sourceLineNo">2442</span> case Dataset.INT8:<a name="line.2442"></a>
<span class="sourceLineNo">2443</span> final byte[] i8data = ((ByteDataset) a).getData();<a name="line.2443"></a>
<span class="sourceLineNo">2444</span> final byte[] oi8data = ((ByteDataset) out).getData();<a name="line.2444"></a>
<span class="sourceLineNo">2445</span> for (int i = 0; nextIndexes(it, indexes);) {<a name="line.2445"></a>
<span class="sourceLineNo">2446</span> int ox = 0;<a name="line.2446"></a>
<span class="sourceLineNo">2447</span> for (int j = 0; j &lt; m; j++) {<a name="line.2447"></a>
<span class="sourceLineNo">2448</span> ox += i8data[indexes[j]] * coeff[j];<a name="line.2448"></a>
<span class="sourceLineNo">2449</span> }<a name="line.2449"></a>
<span class="sourceLineNo">2450</span> oi8data[i++] = (byte) ox;<a name="line.2450"></a>
<span class="sourceLineNo">2451</span> }<a name="line.2451"></a>
<span class="sourceLineNo">2452</span> break;<a name="line.2452"></a>
<span class="sourceLineNo">2453</span> case Dataset.INT16:<a name="line.2453"></a>
<span class="sourceLineNo">2454</span> final short[] i16data = ((ShortDataset) a).getData();<a name="line.2454"></a>
<span class="sourceLineNo">2455</span> final short[] oi16data = ((ShortDataset) out).getData();<a name="line.2455"></a>
<span class="sourceLineNo">2456</span> for (int i = 0; nextIndexes(it, indexes);) {<a name="line.2456"></a>
<span class="sourceLineNo">2457</span> int ox = 0;<a name="line.2457"></a>
<span class="sourceLineNo">2458</span> for (int j = 0; j &lt; m; j++) {<a name="line.2458"></a>
<span class="sourceLineNo">2459</span> ox += i16data[indexes[j]] * coeff[j];<a name="line.2459"></a>
<span class="sourceLineNo">2460</span> }<a name="line.2460"></a>
<span class="sourceLineNo">2461</span> oi16data[i++] = (short) ox;<a name="line.2461"></a>
<span class="sourceLineNo">2462</span> }<a name="line.2462"></a>
<span class="sourceLineNo">2463</span> break;<a name="line.2463"></a>
<span class="sourceLineNo">2464</span> case Dataset.INT32:<a name="line.2464"></a>
<span class="sourceLineNo">2465</span> final int[] i32data = ((IntegerDataset) a).getData();<a name="line.2465"></a>
<span class="sourceLineNo">2466</span> final int[] oi32data = ((IntegerDataset) out).getData();<a name="line.2466"></a>
<span class="sourceLineNo">2467</span> for (int i = 0; nextIndexes(it, indexes);) {<a name="line.2467"></a>
<span class="sourceLineNo">2468</span> int ox = 0;<a name="line.2468"></a>
<span class="sourceLineNo">2469</span> for (int j = 0; j &lt; m; j++) {<a name="line.2469"></a>
<span class="sourceLineNo">2470</span> ox += i32data[indexes[j]] * coeff[j];<a name="line.2470"></a>
<span class="sourceLineNo">2471</span> }<a name="line.2471"></a>
<span class="sourceLineNo">2472</span> oi32data[i++] = ox;<a name="line.2472"></a>
<span class="sourceLineNo">2473</span> }<a name="line.2473"></a>
<span class="sourceLineNo">2474</span> break;<a name="line.2474"></a>
<span class="sourceLineNo">2475</span> case Dataset.INT64:<a name="line.2475"></a>
<span class="sourceLineNo">2476</span> final long[] i64data = ((LongDataset) a).getData();<a name="line.2476"></a>
<span class="sourceLineNo">2477</span> final long[] oi64data = ((LongDataset) out).getData();<a name="line.2477"></a>
<span class="sourceLineNo">2478</span> for (int i = 0; nextIndexes(it, indexes);) {<a name="line.2478"></a>
<span class="sourceLineNo">2479</span> long ox = 0;<a name="line.2479"></a>
<span class="sourceLineNo">2480</span> for (int j = 0; j &lt; m; j++) {<a name="line.2480"></a>
<span class="sourceLineNo">2481</span> ox += i64data[indexes[j]] * coeff[j];<a name="line.2481"></a>
<span class="sourceLineNo">2482</span> }<a name="line.2482"></a>
<span class="sourceLineNo">2483</span> oi64data[i++] = ox;<a name="line.2483"></a>
<span class="sourceLineNo">2484</span> }<a name="line.2484"></a>
<span class="sourceLineNo">2485</span> break;<a name="line.2485"></a>
<span class="sourceLineNo">2486</span> case Dataset.ARRAYINT8:<a name="line.2486"></a>
<span class="sourceLineNo">2487</span> final byte[] ai8data = ((CompoundByteDataset) a).getData();<a name="line.2487"></a>
<span class="sourceLineNo">2488</span> final byte[] oai8data = ((CompoundByteDataset) out).getData();<a name="line.2488"></a>
<span class="sourceLineNo">2489</span> int[] box = new int[isize];<a name="line.2489"></a>
<span class="sourceLineNo">2490</span> for (int i = 0; nextIndexes(it, indexes);) {<a name="line.2490"></a>
<span class="sourceLineNo">2491</span> Arrays.fill(box, 0);<a name="line.2491"></a>
<span class="sourceLineNo">2492</span> for (int j = 0; j &lt; m; j++) {<a name="line.2492"></a>
<span class="sourceLineNo">2493</span> double c = coeff[j];<a name="line.2493"></a>
<span class="sourceLineNo">2494</span> int l = indexes[j];<a name="line.2494"></a>
<span class="sourceLineNo">2495</span> for (int k = 0; k &lt; isize; k++) {<a name="line.2495"></a>
<span class="sourceLineNo">2496</span> box[k] += ai8data[l++] * c;<a name="line.2496"></a>
<span class="sourceLineNo">2497</span> }<a name="line.2497"></a>
<span class="sourceLineNo">2498</span> }<a name="line.2498"></a>
<span class="sourceLineNo">2499</span> for (int k = 0; k &lt; isize; k++) {<a name="line.2499"></a>
<span class="sourceLineNo">2500</span> oai8data[i++] = (byte) box[k];<a name="line.2500"></a>
<span class="sourceLineNo">2501</span> }<a name="line.2501"></a>
<span class="sourceLineNo">2502</span> }<a name="line.2502"></a>
<span class="sourceLineNo">2503</span> break;<a name="line.2503"></a>
<span class="sourceLineNo">2504</span> case Dataset.ARRAYINT16:<a name="line.2504"></a>
<span class="sourceLineNo">2505</span> final short[] ai16data = ((CompoundShortDataset) a).getData();<a name="line.2505"></a>
<span class="sourceLineNo">2506</span> final short[] oai16data = ((CompoundShortDataset) out).getData();<a name="line.2506"></a>
<span class="sourceLineNo">2507</span> int[] sox = new int[isize];<a name="line.2507"></a>
<span class="sourceLineNo">2508</span> for (int i = 0; nextIndexes(it, indexes);) {<a name="line.2508"></a>
<span class="sourceLineNo">2509</span> Arrays.fill(sox, 0);<a name="line.2509"></a>
<span class="sourceLineNo">2510</span> for (int j = 0; j &lt; m; j++) {<a name="line.2510"></a>
<span class="sourceLineNo">2511</span> double c = coeff[j];<a name="line.2511"></a>
<span class="sourceLineNo">2512</span> int l = indexes[j];<a name="line.2512"></a>
<span class="sourceLineNo">2513</span> for (int k = 0; k &lt; isize; k++) {<a name="line.2513"></a>
<span class="sourceLineNo">2514</span> sox[k] += ai16data[l++] * c;<a name="line.2514"></a>
<span class="sourceLineNo">2515</span> }<a name="line.2515"></a>
<span class="sourceLineNo">2516</span> }<a name="line.2516"></a>
<span class="sourceLineNo">2517</span> for (int k = 0; k &lt; isize; k++) {<a name="line.2517"></a>
<span class="sourceLineNo">2518</span> oai16data[i++] = (short) sox[k];<a name="line.2518"></a>
<span class="sourceLineNo">2519</span> }<a name="line.2519"></a>
<span class="sourceLineNo">2520</span> }<a name="line.2520"></a>
<span class="sourceLineNo">2521</span> break;<a name="line.2521"></a>
<span class="sourceLineNo">2522</span> case Dataset.ARRAYINT32:<a name="line.2522"></a>
<span class="sourceLineNo">2523</span> final int[] ai32data = ((CompoundIntegerDataset) a).getData();<a name="line.2523"></a>
<span class="sourceLineNo">2524</span> final int[] oai32data = ((CompoundIntegerDataset) out).getData();<a name="line.2524"></a>
<span class="sourceLineNo">2525</span> int[] iox = new int[isize];<a name="line.2525"></a>
<span class="sourceLineNo">2526</span> for (int i = 0; nextIndexes(it, indexes);) {<a name="line.2526"></a>
<span class="sourceLineNo">2527</span> Arrays.fill(iox, 0);<a name="line.2527"></a>
<span class="sourceLineNo">2528</span> for (int j = 0; j &lt; m; j++) {<a name="line.2528"></a>
<span class="sourceLineNo">2529</span> double c = coeff[j];<a name="line.2529"></a>
<span class="sourceLineNo">2530</span> int l = indexes[j];<a name="line.2530"></a>
<span class="sourceLineNo">2531</span> for (int k = 0; k &lt; isize; k++) {<a name="line.2531"></a>
<span class="sourceLineNo">2532</span> iox[k] += ai32data[l++] * c;<a name="line.2532"></a>
<span class="sourceLineNo">2533</span> }<a name="line.2533"></a>
<span class="sourceLineNo">2534</span> }<a name="line.2534"></a>
<span class="sourceLineNo">2535</span> for (int k = 0; k &lt; isize; k++) {<a name="line.2535"></a>
<span class="sourceLineNo">2536</span> oai32data[i++] = iox[k];<a name="line.2536"></a>
<span class="sourceLineNo">2537</span> }<a name="line.2537"></a>
<span class="sourceLineNo">2538</span> }<a name="line.2538"></a>
<span class="sourceLineNo">2539</span> break;<a name="line.2539"></a>
<span class="sourceLineNo">2540</span> case Dataset.ARRAYINT64:<a name="line.2540"></a>
<span class="sourceLineNo">2541</span> final long[] ai64data = ((CompoundLongDataset) a).getData();<a name="line.2541"></a>
<span class="sourceLineNo">2542</span> final long[] oai64data = ((CompoundLongDataset) out).getData();<a name="line.2542"></a>
<span class="sourceLineNo">2543</span> long[] lox = new long[isize];<a name="line.2543"></a>
<span class="sourceLineNo">2544</span> for (int i = 0; nextIndexes(it, indexes);) {<a name="line.2544"></a>
<span class="sourceLineNo">2545</span> Arrays.fill(lox, 0);<a name="line.2545"></a>
<span class="sourceLineNo">2546</span> for (int j = 0; j &lt; m; j++) {<a name="line.2546"></a>
<span class="sourceLineNo">2547</span> double c = coeff[j];<a name="line.2547"></a>
<span class="sourceLineNo">2548</span> int l = indexes[j];<a name="line.2548"></a>
<span class="sourceLineNo">2549</span> for (int k = 0; k &lt; isize; k++) {<a name="line.2549"></a>
<span class="sourceLineNo">2550</span> lox[k] += ai64data[l++] * c;<a name="line.2550"></a>
<span class="sourceLineNo">2551</span> }<a name="line.2551"></a>
<span class="sourceLineNo">2552</span> }<a name="line.2552"></a>
<span class="sourceLineNo">2553</span> for (int k = 0; k &lt; isize; k++) {<a name="line.2553"></a>
<span class="sourceLineNo">2554</span> oai64data[i++] = lox[k];<a name="line.2554"></a>
<span class="sourceLineNo">2555</span> }<a name="line.2555"></a>
<span class="sourceLineNo">2556</span> }<a name="line.2556"></a>
<span class="sourceLineNo">2557</span> break;<a name="line.2557"></a>
<span class="sourceLineNo">2558</span> case Dataset.FLOAT32:<a name="line.2558"></a>
<span class="sourceLineNo">2559</span> final float[] f32data = ((FloatDataset) a).getData();<a name="line.2559"></a>
<span class="sourceLineNo">2560</span> final float[] of32data = ((FloatDataset) out).getData();<a name="line.2560"></a>
<span class="sourceLineNo">2561</span> for (int i = 0; nextIndexes(it, indexes);) {<a name="line.2561"></a>
<span class="sourceLineNo">2562</span> float ox = 0;<a name="line.2562"></a>
<span class="sourceLineNo">2563</span> for (int j = 0; j &lt; m; j++) {<a name="line.2563"></a>
<span class="sourceLineNo">2564</span> ox += f32data[indexes[j]] * coeff[j];<a name="line.2564"></a>
<span class="sourceLineNo">2565</span> }<a name="line.2565"></a>
<span class="sourceLineNo">2566</span> of32data[i++] = ox;<a name="line.2566"></a>
<span class="sourceLineNo">2567</span> }<a name="line.2567"></a>
<span class="sourceLineNo">2568</span> break;<a name="line.2568"></a>
<span class="sourceLineNo">2569</span> case Dataset.FLOAT64:<a name="line.2569"></a>
<span class="sourceLineNo">2570</span> final double[] f64data = ((DoubleDataset) a).getData();<a name="line.2570"></a>
<span class="sourceLineNo">2571</span> final double[] of64data = ((DoubleDataset) out).getData();<a name="line.2571"></a>
<span class="sourceLineNo">2572</span> for (int i = 0; nextIndexes(it, indexes);) {<a name="line.2572"></a>
<span class="sourceLineNo">2573</span> double ox = 0;<a name="line.2573"></a>
<span class="sourceLineNo">2574</span> for (int j = 0; j &lt; m; j++) {<a name="line.2574"></a>
<span class="sourceLineNo">2575</span> ox += f64data[indexes[j]] * coeff[j];<a name="line.2575"></a>
<span class="sourceLineNo">2576</span> }<a name="line.2576"></a>
<span class="sourceLineNo">2577</span> of64data[i++] = ox;<a name="line.2577"></a>
<span class="sourceLineNo">2578</span> }<a name="line.2578"></a>
<span class="sourceLineNo">2579</span> break;<a name="line.2579"></a>
<span class="sourceLineNo">2580</span> case Dataset.COMPLEX64:<a name="line.2580"></a>
<span class="sourceLineNo">2581</span> final float[] c64data = ((ComplexFloatDataset) a).getData();<a name="line.2581"></a>
<span class="sourceLineNo">2582</span> final float[] oc64data = ((ComplexFloatDataset) out).getData();<a name="line.2582"></a>
<span class="sourceLineNo">2583</span> for (int i = 0; nextIndexes(it, indexes);) {<a name="line.2583"></a>
<span class="sourceLineNo">2584</span> float ox = 0;<a name="line.2584"></a>
<span class="sourceLineNo">2585</span> float oy = 0;<a name="line.2585"></a>
<span class="sourceLineNo">2586</span> for (int j = 0; j &lt; m; j++) {<a name="line.2586"></a>
<span class="sourceLineNo">2587</span> int l = indexes[j];<a name="line.2587"></a>
<span class="sourceLineNo">2588</span> ox += c64data[l++] * coeff[j];<a name="line.2588"></a>
<span class="sourceLineNo">2589</span> oy += c64data[l] * coeff[j];<a name="line.2589"></a>
<span class="sourceLineNo">2590</span> }<a name="line.2590"></a>
<span class="sourceLineNo">2591</span> oc64data[i++] = ox;<a name="line.2591"></a>
<span class="sourceLineNo">2592</span> oc64data[i++] = oy;<a name="line.2592"></a>
<span class="sourceLineNo">2593</span> }<a name="line.2593"></a>
<span class="sourceLineNo">2594</span> break;<a name="line.2594"></a>
<span class="sourceLineNo">2595</span> case Dataset.COMPLEX128:<a name="line.2595"></a>
<span class="sourceLineNo">2596</span> final double[] c128data = ((ComplexDoubleDataset) a).getData();<a name="line.2596"></a>
<span class="sourceLineNo">2597</span> final double[] oc128data = ((ComplexDoubleDataset) out).getData();<a name="line.2597"></a>
<span class="sourceLineNo">2598</span> for (int i = 0; nextIndexes(it, indexes);) {<a name="line.2598"></a>
<span class="sourceLineNo">2599</span> double ox = 0;<a name="line.2599"></a>
<span class="sourceLineNo">2600</span> double oy = 0;<a name="line.2600"></a>
<span class="sourceLineNo">2601</span> for (int j = 0; j &lt; m; j++) {<a name="line.2601"></a>
<span class="sourceLineNo">2602</span> int l = indexes[j];<a name="line.2602"></a>
<span class="sourceLineNo">2603</span> ox += c128data[l++] * coeff[j];<a name="line.2603"></a>
<span class="sourceLineNo">2604</span> oy += c128data[l] * coeff[j];<a name="line.2604"></a>
<span class="sourceLineNo">2605</span> }<a name="line.2605"></a>
<span class="sourceLineNo">2606</span> oc128data[i++] = ox;<a name="line.2606"></a>
<span class="sourceLineNo">2607</span> oc128data[i++] = oy;<a name="line.2607"></a>
<span class="sourceLineNo">2608</span> }<a name="line.2608"></a>
<span class="sourceLineNo">2609</span> break;<a name="line.2609"></a>
<span class="sourceLineNo">2610</span> case Dataset.ARRAYFLOAT32:<a name="line.2610"></a>
<span class="sourceLineNo">2611</span> final float[] af32data = ((CompoundFloatDataset) a).getData();<a name="line.2611"></a>
<span class="sourceLineNo">2612</span> final float[] oaf32data = ((CompoundFloatDataset) out).getData();<a name="line.2612"></a>
<span class="sourceLineNo">2613</span> float[] fox = new float[isize];<a name="line.2613"></a>
<span class="sourceLineNo">2614</span> for (int i = 0; nextIndexes(it, indexes);) {<a name="line.2614"></a>
<span class="sourceLineNo">2615</span> Arrays.fill(fox, 0);<a name="line.2615"></a>
<span class="sourceLineNo">2616</span> for (int j = 0; j &lt; m; j++) {<a name="line.2616"></a>
<span class="sourceLineNo">2617</span> double c = coeff[j];<a name="line.2617"></a>
<span class="sourceLineNo">2618</span> int l = indexes[j];<a name="line.2618"></a>
<span class="sourceLineNo">2619</span> for (int k = 0; k &lt; isize; k++) {<a name="line.2619"></a>
<span class="sourceLineNo">2620</span> fox[k] += af32data[l++] * c;<a name="line.2620"></a>
<span class="sourceLineNo">2621</span> }<a name="line.2621"></a>
<span class="sourceLineNo">2622</span> }<a name="line.2622"></a>
<span class="sourceLineNo">2623</span> for (int k = 0; k &lt; isize; k++) {<a name="line.2623"></a>
<span class="sourceLineNo">2624</span> oaf32data[i++] = fox[k];<a name="line.2624"></a>
<span class="sourceLineNo">2625</span> }<a name="line.2625"></a>
<span class="sourceLineNo">2626</span> }<a name="line.2626"></a>
<span class="sourceLineNo">2627</span> break;<a name="line.2627"></a>
<span class="sourceLineNo">2628</span> case Dataset.ARRAYFLOAT64:<a name="line.2628"></a>
<span class="sourceLineNo">2629</span> final double[] af64data = ((CompoundDoubleDataset) a).getData();<a name="line.2629"></a>
<span class="sourceLineNo">2630</span> final double[] oaf64data = ((CompoundDoubleDataset) out).getData();<a name="line.2630"></a>
<span class="sourceLineNo">2631</span> double[] dox = new double[isize];<a name="line.2631"></a>
<span class="sourceLineNo">2632</span> for (int i = 0; nextIndexes(it, indexes);) {<a name="line.2632"></a>
<span class="sourceLineNo">2633</span> Arrays.fill(dox, 0);<a name="line.2633"></a>
<span class="sourceLineNo">2634</span> for (int j = 0; j &lt; m; j++) {<a name="line.2634"></a>
<span class="sourceLineNo">2635</span> double c = coeff[j];<a name="line.2635"></a>
<span class="sourceLineNo">2636</span> int l = indexes[j];<a name="line.2636"></a>
<span class="sourceLineNo">2637</span> for (int k = 0; k &lt; isize; k++) {<a name="line.2637"></a>
<span class="sourceLineNo">2638</span> dox[k] += af64data[l++] * c;<a name="line.2638"></a>
<span class="sourceLineNo">2639</span> }<a name="line.2639"></a>
<span class="sourceLineNo">2640</span> }<a name="line.2640"></a>
<span class="sourceLineNo">2641</span> for (int k = 0; k &lt; isize; k++) {<a name="line.2641"></a>
<span class="sourceLineNo">2642</span> oaf64data[i++] = dox[k];<a name="line.2642"></a>
<span class="sourceLineNo">2643</span> }<a name="line.2643"></a>
<span class="sourceLineNo">2644</span> }<a name="line.2644"></a>
<span class="sourceLineNo">2645</span> break;<a name="line.2645"></a>
<span class="sourceLineNo">2646</span> default:<a name="line.2646"></a>
<span class="sourceLineNo">2647</span> throw new UnsupportedOperationException("difference does not support multiple-element dataset");<a name="line.2647"></a>
<span class="sourceLineNo">2648</span> }<a name="line.2648"></a>
<span class="sourceLineNo">2649</span> }<a name="line.2649"></a>
<span class="sourceLineNo">2650</span><a name="line.2650"></a>
<span class="sourceLineNo">2651</span> /**<a name="line.2651"></a>
<span class="sourceLineNo">2652</span> * Discrete difference of dataset along axis using finite difference<a name="line.2652"></a>
<span class="sourceLineNo">2653</span> * <a name="line.2653"></a>
<span class="sourceLineNo">2654</span> * @param a<a name="line.2654"></a>
<span class="sourceLineNo">2655</span> * @param n<a name="line.2655"></a>
<span class="sourceLineNo">2656</span> * order of difference<a name="line.2656"></a>
<span class="sourceLineNo">2657</span> * @param axis<a name="line.2657"></a>
<span class="sourceLineNo">2658</span> * @return difference<a name="line.2658"></a>
<span class="sourceLineNo">2659</span> */<a name="line.2659"></a>
<span class="sourceLineNo">2660</span> public static Dataset difference(Dataset a, final int n, int axis) {<a name="line.2660"></a>
<span class="sourceLineNo">2661</span> Dataset ds;<a name="line.2661"></a>
<span class="sourceLineNo">2662</span> final Class&lt;? extends Dataset&gt; clazz = a.getClass();<a name="line.2662"></a>
<span class="sourceLineNo">2663</span> final int rank = a.getRank();<a name="line.2663"></a>
<span class="sourceLineNo">2664</span> final int is = a.getElementsPerItem();<a name="line.2664"></a>
<span class="sourceLineNo">2665</span><a name="line.2665"></a>
<span class="sourceLineNo">2666</span> if (axis &lt; 0) {<a name="line.2666"></a>
<span class="sourceLineNo">2667</span> axis += rank;<a name="line.2667"></a>
<span class="sourceLineNo">2668</span> }<a name="line.2668"></a>
<span class="sourceLineNo">2669</span> if (axis &lt; 0 || axis &gt;= rank) {<a name="line.2669"></a>
<span class="sourceLineNo">2670</span> throw new IllegalArgumentException("Axis is out of range");<a name="line.2670"></a>
<span class="sourceLineNo">2671</span> }<a name="line.2671"></a>
<span class="sourceLineNo">2672</span><a name="line.2672"></a>
<span class="sourceLineNo">2673</span> int[] nshape = a.getShape();<a name="line.2673"></a>
<span class="sourceLineNo">2674</span> if (nshape[axis] &lt;= n) {<a name="line.2674"></a>
<span class="sourceLineNo">2675</span> nshape[axis] = 0;<a name="line.2675"></a>
<span class="sourceLineNo">2676</span> return DatasetFactory.zeros(is, clazz, nshape);<a name="line.2676"></a>
<span class="sourceLineNo">2677</span> }<a name="line.2677"></a>
<span class="sourceLineNo">2678</span><a name="line.2678"></a>
<span class="sourceLineNo">2679</span> nshape[axis] -= n;<a name="line.2679"></a>
<span class="sourceLineNo">2680</span> ds = DatasetFactory.zeros(is, clazz, nshape);<a name="line.2680"></a>
<span class="sourceLineNo">2681</span> if (rank == 1) {<a name="line.2681"></a>
<span class="sourceLineNo">2682</span> difference(a, ds, n);<a name="line.2682"></a>
<span class="sourceLineNo">2683</span> } else {<a name="line.2683"></a>
<span class="sourceLineNo">2684</span> final Dataset src = DatasetFactory.zeros(is, clazz, a.getShapeRef()[axis]);<a name="line.2684"></a>
<span class="sourceLineNo">2685</span> final Dataset dest = DatasetFactory.zeros(is, clazz, nshape[axis]);<a name="line.2685"></a>
<span class="sourceLineNo">2686</span> final PositionIterator pi = a.getPositionIterator(axis);<a name="line.2686"></a>
<span class="sourceLineNo">2687</span> final int[] pos = pi.getPos();<a name="line.2687"></a>
<span class="sourceLineNo">2688</span> final boolean[] hit = pi.getOmit();<a name="line.2688"></a>
<span class="sourceLineNo">2689</span> while (pi.hasNext()) {<a name="line.2689"></a>
<span class="sourceLineNo">2690</span> a.copyItemsFromAxes(pos, hit, src);<a name="line.2690"></a>
<span class="sourceLineNo">2691</span> difference(src, dest, n);<a name="line.2691"></a>
<span class="sourceLineNo">2692</span> ds.setItemsOnAxes(pos, hit, dest.getBuffer());<a name="line.2692"></a>
<span class="sourceLineNo">2693</span> }<a name="line.2693"></a>
<span class="sourceLineNo">2694</span> }<a name="line.2694"></a>
<span class="sourceLineNo">2695</span><a name="line.2695"></a>
<span class="sourceLineNo">2696</span> return ds;<a name="line.2696"></a>
<span class="sourceLineNo">2697</span> }<a name="line.2697"></a>
<span class="sourceLineNo">2698</span><a name="line.2698"></a>
<span class="sourceLineNo">2699</span> private static double SelectedMean(Dataset data, int Min, int Max) {<a name="line.2699"></a>
<span class="sourceLineNo">2700</span><a name="line.2700"></a>
<span class="sourceLineNo">2701</span> double result = 0.0;<a name="line.2701"></a>
<span class="sourceLineNo">2702</span> for (int i = Min, imax = data.getSize(); i &lt;= Max; i++) {<a name="line.2702"></a>
<span class="sourceLineNo">2703</span> // clip i appropriately, imagine that effectively the two ends<a name="line.2703"></a>
<span class="sourceLineNo">2704</span> // continue<a name="line.2704"></a>
<span class="sourceLineNo">2705</span> // straight out.<a name="line.2705"></a>
<span class="sourceLineNo">2706</span> int pos = i;<a name="line.2706"></a>
<span class="sourceLineNo">2707</span> if (pos &lt; 0) {<a name="line.2707"></a>
<span class="sourceLineNo">2708</span> pos = 0;<a name="line.2708"></a>
<span class="sourceLineNo">2709</span> } else if (pos &gt;= imax) {<a name="line.2709"></a>
<span class="sourceLineNo">2710</span> pos = imax - 1;<a name="line.2710"></a>
<span class="sourceLineNo">2711</span> }<a name="line.2711"></a>
<span class="sourceLineNo">2712</span> result += data.getElementDoubleAbs(pos);<a name="line.2712"></a>
<span class="sourceLineNo">2713</span> }<a name="line.2713"></a>
<span class="sourceLineNo">2714</span><a name="line.2714"></a>
<span class="sourceLineNo">2715</span> // now the sum is complete, average the values.<a name="line.2715"></a>
<span class="sourceLineNo">2716</span> result /= (Max - Min) + 1;<a name="line.2716"></a>
<span class="sourceLineNo">2717</span> return result;<a name="line.2717"></a>
<span class="sourceLineNo">2718</span> }<a name="line.2718"></a>
<span class="sourceLineNo">2719</span><a name="line.2719"></a>
<span class="sourceLineNo">2720</span> private static void SelectedMeanArray(double[] out, Dataset data, int Min, int Max) {<a name="line.2720"></a>
<span class="sourceLineNo">2721</span> final int isize = out.length;<a name="line.2721"></a>
<span class="sourceLineNo">2722</span> for (int j = 0; j &lt; isize; j++)<a name="line.2722"></a>
<span class="sourceLineNo">2723</span> out[j] = 0.;<a name="line.2723"></a>
<span class="sourceLineNo">2724</span><a name="line.2724"></a>
<span class="sourceLineNo">2725</span> for (int i = Min, imax = data.getSize(); i &lt;= Max; i++) {<a name="line.2725"></a>
<span class="sourceLineNo">2726</span> // clip i appropriately, imagine that effectively the two ends<a name="line.2726"></a>
<span class="sourceLineNo">2727</span> // continue<a name="line.2727"></a>
<span class="sourceLineNo">2728</span> // straight out.<a name="line.2728"></a>
<span class="sourceLineNo">2729</span> int pos = i * isize;<a name="line.2729"></a>
<span class="sourceLineNo">2730</span> if (pos &lt; 0) {<a name="line.2730"></a>
<span class="sourceLineNo">2731</span> pos = 0;<a name="line.2731"></a>
<span class="sourceLineNo">2732</span> } else if (pos &gt;= imax) {<a name="line.2732"></a>
<span class="sourceLineNo">2733</span> pos = imax - isize;<a name="line.2733"></a>
<span class="sourceLineNo">2734</span> }<a name="line.2734"></a>
<span class="sourceLineNo">2735</span> for (int j = 0; j &lt; isize; j++)<a name="line.2735"></a>
<span class="sourceLineNo">2736</span> out[j] += data.getElementDoubleAbs(pos + j);<a name="line.2736"></a>
<span class="sourceLineNo">2737</span> }<a name="line.2737"></a>
<span class="sourceLineNo">2738</span><a name="line.2738"></a>
<span class="sourceLineNo">2739</span> // now the sum is complete, average the values.<a name="line.2739"></a>
<span class="sourceLineNo">2740</span> double norm = 1. / (Max - Min + 1.);<a name="line.2740"></a>
<span class="sourceLineNo">2741</span> for (int j = 0; j &lt; isize; j++)<a name="line.2741"></a>
<span class="sourceLineNo">2742</span> out[j] *= norm;<a name="line.2742"></a>
<span class="sourceLineNo">2743</span><a name="line.2743"></a>
<span class="sourceLineNo">2744</span> }<a name="line.2744"></a>
<span class="sourceLineNo">2745</span><a name="line.2745"></a>
<span class="sourceLineNo">2746</span> /**<a name="line.2746"></a>
<span class="sourceLineNo">2747</span> * Calculates the derivative of a line described by two datasets (x,y) given<a name="line.2747"></a>
<span class="sourceLineNo">2748</span> * a spread of n either side of the point<a name="line.2748"></a>
<span class="sourceLineNo">2749</span> * <a name="line.2749"></a>
<span class="sourceLineNo">2750</span> * @param x<a name="line.2750"></a>
<span class="sourceLineNo">2751</span> * The x values of the function to take the derivative of.<a name="line.2751"></a>
<span class="sourceLineNo">2752</span> * @param y<a name="line.2752"></a>
<span class="sourceLineNo">2753</span> * The y values of the function to take the derivative of.<a name="line.2753"></a>
<span class="sourceLineNo">2754</span> * @param n<a name="line.2754"></a>
<span class="sourceLineNo">2755</span> * The spread the derivative is calculated from, i.e. the<a name="line.2755"></a>
<span class="sourceLineNo">2756</span> * smoothing, the higher the value, the more smoothing occurs.<a name="line.2756"></a>
<span class="sourceLineNo">2757</span> * @return A dataset which contains all the derivative point for point.<a name="line.2757"></a>
<span class="sourceLineNo">2758</span> */<a name="line.2758"></a>
<span class="sourceLineNo">2759</span> public static Dataset derivative(Dataset x, Dataset y, int n) {<a name="line.2759"></a>
<span class="sourceLineNo">2760</span> if (x.getRank() != 1 || y.getRank() != 1) {<a name="line.2760"></a>
<span class="sourceLineNo">2761</span> throw new IllegalArgumentException("Only one dimensional dataset supported");<a name="line.2761"></a>
<span class="sourceLineNo">2762</span> }<a name="line.2762"></a>
<span class="sourceLineNo">2763</span> if (y.getSize() &gt; x.getSize()) {<a name="line.2763"></a>
<span class="sourceLineNo">2764</span> throw new IllegalArgumentException("Length of x dataset should be greater than or equal to y's");<a name="line.2764"></a>
<span class="sourceLineNo">2765</span> }<a name="line.2765"></a>
<span class="sourceLineNo">2766</span> int dtype = y.getDType();<a name="line.2766"></a>
<span class="sourceLineNo">2767</span> Dataset result;<a name="line.2767"></a>
<span class="sourceLineNo">2768</span> switch (dtype) {<a name="line.2768"></a>
<span class="sourceLineNo">2769</span> case Dataset.BOOL:<a name="line.2769"></a>
<span class="sourceLineNo">2770</span> case Dataset.INT8:<a name="line.2770"></a>
<span class="sourceLineNo">2771</span> case Dataset.INT16:<a name="line.2771"></a>
<span class="sourceLineNo">2772</span> case Dataset.ARRAYINT8:<a name="line.2772"></a>
<span class="sourceLineNo">2773</span> case Dataset.ARRAYINT16:<a name="line.2773"></a>
<span class="sourceLineNo">2774</span> result = DatasetFactory.zeros(y, FloatDataset.class);<a name="line.2774"></a>
<span class="sourceLineNo">2775</span> break;<a name="line.2775"></a>
<span class="sourceLineNo">2776</span> case Dataset.INT32:<a name="line.2776"></a>
<span class="sourceLineNo">2777</span> case Dataset.INT64:<a name="line.2777"></a>
<span class="sourceLineNo">2778</span> case Dataset.ARRAYINT32:<a name="line.2778"></a>
<span class="sourceLineNo">2779</span> case Dataset.ARRAYINT64:<a name="line.2779"></a>
<span class="sourceLineNo">2780</span> result = DatasetFactory.zeros(y, DoubleDataset.class);<a name="line.2780"></a>
<span class="sourceLineNo">2781</span> break;<a name="line.2781"></a>
<span class="sourceLineNo">2782</span> case Dataset.FLOAT32:<a name="line.2782"></a>
<span class="sourceLineNo">2783</span> case Dataset.FLOAT64:<a name="line.2783"></a>
<span class="sourceLineNo">2784</span> case Dataset.COMPLEX64:<a name="line.2784"></a>
<span class="sourceLineNo">2785</span> case Dataset.COMPLEX128:<a name="line.2785"></a>
<span class="sourceLineNo">2786</span> case Dataset.ARRAYFLOAT32:<a name="line.2786"></a>
<span class="sourceLineNo">2787</span> case Dataset.ARRAYFLOAT64:<a name="line.2787"></a>
<span class="sourceLineNo">2788</span> result = DatasetFactory.zeros(y);<a name="line.2788"></a>
<span class="sourceLineNo">2789</span> break;<a name="line.2789"></a>
<span class="sourceLineNo">2790</span> default:<a name="line.2790"></a>
<span class="sourceLineNo">2791</span> throw new UnsupportedOperationException("derivative does not support multiple-element dataset");<a name="line.2791"></a>
<span class="sourceLineNo">2792</span> }<a name="line.2792"></a>
<span class="sourceLineNo">2793</span><a name="line.2793"></a>
<span class="sourceLineNo">2794</span> final int isize = y.getElementsPerItem();<a name="line.2794"></a>
<span class="sourceLineNo">2795</span> if (isize == 1) {<a name="line.2795"></a>
<span class="sourceLineNo">2796</span> for (int i = 0, imax = x.getSize(); i &lt; imax; i++) {<a name="line.2796"></a>
<span class="sourceLineNo">2797</span> double LeftValue = SelectedMean(y, i - n, i - 1);<a name="line.2797"></a>
<span class="sourceLineNo">2798</span> double RightValue = SelectedMean(y, i + 1, i + n);<a name="line.2798"></a>
<span class="sourceLineNo">2799</span> double LeftPosition = SelectedMean(x, i - n, i - 1);<a name="line.2799"></a>
<span class="sourceLineNo">2800</span> double RightPosition = SelectedMean(x, i + 1, i + n);<a name="line.2800"></a>
<span class="sourceLineNo">2801</span><a name="line.2801"></a>
<span class="sourceLineNo">2802</span> // now the values and positions are calculated, the derivative<a name="line.2802"></a>
<span class="sourceLineNo">2803</span> // can be<a name="line.2803"></a>
<span class="sourceLineNo">2804</span> // calculated.<a name="line.2804"></a>
<span class="sourceLineNo">2805</span> result.set(((RightValue - LeftValue) / (RightPosition - LeftPosition)), i);<a name="line.2805"></a>
<span class="sourceLineNo">2806</span> }<a name="line.2806"></a>
<span class="sourceLineNo">2807</span> } else {<a name="line.2807"></a>
<span class="sourceLineNo">2808</span> double[] leftValues = new double[isize];<a name="line.2808"></a>
<span class="sourceLineNo">2809</span> double[] rightValues = new double[isize];<a name="line.2809"></a>
<span class="sourceLineNo">2810</span> for (int i = 0, imax = x.getSize(); i &lt; imax; i++) {<a name="line.2810"></a>
<span class="sourceLineNo">2811</span> SelectedMeanArray(leftValues, y, i - n, i - 1);<a name="line.2811"></a>
<span class="sourceLineNo">2812</span> SelectedMeanArray(rightValues, y, i + 1, i + n);<a name="line.2812"></a>
<span class="sourceLineNo">2813</span> double delta = SelectedMean(x, i - n, i - 1);<a name="line.2813"></a>
<span class="sourceLineNo">2814</span> delta = 1. / (SelectedMean(x, i + 1, i + n) - delta);<a name="line.2814"></a>
<span class="sourceLineNo">2815</span> for (int j = 0; j &lt; isize; j++) {<a name="line.2815"></a>
<span class="sourceLineNo">2816</span> rightValues[j] -= leftValues[j];<a name="line.2816"></a>
<span class="sourceLineNo">2817</span> rightValues[j] *= delta;<a name="line.2817"></a>
<span class="sourceLineNo">2818</span> }<a name="line.2818"></a>
<span class="sourceLineNo">2819</span> result.set(rightValues, i);<a name="line.2819"></a>
<span class="sourceLineNo">2820</span> }<a name="line.2820"></a>
<span class="sourceLineNo">2821</span> }<a name="line.2821"></a>
<span class="sourceLineNo">2822</span><a name="line.2822"></a>
<span class="sourceLineNo">2823</span> // set the name based on the changes made<a name="line.2823"></a>
<span class="sourceLineNo">2824</span> result.setName(y.getName() + "'");<a name="line.2824"></a>
<span class="sourceLineNo">2825</span><a name="line.2825"></a>
<span class="sourceLineNo">2826</span> return result;<a name="line.2826"></a>
<span class="sourceLineNo">2827</span> }<a name="line.2827"></a>
<span class="sourceLineNo">2828</span><a name="line.2828"></a>
<span class="sourceLineNo">2829</span> /**<a name="line.2829"></a>
<span class="sourceLineNo">2830</span> * Discrete difference of dataset along axis using finite central difference<a name="line.2830"></a>
<span class="sourceLineNo">2831</span> * <a name="line.2831"></a>
<span class="sourceLineNo">2832</span> * @param a<a name="line.2832"></a>
<span class="sourceLineNo">2833</span> * @param axis<a name="line.2833"></a>
<span class="sourceLineNo">2834</span> * @return difference<a name="line.2834"></a>
<span class="sourceLineNo">2835</span> */<a name="line.2835"></a>
<span class="sourceLineNo">2836</span> public static Dataset centralDifference(Dataset a, int axis) {<a name="line.2836"></a>
<span class="sourceLineNo">2837</span> Dataset ds;<a name="line.2837"></a>
<span class="sourceLineNo">2838</span> final Class&lt;? extends Dataset&gt; clazz = a.getClass();<a name="line.2838"></a>
<span class="sourceLineNo">2839</span> final int rank = a.getRank();<a name="line.2839"></a>
<span class="sourceLineNo">2840</span> final int is = a.getElementsPerItem();<a name="line.2840"></a>
<span class="sourceLineNo">2841</span><a name="line.2841"></a>
<span class="sourceLineNo">2842</span> if (axis &lt; 0) {<a name="line.2842"></a>
<span class="sourceLineNo">2843</span> axis += rank;<a name="line.2843"></a>
<span class="sourceLineNo">2844</span> }<a name="line.2844"></a>
<span class="sourceLineNo">2845</span> if (axis &lt; 0 || axis &gt;= rank) {<a name="line.2845"></a>
<span class="sourceLineNo">2846</span> throw new IllegalArgumentException("Axis is out of range");<a name="line.2846"></a>
<span class="sourceLineNo">2847</span> }<a name="line.2847"></a>
<span class="sourceLineNo">2848</span><a name="line.2848"></a>
<span class="sourceLineNo">2849</span> final int len = a.getShapeRef()[axis];<a name="line.2849"></a>
<span class="sourceLineNo">2850</span> if (len &lt; 2) {<a name="line.2850"></a>
<span class="sourceLineNo">2851</span> throw new IllegalArgumentException("Dataset should have a size &gt; 1 along given axis");<a name="line.2851"></a>
<span class="sourceLineNo">2852</span> }<a name="line.2852"></a>
<span class="sourceLineNo">2853</span> ds = DatasetFactory.zeros(is, clazz, a.getShapeRef());<a name="line.2853"></a>
<span class="sourceLineNo">2854</span> if (rank == 1) {<a name="line.2854"></a>
<span class="sourceLineNo">2855</span> centralDifference(a, ds);<a name="line.2855"></a>
<span class="sourceLineNo">2856</span> } else {<a name="line.2856"></a>
<span class="sourceLineNo">2857</span> final Dataset src = DatasetFactory.zeros(is, clazz, len);<a name="line.2857"></a>
<span class="sourceLineNo">2858</span> final Dataset dest = DatasetFactory.zeros(is, clazz, len);<a name="line.2858"></a>
<span class="sourceLineNo">2859</span> final PositionIterator pi = a.getPositionIterator(axis);<a name="line.2859"></a>
<span class="sourceLineNo">2860</span> final int[] pos = pi.getPos();<a name="line.2860"></a>
<span class="sourceLineNo">2861</span> final boolean[] hit = pi.getOmit();<a name="line.2861"></a>
<span class="sourceLineNo">2862</span> while (pi.hasNext()) {<a name="line.2862"></a>
<span class="sourceLineNo">2863</span> a.copyItemsFromAxes(pos, hit, src);<a name="line.2863"></a>
<span class="sourceLineNo">2864</span> centralDifference(src, dest);<a name="line.2864"></a>
<span class="sourceLineNo">2865</span> ds.setItemsOnAxes(pos, hit, dest.getBuffer());<a name="line.2865"></a>
<span class="sourceLineNo">2866</span> }<a name="line.2866"></a>
<span class="sourceLineNo">2867</span> }<a name="line.2867"></a>
<span class="sourceLineNo">2868</span><a name="line.2868"></a>
<span class="sourceLineNo">2869</span> return ds;<a name="line.2869"></a>
<span class="sourceLineNo">2870</span> }<a name="line.2870"></a>
<span class="sourceLineNo">2871</span><a name="line.2871"></a>
<span class="sourceLineNo">2872</span> /**<a name="line.2872"></a>
<span class="sourceLineNo">2873</span> * 1st order discrete difference of dataset along flattened dataset using<a name="line.2873"></a>
<span class="sourceLineNo">2874</span> * central difference<a name="line.2874"></a>
<span class="sourceLineNo">2875</span> * <a name="line.2875"></a>
<span class="sourceLineNo">2876</span> * @param a<a name="line.2876"></a>
<span class="sourceLineNo">2877</span> * is 1d dataset<a name="line.2877"></a>
<span class="sourceLineNo">2878</span> * @param out<a name="line.2878"></a>
<span class="sourceLineNo">2879</span> * is 1d dataset<a name="line.2879"></a>
<span class="sourceLineNo">2880</span> */<a name="line.2880"></a>
<span class="sourceLineNo">2881</span> private static void centralDifference(final Dataset a, final Dataset out) {<a name="line.2881"></a>
<span class="sourceLineNo">2882</span> final int isize = a.getElementsPerItem();<a name="line.2882"></a>
<span class="sourceLineNo">2883</span> final int dt = a.getDType();<a name="line.2883"></a>
<span class="sourceLineNo">2884</span><a name="line.2884"></a>
<span class="sourceLineNo">2885</span> final int nlen = (out.getShapeRef()[0] - 1) * isize;<a name="line.2885"></a>
<span class="sourceLineNo">2886</span> if (nlen &lt; 1) {<a name="line.2886"></a>
<span class="sourceLineNo">2887</span> throw new IllegalArgumentException("Dataset should have a size &gt; 1 along given axis");<a name="line.2887"></a>
<span class="sourceLineNo">2888</span> }<a name="line.2888"></a>
<span class="sourceLineNo">2889</span> final IndexIterator it = a.getIterator();<a name="line.2889"></a>
<span class="sourceLineNo">2890</span> if (!it.hasNext())<a name="line.2890"></a>
<span class="sourceLineNo">2891</span> return;<a name="line.2891"></a>
<span class="sourceLineNo">2892</span> int oi = it.index;<a name="line.2892"></a>
<span class="sourceLineNo">2893</span> if (!it.hasNext())<a name="line.2893"></a>
<span class="sourceLineNo">2894</span> return;<a name="line.2894"></a>
<span class="sourceLineNo">2895</span> int pi = it.index;<a name="line.2895"></a>
<span class="sourceLineNo">2896</span><a name="line.2896"></a>
<span class="sourceLineNo">2897</span> switch (dt) {<a name="line.2897"></a>
<span class="sourceLineNo">2898</span> case Dataset.INT8:<a name="line.2898"></a>
<span class="sourceLineNo">2899</span> final byte[] i8data = ((ByteDataset) a).getData();<a name="line.2899"></a>
<span class="sourceLineNo">2900</span> final byte[] oi8data = ((ByteDataset) out).getData();<a name="line.2900"></a>
<span class="sourceLineNo">2901</span> oi8data[0] = (byte) (i8data[pi] - i8data[oi]);<a name="line.2901"></a>
<span class="sourceLineNo">2902</span> for (int i = 1; it.hasNext(); i++) {<a name="line.2902"></a>
<span class="sourceLineNo">2903</span> oi8data[i] = (byte) ((i8data[it.index] - i8data[oi]) / 2);<a name="line.2903"></a>
<span class="sourceLineNo">2904</span> oi = pi;<a name="line.2904"></a>
<span class="sourceLineNo">2905</span> pi = it.index;<a name="line.2905"></a>
<span class="sourceLineNo">2906</span> }<a name="line.2906"></a>
<span class="sourceLineNo">2907</span> oi8data[nlen] = (byte) (i8data[pi] - i8data[oi]);<a name="line.2907"></a>
<span class="sourceLineNo">2908</span> break;<a name="line.2908"></a>
<span class="sourceLineNo">2909</span> case Dataset.INT16:<a name="line.2909"></a>
<span class="sourceLineNo">2910</span> final short[] i16data = ((ShortDataset) a).getData();<a name="line.2910"></a>
<span class="sourceLineNo">2911</span> final short[] oi16data = ((ShortDataset) out).getData();<a name="line.2911"></a>
<span class="sourceLineNo">2912</span> oi16data[0] = (short) (i16data[pi] - i16data[oi]);<a name="line.2912"></a>
<span class="sourceLineNo">2913</span> for (int i = 1; it.hasNext(); i++) {<a name="line.2913"></a>
<span class="sourceLineNo">2914</span> oi16data[i] = (short) ((i16data[it.index] - i16data[oi]) / 2);<a name="line.2914"></a>
<span class="sourceLineNo">2915</span> oi = pi;<a name="line.2915"></a>
<span class="sourceLineNo">2916</span> pi = it.index;<a name="line.2916"></a>
<span class="sourceLineNo">2917</span> }<a name="line.2917"></a>
<span class="sourceLineNo">2918</span> oi16data[nlen] = (short) (i16data[pi] - i16data[oi]);<a name="line.2918"></a>
<span class="sourceLineNo">2919</span> break;<a name="line.2919"></a>
<span class="sourceLineNo">2920</span> case Dataset.INT32:<a name="line.2920"></a>
<span class="sourceLineNo">2921</span> final int[] i32data = ((IntegerDataset) a).getData();<a name="line.2921"></a>
<span class="sourceLineNo">2922</span> final int[] oi32data = ((IntegerDataset) out).getData();<a name="line.2922"></a>
<span class="sourceLineNo">2923</span> oi32data[0] = i32data[pi] - i32data[oi];<a name="line.2923"></a>
<span class="sourceLineNo">2924</span> for (int i = 1; it.hasNext(); i++) {<a name="line.2924"></a>
<span class="sourceLineNo">2925</span> oi32data[i] = (i32data[it.index] - i32data[oi]) / 2;<a name="line.2925"></a>
<span class="sourceLineNo">2926</span> oi = pi;<a name="line.2926"></a>
<span class="sourceLineNo">2927</span> pi = it.index;<a name="line.2927"></a>
<span class="sourceLineNo">2928</span> }<a name="line.2928"></a>
<span class="sourceLineNo">2929</span> oi32data[nlen] = i32data[pi] - i32data[oi];<a name="line.2929"></a>
<span class="sourceLineNo">2930</span> break;<a name="line.2930"></a>
<span class="sourceLineNo">2931</span> case Dataset.INT64:<a name="line.2931"></a>
<span class="sourceLineNo">2932</span> final long[] i64data = ((LongDataset) a).getData();<a name="line.2932"></a>
<span class="sourceLineNo">2933</span> final long[] oi64data = ((LongDataset) out).getData();<a name="line.2933"></a>
<span class="sourceLineNo">2934</span> oi64data[0] = i64data[pi] - i64data[oi];<a name="line.2934"></a>
<span class="sourceLineNo">2935</span> for (int i = 1; it.hasNext(); i++) {<a name="line.2935"></a>
<span class="sourceLineNo">2936</span> oi64data[i] = (i64data[it.index] - i64data[oi]) / 2;<a name="line.2936"></a>
<span class="sourceLineNo">2937</span> oi = pi;<a name="line.2937"></a>
<span class="sourceLineNo">2938</span> pi = it.index;<a name="line.2938"></a>
<span class="sourceLineNo">2939</span> }<a name="line.2939"></a>
<span class="sourceLineNo">2940</span> oi64data[nlen] = i64data[pi] - i64data[oi];<a name="line.2940"></a>
<span class="sourceLineNo">2941</span> break;<a name="line.2941"></a>
<span class="sourceLineNo">2942</span> case Dataset.ARRAYINT8:<a name="line.2942"></a>
<span class="sourceLineNo">2943</span> final byte[] ai8data = ((CompoundByteDataset) a).getData();<a name="line.2943"></a>
<span class="sourceLineNo">2944</span> final byte[] oai8data = ((CompoundByteDataset) out).getData();<a name="line.2944"></a>
<span class="sourceLineNo">2945</span> for (int k = 0; k &lt; isize; k++) {<a name="line.2945"></a>
<span class="sourceLineNo">2946</span> oai8data[k] = (byte) (ai8data[pi + k] - ai8data[oi + k]);<a name="line.2946"></a>
<span class="sourceLineNo">2947</span> }<a name="line.2947"></a>
<span class="sourceLineNo">2948</span> for (int i = isize; it.hasNext();) {<a name="line.2948"></a>
<span class="sourceLineNo">2949</span> int l = it.index;<a name="line.2949"></a>
<span class="sourceLineNo">2950</span> for (int k = 0; k &lt; isize; k++) {<a name="line.2950"></a>
<span class="sourceLineNo">2951</span> oai8data[i++] = (byte) ((ai8data[l++] - ai8data[oi++]) / 2);<a name="line.2951"></a>
<span class="sourceLineNo">2952</span> }<a name="line.2952"></a>
<span class="sourceLineNo">2953</span> oi = pi;<a name="line.2953"></a>
<span class="sourceLineNo">2954</span> pi = it.index;<a name="line.2954"></a>
<span class="sourceLineNo">2955</span> }<a name="line.2955"></a>
<span class="sourceLineNo">2956</span> for (int k = 0; k &lt; isize; k++) {<a name="line.2956"></a>
<span class="sourceLineNo">2957</span> oai8data[nlen + k] = (byte) (ai8data[pi + k] - ai8data[oi + k]);<a name="line.2957"></a>
<span class="sourceLineNo">2958</span> }<a name="line.2958"></a>
<span class="sourceLineNo">2959</span> break;<a name="line.2959"></a>
<span class="sourceLineNo">2960</span> case Dataset.ARRAYINT16:<a name="line.2960"></a>
<span class="sourceLineNo">2961</span> final short[] ai16data = ((CompoundShortDataset) a).getData();<a name="line.2961"></a>
<span class="sourceLineNo">2962</span> final short[] oai16data = ((CompoundShortDataset) out).getData();<a name="line.2962"></a>
<span class="sourceLineNo">2963</span> for (int k = 0; k &lt; isize; k++) {<a name="line.2963"></a>
<span class="sourceLineNo">2964</span> oai16data[k] = (short) (ai16data[pi + k] - ai16data[oi + k]);<a name="line.2964"></a>
<span class="sourceLineNo">2965</span> }<a name="line.2965"></a>
<span class="sourceLineNo">2966</span> for (int i = isize; it.hasNext();) {<a name="line.2966"></a>
<span class="sourceLineNo">2967</span> int l = it.index;<a name="line.2967"></a>
<span class="sourceLineNo">2968</span> for (int k = 0; k &lt; isize; k++) {<a name="line.2968"></a>
<span class="sourceLineNo">2969</span> oai16data[i++] = (short) ((ai16data[l++] - ai16data[oi++]) / 2);<a name="line.2969"></a>
<span class="sourceLineNo">2970</span> }<a name="line.2970"></a>
<span class="sourceLineNo">2971</span> oi = pi;<a name="line.2971"></a>
<span class="sourceLineNo">2972</span> pi = it.index;<a name="line.2972"></a>
<span class="sourceLineNo">2973</span> }<a name="line.2973"></a>
<span class="sourceLineNo">2974</span> for (int k = 0; k &lt; isize; k++) {<a name="line.2974"></a>
<span class="sourceLineNo">2975</span> oai16data[nlen + k] = (short) (ai16data[pi + k] - ai16data[oi + k]);<a name="line.2975"></a>
<span class="sourceLineNo">2976</span> }<a name="line.2976"></a>
<span class="sourceLineNo">2977</span> break;<a name="line.2977"></a>
<span class="sourceLineNo">2978</span> case Dataset.ARRAYINT32:<a name="line.2978"></a>
<span class="sourceLineNo">2979</span> final int[] ai32data = ((CompoundIntegerDataset) a).getData();<a name="line.2979"></a>
<span class="sourceLineNo">2980</span> final int[] oai32data = ((CompoundIntegerDataset) out).getData();<a name="line.2980"></a>
<span class="sourceLineNo">2981</span> for (int k = 0; k &lt; isize; k++) {<a name="line.2981"></a>
<span class="sourceLineNo">2982</span> oai32data[k] = ai32data[pi + k] - ai32data[oi + k];<a name="line.2982"></a>
<span class="sourceLineNo">2983</span> }<a name="line.2983"></a>
<span class="sourceLineNo">2984</span> for (int i = isize; it.hasNext();) {<a name="line.2984"></a>
<span class="sourceLineNo">2985</span> int l = it.index;<a name="line.2985"></a>
<span class="sourceLineNo">2986</span> for (int k = 0; k &lt; isize; k++) {<a name="line.2986"></a>
<span class="sourceLineNo">2987</span> oai32data[i++] = (ai32data[l++] - ai32data[oi++]) / 2;<a name="line.2987"></a>
<span class="sourceLineNo">2988</span> }<a name="line.2988"></a>
<span class="sourceLineNo">2989</span> oi = pi;<a name="line.2989"></a>
<span class="sourceLineNo">2990</span> pi = it.index;<a name="line.2990"></a>
<span class="sourceLineNo">2991</span> }<a name="line.2991"></a>
<span class="sourceLineNo">2992</span> for (int k = 0; k &lt; isize; k++) {<a name="line.2992"></a>
<span class="sourceLineNo">2993</span> oai32data[nlen + k] = ai32data[pi + k] - ai32data[oi + k];<a name="line.2993"></a>
<span class="sourceLineNo">2994</span> }<a name="line.2994"></a>
<span class="sourceLineNo">2995</span> break;<a name="line.2995"></a>
<span class="sourceLineNo">2996</span> case Dataset.ARRAYINT64:<a name="line.2996"></a>
<span class="sourceLineNo">2997</span> final long[] ai64data = ((CompoundLongDataset) a).getData();<a name="line.2997"></a>
<span class="sourceLineNo">2998</span> final long[] oai64data = ((CompoundLongDataset) out).getData();<a name="line.2998"></a>
<span class="sourceLineNo">2999</span> for (int k = 0; k &lt; isize; k++) {<a name="line.2999"></a>
<span class="sourceLineNo">3000</span> oai64data[k] = ai64data[pi + k] - ai64data[oi + k];<a name="line.3000"></a>
<span class="sourceLineNo">3001</span> }<a name="line.3001"></a>
<span class="sourceLineNo">3002</span> for (int i = isize; it.hasNext();) {<a name="line.3002"></a>
<span class="sourceLineNo">3003</span> int l = it.index;<a name="line.3003"></a>
<span class="sourceLineNo">3004</span> for (int k = 0; k &lt; isize; k++) {<a name="line.3004"></a>
<span class="sourceLineNo">3005</span> oai64data[i++] = (ai64data[l++] - ai64data[oi++]) / 2;<a name="line.3005"></a>
<span class="sourceLineNo">3006</span> }<a name="line.3006"></a>
<span class="sourceLineNo">3007</span> oi = pi;<a name="line.3007"></a>
<span class="sourceLineNo">3008</span> pi = it.index;<a name="line.3008"></a>
<span class="sourceLineNo">3009</span> }<a name="line.3009"></a>
<span class="sourceLineNo">3010</span> for (int k = 0; k &lt; isize; k++) {<a name="line.3010"></a>
<span class="sourceLineNo">3011</span> oai64data[nlen + k] = ai64data[pi + k] - ai64data[oi + k];<a name="line.3011"></a>
<span class="sourceLineNo">3012</span> }<a name="line.3012"></a>
<span class="sourceLineNo">3013</span> break;<a name="line.3013"></a>
<span class="sourceLineNo">3014</span> case Dataset.FLOAT32:<a name="line.3014"></a>
<span class="sourceLineNo">3015</span> final float[] f32data = ((FloatDataset) a).getData();<a name="line.3015"></a>
<span class="sourceLineNo">3016</span> final float[] of32data = ((FloatDataset) out).getData();<a name="line.3016"></a>
<span class="sourceLineNo">3017</span> of32data[0] = f32data[pi] - f32data[oi];<a name="line.3017"></a>
<span class="sourceLineNo">3018</span> for (int i = 1; it.hasNext(); i++) {<a name="line.3018"></a>
<span class="sourceLineNo">3019</span> of32data[i] = (f32data[it.index] - f32data[oi]) * 0.5f;<a name="line.3019"></a>
<span class="sourceLineNo">3020</span> oi = pi;<a name="line.3020"></a>
<span class="sourceLineNo">3021</span> pi = it.index;<a name="line.3021"></a>
<span class="sourceLineNo">3022</span> }<a name="line.3022"></a>
<span class="sourceLineNo">3023</span> of32data[nlen] = f32data[pi] - f32data[oi];<a name="line.3023"></a>
<span class="sourceLineNo">3024</span> break;<a name="line.3024"></a>
<span class="sourceLineNo">3025</span> case Dataset.FLOAT64:<a name="line.3025"></a>
<span class="sourceLineNo">3026</span> final double[] f64data = ((DoubleDataset) a).getData();<a name="line.3026"></a>
<span class="sourceLineNo">3027</span> final double[] of64data = ((DoubleDataset) out).getData();<a name="line.3027"></a>
<span class="sourceLineNo">3028</span> of64data[0] = f64data[pi] - f64data[oi];<a name="line.3028"></a>
<span class="sourceLineNo">3029</span> for (int i = 1; it.hasNext(); i++) {<a name="line.3029"></a>
<span class="sourceLineNo">3030</span> of64data[i] = (f64data[it.index] - f64data[oi]) * 0.5f;<a name="line.3030"></a>
<span class="sourceLineNo">3031</span> oi = pi;<a name="line.3031"></a>
<span class="sourceLineNo">3032</span> pi = it.index;<a name="line.3032"></a>
<span class="sourceLineNo">3033</span> }<a name="line.3033"></a>
<span class="sourceLineNo">3034</span> of64data[nlen] = f64data[pi] - f64data[oi];<a name="line.3034"></a>
<span class="sourceLineNo">3035</span> break;<a name="line.3035"></a>
<span class="sourceLineNo">3036</span> case Dataset.COMPLEX64:<a name="line.3036"></a>
<span class="sourceLineNo">3037</span> final float[] c64data = ((ComplexFloatDataset) a).getData();<a name="line.3037"></a>
<span class="sourceLineNo">3038</span> final float[] oc64data = ((ComplexFloatDataset) out).getData();<a name="line.3038"></a>
<span class="sourceLineNo">3039</span> oc64data[0] = c64data[pi] - c64data[oi];<a name="line.3039"></a>
<span class="sourceLineNo">3040</span> oc64data[1] = c64data[pi + 1] - c64data[oi + 1];<a name="line.3040"></a>
<span class="sourceLineNo">3041</span> for (int i = 2; it.hasNext();) {<a name="line.3041"></a>
<span class="sourceLineNo">3042</span> oc64data[i++] = (c64data[it.index] - c64data[oi++]) * 0.5f;<a name="line.3042"></a>
<span class="sourceLineNo">3043</span> oc64data[i++] = (c64data[it.index + 1] - c64data[oi]) * 0.5f;<a name="line.3043"></a>
<span class="sourceLineNo">3044</span> oi = pi;<a name="line.3044"></a>
<span class="sourceLineNo">3045</span> pi = it.index;<a name="line.3045"></a>
<span class="sourceLineNo">3046</span> }<a name="line.3046"></a>
<span class="sourceLineNo">3047</span> oc64data[nlen] = c64data[pi] - c64data[oi];<a name="line.3047"></a>
<span class="sourceLineNo">3048</span> oc64data[nlen + 1] = c64data[pi + 1] - c64data[oi + 1];<a name="line.3048"></a>
<span class="sourceLineNo">3049</span> break;<a name="line.3049"></a>
<span class="sourceLineNo">3050</span> case Dataset.COMPLEX128:<a name="line.3050"></a>
<span class="sourceLineNo">3051</span> final double[] c128data = ((ComplexDoubleDataset) a).getData();<a name="line.3051"></a>
<span class="sourceLineNo">3052</span> final double[] oc128data = ((ComplexDoubleDataset) out).getData();<a name="line.3052"></a>
<span class="sourceLineNo">3053</span> oc128data[0] = c128data[pi] - c128data[oi];<a name="line.3053"></a>
<span class="sourceLineNo">3054</span> oc128data[1] = c128data[pi + 1] - c128data[oi + 1];<a name="line.3054"></a>
<span class="sourceLineNo">3055</span> for (int i = 2; it.hasNext();) {<a name="line.3055"></a>
<span class="sourceLineNo">3056</span> oc128data[i++] = (c128data[it.index] - c128data[oi++]) * 0.5f;<a name="line.3056"></a>
<span class="sourceLineNo">3057</span> oc128data[i++] = (c128data[it.index + 1] - c128data[oi]) * 0.5f;<a name="line.3057"></a>
<span class="sourceLineNo">3058</span> oi = pi;<a name="line.3058"></a>
<span class="sourceLineNo">3059</span> pi = it.index;<a name="line.3059"></a>
<span class="sourceLineNo">3060</span> }<a name="line.3060"></a>
<span class="sourceLineNo">3061</span> oc128data[nlen] = c128data[pi] - c128data[oi];<a name="line.3061"></a>
<span class="sourceLineNo">3062</span> oc128data[nlen + 1] = c128data[pi + 1] - c128data[oi + 1];<a name="line.3062"></a>
<span class="sourceLineNo">3063</span> break;<a name="line.3063"></a>
<span class="sourceLineNo">3064</span> case Dataset.ARRAYFLOAT32:<a name="line.3064"></a>
<span class="sourceLineNo">3065</span> final float[] af32data = ((CompoundFloatDataset) a).getData();<a name="line.3065"></a>
<span class="sourceLineNo">3066</span> final float[] oaf32data = ((CompoundFloatDataset) out).getData();<a name="line.3066"></a>
<span class="sourceLineNo">3067</span> for (int k = 0; k &lt; isize; k++) {<a name="line.3067"></a>
<span class="sourceLineNo">3068</span> oaf32data[k] = af32data[pi + k] - af32data[oi + k];<a name="line.3068"></a>
<span class="sourceLineNo">3069</span> }<a name="line.3069"></a>
<span class="sourceLineNo">3070</span> for (int i = isize; it.hasNext();) {<a name="line.3070"></a>
<span class="sourceLineNo">3071</span> int l = it.index;<a name="line.3071"></a>
<span class="sourceLineNo">3072</span> for (int k = 0; k &lt; isize; k++) {<a name="line.3072"></a>
<span class="sourceLineNo">3073</span> oaf32data[i++] = (af32data[l++] - af32data[oi++]) * 0.5f;<a name="line.3073"></a>
<span class="sourceLineNo">3074</span> }<a name="line.3074"></a>
<span class="sourceLineNo">3075</span> oi = pi;<a name="line.3075"></a>
<span class="sourceLineNo">3076</span> pi = it.index;<a name="line.3076"></a>
<span class="sourceLineNo">3077</span> }<a name="line.3077"></a>
<span class="sourceLineNo">3078</span> for (int k = 0; k &lt; isize; k++) {<a name="line.3078"></a>
<span class="sourceLineNo">3079</span> oaf32data[nlen + k] = af32data[pi + k] - af32data[oi + k];<a name="line.3079"></a>
<span class="sourceLineNo">3080</span> }<a name="line.3080"></a>
<span class="sourceLineNo">3081</span> break;<a name="line.3081"></a>
<span class="sourceLineNo">3082</span> case Dataset.ARRAYFLOAT64:<a name="line.3082"></a>
<span class="sourceLineNo">3083</span> final double[] af64data = ((CompoundDoubleDataset) a).getData();<a name="line.3083"></a>
<span class="sourceLineNo">3084</span> final double[] oaf64data = ((CompoundDoubleDataset) out).getData();<a name="line.3084"></a>
<span class="sourceLineNo">3085</span> for (int k = 0; k &lt; isize; k++) {<a name="line.3085"></a>
<span class="sourceLineNo">3086</span> oaf64data[k] = af64data[pi + k] - af64data[oi + k];<a name="line.3086"></a>
<span class="sourceLineNo">3087</span> }<a name="line.3087"></a>
<span class="sourceLineNo">3088</span> for (int i = isize; it.hasNext();) {<a name="line.3088"></a>
<span class="sourceLineNo">3089</span> int l = it.index;<a name="line.3089"></a>
<span class="sourceLineNo">3090</span> for (int k = 0; k &lt; isize; k++) {<a name="line.3090"></a>
<span class="sourceLineNo">3091</span> oaf64data[i++] = (af64data[l++] - af64data[oi++]) * 0.5;<a name="line.3091"></a>
<span class="sourceLineNo">3092</span> }<a name="line.3092"></a>
<span class="sourceLineNo">3093</span> oi = pi;<a name="line.3093"></a>
<span class="sourceLineNo">3094</span> pi = it.index;<a name="line.3094"></a>
<span class="sourceLineNo">3095</span> }<a name="line.3095"></a>
<span class="sourceLineNo">3096</span> for (int k = 0; k &lt; isize; k++) {<a name="line.3096"></a>
<span class="sourceLineNo">3097</span> oaf64data[nlen + k] = af64data[pi + k] - af64data[oi + k];<a name="line.3097"></a>
<span class="sourceLineNo">3098</span> }<a name="line.3098"></a>
<span class="sourceLineNo">3099</span> break;<a name="line.3099"></a>
<span class="sourceLineNo">3100</span> default:<a name="line.3100"></a>
<span class="sourceLineNo">3101</span> throw new UnsupportedOperationException("difference does not support this dataset type");<a name="line.3101"></a>
<span class="sourceLineNo">3102</span> }<a name="line.3102"></a>
<span class="sourceLineNo">3103</span> }<a name="line.3103"></a>
<span class="sourceLineNo">3104</span><a name="line.3104"></a>
<span class="sourceLineNo">3105</span> /**<a name="line.3105"></a>
<span class="sourceLineNo">3106</span> * Calculate gradient (or partial derivatives) by central difference<a name="line.3106"></a>
<span class="sourceLineNo">3107</span> * <a name="line.3107"></a>
<span class="sourceLineNo">3108</span> * @param y<a name="line.3108"></a>
<span class="sourceLineNo">3109</span> * @param x<a name="line.3109"></a>
<span class="sourceLineNo">3110</span> * one or more datasets for dependent variables<a name="line.3110"></a>
<span class="sourceLineNo">3111</span> * @return a list of datasets (one for each dimension in y)<a name="line.3111"></a>
<span class="sourceLineNo">3112</span> */<a name="line.3112"></a>
<span class="sourceLineNo">3113</span> public static List&lt;Dataset&gt; gradient(Dataset y, Dataset... x) {<a name="line.3113"></a>
<span class="sourceLineNo">3114</span> final int rank = y.getRank();<a name="line.3114"></a>
<span class="sourceLineNo">3115</span><a name="line.3115"></a>
<span class="sourceLineNo">3116</span> if (x.length &gt; 0) {<a name="line.3116"></a>
<span class="sourceLineNo">3117</span> if (x.length != rank) {<a name="line.3117"></a>
<span class="sourceLineNo">3118</span> throw new IllegalArgumentException(<a name="line.3118"></a>
<span class="sourceLineNo">3119</span> "Number of dependent datasets must be equal to rank of first argument");<a name="line.3119"></a>
<span class="sourceLineNo">3120</span> }<a name="line.3120"></a>
<span class="sourceLineNo">3121</span> for (int a = 0; a &lt; rank; a++) {<a name="line.3121"></a>
<span class="sourceLineNo">3122</span> int rx = x[a].getRank();<a name="line.3122"></a>
<span class="sourceLineNo">3123</span> if (rx != rank &amp;&amp; rx != 1) {<a name="line.3123"></a>
<span class="sourceLineNo">3124</span> throw new IllegalArgumentException(<a name="line.3124"></a>
<span class="sourceLineNo">3125</span> "Dependent datasets must be 1-D or match rank of first argument");<a name="line.3125"></a>
<span class="sourceLineNo">3126</span> }<a name="line.3126"></a>
<span class="sourceLineNo">3127</span> if (rx == 1) {<a name="line.3127"></a>
<span class="sourceLineNo">3128</span> if (y.getShapeRef()[a] != x[a].getShapeRef()[0]) {<a name="line.3128"></a>
<span class="sourceLineNo">3129</span> throw new IllegalArgumentException("Length of dependent dataset must match axis length");<a name="line.3129"></a>
<span class="sourceLineNo">3130</span> }<a name="line.3130"></a>
<span class="sourceLineNo">3131</span> } else {<a name="line.3131"></a>
<span class="sourceLineNo">3132</span> y.checkCompatibility(x[a]);<a name="line.3132"></a>
<span class="sourceLineNo">3133</span> }<a name="line.3133"></a>
<span class="sourceLineNo">3134</span> }<a name="line.3134"></a>
<span class="sourceLineNo">3135</span> }<a name="line.3135"></a>
<span class="sourceLineNo">3136</span><a name="line.3136"></a>
<span class="sourceLineNo">3137</span> List&lt;Dataset&gt; grad = new ArrayList&lt;Dataset&gt;(rank);<a name="line.3137"></a>
<span class="sourceLineNo">3138</span><a name="line.3138"></a>
<span class="sourceLineNo">3139</span> for (int a = 0; a &lt; rank; a++) {<a name="line.3139"></a>
<span class="sourceLineNo">3140</span> Dataset g = centralDifference(y, a);<a name="line.3140"></a>
<span class="sourceLineNo">3141</span> grad.add(g);<a name="line.3141"></a>
<span class="sourceLineNo">3142</span> }<a name="line.3142"></a>
<span class="sourceLineNo">3143</span><a name="line.3143"></a>
<span class="sourceLineNo">3144</span> if (x.length &gt; 0) {<a name="line.3144"></a>
<span class="sourceLineNo">3145</span> for (int a = 0; a &lt; rank; a++) {<a name="line.3145"></a>
<span class="sourceLineNo">3146</span> Dataset g = grad.get(a);<a name="line.3146"></a>
<span class="sourceLineNo">3147</span> Dataset dx = x[a];<a name="line.3147"></a>
<span class="sourceLineNo">3148</span> int r = dx.getRank();<a name="line.3148"></a>
<span class="sourceLineNo">3149</span> if (r == rank) {<a name="line.3149"></a>
<span class="sourceLineNo">3150</span> g.idivide(centralDifference(dx, a));<a name="line.3150"></a>
<span class="sourceLineNo">3151</span> } else {<a name="line.3151"></a>
<span class="sourceLineNo">3152</span> final int is = dx.getElementsPerItem();<a name="line.3152"></a>
<span class="sourceLineNo">3153</span> final Dataset bdx = DatasetFactory.zeros(is, dx.getClass(), y.getShapeRef());<a name="line.3153"></a>
<span class="sourceLineNo">3154</span> final PositionIterator pi = y.getPositionIterator(a);<a name="line.3154"></a>
<span class="sourceLineNo">3155</span> final int[] pos = pi.getPos();<a name="line.3155"></a>
<span class="sourceLineNo">3156</span> final boolean[] hit = pi.getOmit();<a name="line.3156"></a>
<span class="sourceLineNo">3157</span> dx = centralDifference(dx, 0);<a name="line.3157"></a>
<span class="sourceLineNo">3158</span><a name="line.3158"></a>
<span class="sourceLineNo">3159</span> while (pi.hasNext()) {<a name="line.3159"></a>
<span class="sourceLineNo">3160</span> bdx.setItemsOnAxes(pos, hit, dx.getBuffer());<a name="line.3160"></a>
<span class="sourceLineNo">3161</span> }<a name="line.3161"></a>
<span class="sourceLineNo">3162</span> g.idivide(bdx);<a name="line.3162"></a>
<span class="sourceLineNo">3163</span> }<a name="line.3163"></a>
<span class="sourceLineNo">3164</span> }<a name="line.3164"></a>
<span class="sourceLineNo">3165</span> }<a name="line.3165"></a>
<span class="sourceLineNo">3166</span> return grad;<a name="line.3166"></a>
<span class="sourceLineNo">3167</span> }<a name="line.3167"></a>
<span class="sourceLineNo">3168</span><a name="line.3168"></a>
<span class="sourceLineNo">3169</span> protected static void addFunctionName(final Dataset a, final Dataset b, final Dataset dataset, final String fname) {<a name="line.3169"></a>
<span class="sourceLineNo">3170</span> dataset.setName(Operations.createFunctionName(fname, a.getName(), b.getName()));<a name="line.3170"></a>
<span class="sourceLineNo">3171</span> }<a name="line.3171"></a>
<span class="sourceLineNo">3172</span><a name="line.3172"></a>
<span class="sourceLineNo">3173</span> protected static void addFunctionName(final Dataset dataset, final String fname) {<a name="line.3173"></a>
<span class="sourceLineNo">3174</span> dataset.setName(Operations.createFunctionName(fname, dataset.getName()));<a name="line.3174"></a>
<span class="sourceLineNo">3175</span> }<a name="line.3175"></a>
<span class="sourceLineNo">3176</span><a name="line.3176"></a>
<span class="sourceLineNo">3177</span> protected static void addBinaryOperatorName(final Dataset a, final Dataset b, final Dataset dataset, final String oname) {<a name="line.3177"></a>
<span class="sourceLineNo">3178</span> dataset.setName(Operations.createBinaryOperationName(oname, a.getName(), b.getName()));<a name="line.3178"></a>
<span class="sourceLineNo">3179</span> }<a name="line.3179"></a>
<span class="sourceLineNo">3180</span><a name="line.3180"></a>
<span class="sourceLineNo">3181</span> protected static final long toLong(double d) {<a name="line.3181"></a>
<span class="sourceLineNo">3182</span> if (Double.isInfinite(d) || Double.isNaN(d))<a name="line.3182"></a>
<span class="sourceLineNo">3183</span> return 0l;<a name="line.3183"></a>
<span class="sourceLineNo">3184</span> return (long) d;<a name="line.3184"></a>
<span class="sourceLineNo">3185</span> }<a name="line.3185"></a>
<span class="sourceLineNo">3186</span><a name="line.3186"></a>
<span class="sourceLineNo">3187</span>// Start of generated code<a name="line.3187"></a>
<span class="sourceLineNo">3188</span> /**<a name="line.3188"></a>
<span class="sourceLineNo">3189</span> * add operator<a name="line.3189"></a>
<span class="sourceLineNo">3190</span> * @param a<a name="line.3190"></a>
<span class="sourceLineNo">3191</span> * @param b<a name="line.3191"></a>
<span class="sourceLineNo">3192</span> * @return {@code a + b}, addition of a and b<a name="line.3192"></a>
<span class="sourceLineNo">3193</span> */<a name="line.3193"></a>
<span class="sourceLineNo">3194</span> public static Dataset add(final Object a, final Object b) {<a name="line.3194"></a>
<span class="sourceLineNo">3195</span> return add(a, b, null);<a name="line.3195"></a>
<span class="sourceLineNo">3196</span> }<a name="line.3196"></a>
<span class="sourceLineNo">3197</span><a name="line.3197"></a>
<span class="sourceLineNo">3198</span> /**<a name="line.3198"></a>
<span class="sourceLineNo">3199</span> * add operator<a name="line.3199"></a>
<span class="sourceLineNo">3200</span> * @param a<a name="line.3200"></a>
<span class="sourceLineNo">3201</span> * @param b<a name="line.3201"></a>
<span class="sourceLineNo">3202</span> * @param o output can be null - in which case, a new dataset is created<a name="line.3202"></a>
<span class="sourceLineNo">3203</span> * @return {@code a + b}, addition of a and b<a name="line.3203"></a>
<span class="sourceLineNo">3204</span> */<a name="line.3204"></a>
<span class="sourceLineNo">3205</span> public static Dataset add(final Object a, final Object b, final Dataset o) {<a name="line.3205"></a>
<span class="sourceLineNo">3206</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.3206"></a>
<span class="sourceLineNo">3207</span> Dataset db = b instanceof Dataset ? (Dataset) b : DatasetFactory.createFromObject(b);<a name="line.3207"></a>
<span class="sourceLineNo">3208</span> BroadcastIterator it = BroadcastIterator.createIterator(da, db, o, true);<a name="line.3208"></a>
<span class="sourceLineNo">3209</span> final Dataset result = it.getOutput();<a name="line.3209"></a>
<span class="sourceLineNo">3210</span> if (!result.isComplex()) {<a name="line.3210"></a>
<span class="sourceLineNo">3211</span> boolean change = false;<a name="line.3211"></a>
<span class="sourceLineNo">3212</span> if (da.isComplex()) {<a name="line.3212"></a>
<span class="sourceLineNo">3213</span> da = da.getRealView();<a name="line.3213"></a>
<span class="sourceLineNo">3214</span> change = true;<a name="line.3214"></a>
<span class="sourceLineNo">3215</span> }<a name="line.3215"></a>
<span class="sourceLineNo">3216</span> if (db.isComplex()) {<a name="line.3216"></a>
<span class="sourceLineNo">3217</span> db = db.getRealView();<a name="line.3217"></a>
<span class="sourceLineNo">3218</span> change = true;<a name="line.3218"></a>
<span class="sourceLineNo">3219</span> }<a name="line.3219"></a>
<span class="sourceLineNo">3220</span> if (change) {<a name="line.3220"></a>
<span class="sourceLineNo">3221</span> it = BroadcastIterator.createIterator(da, db, result, true);<a name="line.3221"></a>
<span class="sourceLineNo">3222</span> }<a name="line.3222"></a>
<span class="sourceLineNo">3223</span> }<a name="line.3223"></a>
<span class="sourceLineNo">3224</span> final int is = result.getElementsPerItem();<a name="line.3224"></a>
<span class="sourceLineNo">3225</span> final int as = da.getElementsPerItem();<a name="line.3225"></a>
<span class="sourceLineNo">3226</span> final int bs = db.getElementsPerItem();<a name="line.3226"></a>
<span class="sourceLineNo">3227</span> final int dt = result.getDType();<a name="line.3227"></a>
<span class="sourceLineNo">3228</span><a name="line.3228"></a>
<span class="sourceLineNo">3229</span> switch(dt) {<a name="line.3229"></a>
<span class="sourceLineNo">3230</span> case Dataset.INT8:<a name="line.3230"></a>
<span class="sourceLineNo">3231</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.3231"></a>
<span class="sourceLineNo">3232</span> if (it.isOutputDouble()) {<a name="line.3232"></a>
<span class="sourceLineNo">3233</span> while (it.hasNext()) {<a name="line.3233"></a>
<span class="sourceLineNo">3234</span> final double iax = it.aDouble;<a name="line.3234"></a>
<span class="sourceLineNo">3235</span> final double ibx = it.bDouble;<a name="line.3235"></a>
<span class="sourceLineNo">3236</span> byte ox;<a name="line.3236"></a>
<span class="sourceLineNo">3237</span> ox = (byte) toLong(iax + ibx);<a name="line.3237"></a>
<span class="sourceLineNo">3238</span> oi8data[it.oIndex] = ox;<a name="line.3238"></a>
<span class="sourceLineNo">3239</span> }<a name="line.3239"></a>
<span class="sourceLineNo">3240</span> } else {<a name="line.3240"></a>
<span class="sourceLineNo">3241</span> while (it.hasNext()) {<a name="line.3241"></a>
<span class="sourceLineNo">3242</span> final long iax = it.aLong;<a name="line.3242"></a>
<span class="sourceLineNo">3243</span> final long ibx = it.bLong;<a name="line.3243"></a>
<span class="sourceLineNo">3244</span> byte ox;<a name="line.3244"></a>
<span class="sourceLineNo">3245</span> ox = (byte) (iax + ibx);<a name="line.3245"></a>
<span class="sourceLineNo">3246</span> oi8data[it.oIndex] = ox;<a name="line.3246"></a>
<span class="sourceLineNo">3247</span> }<a name="line.3247"></a>
<span class="sourceLineNo">3248</span> }<a name="line.3248"></a>
<span class="sourceLineNo">3249</span> break;<a name="line.3249"></a>
<span class="sourceLineNo">3250</span> case Dataset.INT16:<a name="line.3250"></a>
<span class="sourceLineNo">3251</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.3251"></a>
<span class="sourceLineNo">3252</span> if (it.isOutputDouble()) {<a name="line.3252"></a>
<span class="sourceLineNo">3253</span> while (it.hasNext()) {<a name="line.3253"></a>
<span class="sourceLineNo">3254</span> final double iax = it.aDouble;<a name="line.3254"></a>
<span class="sourceLineNo">3255</span> final double ibx = it.bDouble;<a name="line.3255"></a>
<span class="sourceLineNo">3256</span> short ox;<a name="line.3256"></a>
<span class="sourceLineNo">3257</span> ox = (short) toLong(iax + ibx);<a name="line.3257"></a>
<span class="sourceLineNo">3258</span> oi16data[it.oIndex] = ox;<a name="line.3258"></a>
<span class="sourceLineNo">3259</span> }<a name="line.3259"></a>
<span class="sourceLineNo">3260</span> } else {<a name="line.3260"></a>
<span class="sourceLineNo">3261</span> while (it.hasNext()) {<a name="line.3261"></a>
<span class="sourceLineNo">3262</span> final long iax = it.aLong;<a name="line.3262"></a>
<span class="sourceLineNo">3263</span> final long ibx = it.bLong;<a name="line.3263"></a>
<span class="sourceLineNo">3264</span> short ox;<a name="line.3264"></a>
<span class="sourceLineNo">3265</span> ox = (short) (iax + ibx);<a name="line.3265"></a>
<span class="sourceLineNo">3266</span> oi16data[it.oIndex] = ox;<a name="line.3266"></a>
<span class="sourceLineNo">3267</span> }<a name="line.3267"></a>
<span class="sourceLineNo">3268</span> }<a name="line.3268"></a>
<span class="sourceLineNo">3269</span> break;<a name="line.3269"></a>
<span class="sourceLineNo">3270</span> case Dataset.INT64:<a name="line.3270"></a>
<span class="sourceLineNo">3271</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.3271"></a>
<span class="sourceLineNo">3272</span> if (it.isOutputDouble()) {<a name="line.3272"></a>
<span class="sourceLineNo">3273</span> while (it.hasNext()) {<a name="line.3273"></a>
<span class="sourceLineNo">3274</span> final double iax = it.aDouble;<a name="line.3274"></a>
<span class="sourceLineNo">3275</span> final double ibx = it.bDouble;<a name="line.3275"></a>
<span class="sourceLineNo">3276</span> long ox;<a name="line.3276"></a>
<span class="sourceLineNo">3277</span> ox = toLong(iax + ibx);<a name="line.3277"></a>
<span class="sourceLineNo">3278</span> oi64data[it.oIndex] = ox;<a name="line.3278"></a>
<span class="sourceLineNo">3279</span> }<a name="line.3279"></a>
<span class="sourceLineNo">3280</span> } else {<a name="line.3280"></a>
<span class="sourceLineNo">3281</span> while (it.hasNext()) {<a name="line.3281"></a>
<span class="sourceLineNo">3282</span> final long iax = it.aLong;<a name="line.3282"></a>
<span class="sourceLineNo">3283</span> final long ibx = it.bLong;<a name="line.3283"></a>
<span class="sourceLineNo">3284</span> long ox;<a name="line.3284"></a>
<span class="sourceLineNo">3285</span> ox = (iax + ibx);<a name="line.3285"></a>
<span class="sourceLineNo">3286</span> oi64data[it.oIndex] = ox;<a name="line.3286"></a>
<span class="sourceLineNo">3287</span> }<a name="line.3287"></a>
<span class="sourceLineNo">3288</span> }<a name="line.3288"></a>
<span class="sourceLineNo">3289</span> break;<a name="line.3289"></a>
<span class="sourceLineNo">3290</span> case Dataset.INT32:<a name="line.3290"></a>
<span class="sourceLineNo">3291</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.3291"></a>
<span class="sourceLineNo">3292</span> if (it.isOutputDouble()) {<a name="line.3292"></a>
<span class="sourceLineNo">3293</span> while (it.hasNext()) {<a name="line.3293"></a>
<span class="sourceLineNo">3294</span> final double iax = it.aDouble;<a name="line.3294"></a>
<span class="sourceLineNo">3295</span> final double ibx = it.bDouble;<a name="line.3295"></a>
<span class="sourceLineNo">3296</span> int ox;<a name="line.3296"></a>
<span class="sourceLineNo">3297</span> ox = (int) toLong(iax + ibx);<a name="line.3297"></a>
<span class="sourceLineNo">3298</span> oi32data[it.oIndex] = ox;<a name="line.3298"></a>
<span class="sourceLineNo">3299</span> }<a name="line.3299"></a>
<span class="sourceLineNo">3300</span> } else {<a name="line.3300"></a>
<span class="sourceLineNo">3301</span> while (it.hasNext()) {<a name="line.3301"></a>
<span class="sourceLineNo">3302</span> final long iax = it.aLong;<a name="line.3302"></a>
<span class="sourceLineNo">3303</span> final long ibx = it.bLong;<a name="line.3303"></a>
<span class="sourceLineNo">3304</span> int ox;<a name="line.3304"></a>
<span class="sourceLineNo">3305</span> ox = (int) (iax + ibx);<a name="line.3305"></a>
<span class="sourceLineNo">3306</span> oi32data[it.oIndex] = ox;<a name="line.3306"></a>
<span class="sourceLineNo">3307</span> }<a name="line.3307"></a>
<span class="sourceLineNo">3308</span> }<a name="line.3308"></a>
<span class="sourceLineNo">3309</span> break;<a name="line.3309"></a>
<span class="sourceLineNo">3310</span> case Dataset.ARRAYINT8:<a name="line.3310"></a>
<span class="sourceLineNo">3311</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.3311"></a>
<span class="sourceLineNo">3312</span> if (is == 1) {<a name="line.3312"></a>
<span class="sourceLineNo">3313</span> if (it.isOutputDouble()) {<a name="line.3313"></a>
<span class="sourceLineNo">3314</span> while (it.hasNext()) {<a name="line.3314"></a>
<span class="sourceLineNo">3315</span> final double iax = it.aDouble;<a name="line.3315"></a>
<span class="sourceLineNo">3316</span> final double ibx = it.bDouble;<a name="line.3316"></a>
<span class="sourceLineNo">3317</span> byte ox;<a name="line.3317"></a>
<span class="sourceLineNo">3318</span> ox = (byte) toLong(iax + ibx);<a name="line.3318"></a>
<span class="sourceLineNo">3319</span> oai8data[it.oIndex] = ox;<a name="line.3319"></a>
<span class="sourceLineNo">3320</span> }<a name="line.3320"></a>
<span class="sourceLineNo">3321</span> } else {<a name="line.3321"></a>
<span class="sourceLineNo">3322</span> while (it.hasNext()) {<a name="line.3322"></a>
<span class="sourceLineNo">3323</span> final long iax = it.aLong;<a name="line.3323"></a>
<span class="sourceLineNo">3324</span> final long ibx = it.bLong;<a name="line.3324"></a>
<span class="sourceLineNo">3325</span> byte ox;<a name="line.3325"></a>
<span class="sourceLineNo">3326</span> ox = (byte) (iax + ibx);<a name="line.3326"></a>
<span class="sourceLineNo">3327</span> oai8data[it.oIndex] = ox;<a name="line.3327"></a>
<span class="sourceLineNo">3328</span> }<a name="line.3328"></a>
<span class="sourceLineNo">3329</span> }<a name="line.3329"></a>
<span class="sourceLineNo">3330</span> } else if (as &lt; bs) {<a name="line.3330"></a>
<span class="sourceLineNo">3331</span> if (it.isOutputDouble()) {<a name="line.3331"></a>
<span class="sourceLineNo">3332</span> while (it.hasNext()) {<a name="line.3332"></a>
<span class="sourceLineNo">3333</span> final double iax = it.aDouble;<a name="line.3333"></a>
<span class="sourceLineNo">3334</span> double ibx = it.bDouble;<a name="line.3334"></a>
<span class="sourceLineNo">3335</span> byte ox;<a name="line.3335"></a>
<span class="sourceLineNo">3336</span> ox = (byte) toLong(iax + ibx);<a name="line.3336"></a>
<span class="sourceLineNo">3337</span> oai8data[it.oIndex] = ox;<a name="line.3337"></a>
<span class="sourceLineNo">3338</span> for (int j = 1; j &lt; is; j++) {<a name="line.3338"></a>
<span class="sourceLineNo">3339</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.3339"></a>
<span class="sourceLineNo">3340</span> ox = (byte) toLong(iax + ibx);<a name="line.3340"></a>
<span class="sourceLineNo">3341</span> oai8data[it.oIndex + j] = ox;<a name="line.3341"></a>
<span class="sourceLineNo">3342</span> }<a name="line.3342"></a>
<span class="sourceLineNo">3343</span> }<a name="line.3343"></a>
<span class="sourceLineNo">3344</span> } else {<a name="line.3344"></a>
<span class="sourceLineNo">3345</span> while (it.hasNext()) {<a name="line.3345"></a>
<span class="sourceLineNo">3346</span> final long iax = it.aLong;<a name="line.3346"></a>
<span class="sourceLineNo">3347</span> long ibx = it.bLong;<a name="line.3347"></a>
<span class="sourceLineNo">3348</span> byte ox;<a name="line.3348"></a>
<span class="sourceLineNo">3349</span> ox = (byte) (iax + ibx);<a name="line.3349"></a>
<span class="sourceLineNo">3350</span> oai8data[it.oIndex] = ox;<a name="line.3350"></a>
<span class="sourceLineNo">3351</span> for (int j = 1; j &lt; is; j++) {<a name="line.3351"></a>
<span class="sourceLineNo">3352</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.3352"></a>
<span class="sourceLineNo">3353</span> ox = (byte) (iax + ibx);<a name="line.3353"></a>
<span class="sourceLineNo">3354</span> oai8data[it.oIndex + j] = ox;<a name="line.3354"></a>
<span class="sourceLineNo">3355</span> }<a name="line.3355"></a>
<span class="sourceLineNo">3356</span> }<a name="line.3356"></a>
<span class="sourceLineNo">3357</span> }<a name="line.3357"></a>
<span class="sourceLineNo">3358</span> } else if (as &gt; bs) {<a name="line.3358"></a>
<span class="sourceLineNo">3359</span> if (it.isOutputDouble()) {<a name="line.3359"></a>
<span class="sourceLineNo">3360</span> while (it.hasNext()) {<a name="line.3360"></a>
<span class="sourceLineNo">3361</span> double iax = it.aDouble;<a name="line.3361"></a>
<span class="sourceLineNo">3362</span> final double ibx = it.bDouble;<a name="line.3362"></a>
<span class="sourceLineNo">3363</span> byte ox;<a name="line.3363"></a>
<span class="sourceLineNo">3364</span> ox = (byte) toLong(iax + ibx);<a name="line.3364"></a>
<span class="sourceLineNo">3365</span> oai8data[it.oIndex] = ox;<a name="line.3365"></a>
<span class="sourceLineNo">3366</span> for (int j = 1; j &lt; is; j++) {<a name="line.3366"></a>
<span class="sourceLineNo">3367</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.3367"></a>
<span class="sourceLineNo">3368</span> ox = (byte) toLong(iax + ibx);<a name="line.3368"></a>
<span class="sourceLineNo">3369</span> oai8data[it.oIndex + j] = ox;<a name="line.3369"></a>
<span class="sourceLineNo">3370</span> }<a name="line.3370"></a>
<span class="sourceLineNo">3371</span> }<a name="line.3371"></a>
<span class="sourceLineNo">3372</span> } else {<a name="line.3372"></a>
<span class="sourceLineNo">3373</span> while (it.hasNext()) {<a name="line.3373"></a>
<span class="sourceLineNo">3374</span> long iax = it.aLong;<a name="line.3374"></a>
<span class="sourceLineNo">3375</span> final long ibx = it.bLong;<a name="line.3375"></a>
<span class="sourceLineNo">3376</span> byte ox;<a name="line.3376"></a>
<span class="sourceLineNo">3377</span> ox = (byte) (iax + ibx);<a name="line.3377"></a>
<span class="sourceLineNo">3378</span> oai8data[it.oIndex] = ox;<a name="line.3378"></a>
<span class="sourceLineNo">3379</span> for (int j = 1; j &lt; is; j++) {<a name="line.3379"></a>
<span class="sourceLineNo">3380</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.3380"></a>
<span class="sourceLineNo">3381</span> ox = (byte) (iax + ibx);<a name="line.3381"></a>
<span class="sourceLineNo">3382</span> oai8data[it.oIndex + j] = ox;<a name="line.3382"></a>
<span class="sourceLineNo">3383</span> }<a name="line.3383"></a>
<span class="sourceLineNo">3384</span> }<a name="line.3384"></a>
<span class="sourceLineNo">3385</span> }<a name="line.3385"></a>
<span class="sourceLineNo">3386</span> } else if (as == 1) {<a name="line.3386"></a>
<span class="sourceLineNo">3387</span> if (it.isOutputDouble()) {<a name="line.3387"></a>
<span class="sourceLineNo">3388</span> while (it.hasNext()) {<a name="line.3388"></a>
<span class="sourceLineNo">3389</span> final double iax = it.aDouble;<a name="line.3389"></a>
<span class="sourceLineNo">3390</span> final double ibx = it.bDouble;<a name="line.3390"></a>
<span class="sourceLineNo">3391</span> byte ox;<a name="line.3391"></a>
<span class="sourceLineNo">3392</span> ox = (byte) toLong(iax + ibx);<a name="line.3392"></a>
<span class="sourceLineNo">3393</span> for (int j = 0; j &lt; is; j++) {<a name="line.3393"></a>
<span class="sourceLineNo">3394</span> oai8data[it.oIndex + j] = ox;<a name="line.3394"></a>
<span class="sourceLineNo">3395</span> }<a name="line.3395"></a>
<span class="sourceLineNo">3396</span> }<a name="line.3396"></a>
<span class="sourceLineNo">3397</span> } else {<a name="line.3397"></a>
<span class="sourceLineNo">3398</span> while (it.hasNext()) {<a name="line.3398"></a>
<span class="sourceLineNo">3399</span> final long iax = it.aLong;<a name="line.3399"></a>
<span class="sourceLineNo">3400</span> final long ibx = it.bLong;<a name="line.3400"></a>
<span class="sourceLineNo">3401</span> byte ox;<a name="line.3401"></a>
<span class="sourceLineNo">3402</span> ox = (byte) (iax + ibx);<a name="line.3402"></a>
<span class="sourceLineNo">3403</span> for (int j = 0; j &lt; is; j++) {<a name="line.3403"></a>
<span class="sourceLineNo">3404</span> oai8data[it.oIndex + j] = ox;<a name="line.3404"></a>
<span class="sourceLineNo">3405</span> }<a name="line.3405"></a>
<span class="sourceLineNo">3406</span> }<a name="line.3406"></a>
<span class="sourceLineNo">3407</span> }<a name="line.3407"></a>
<span class="sourceLineNo">3408</span> } else {<a name="line.3408"></a>
<span class="sourceLineNo">3409</span> if (it.isOutputDouble()) {<a name="line.3409"></a>
<span class="sourceLineNo">3410</span> while (it.hasNext()) {<a name="line.3410"></a>
<span class="sourceLineNo">3411</span> double iax = it.aDouble;<a name="line.3411"></a>
<span class="sourceLineNo">3412</span> double ibx = it.bDouble;<a name="line.3412"></a>
<span class="sourceLineNo">3413</span> byte ox;<a name="line.3413"></a>
<span class="sourceLineNo">3414</span> ox = (byte) toLong(iax + ibx);<a name="line.3414"></a>
<span class="sourceLineNo">3415</span> oai8data[it.oIndex] = ox;<a name="line.3415"></a>
<span class="sourceLineNo">3416</span> for (int j = 1; j &lt; is; j++) {<a name="line.3416"></a>
<span class="sourceLineNo">3417</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.3417"></a>
<span class="sourceLineNo">3418</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.3418"></a>
<span class="sourceLineNo">3419</span> ox = (byte) toLong(iax + ibx);<a name="line.3419"></a>
<span class="sourceLineNo">3420</span> oai8data[it.oIndex + j] = ox;<a name="line.3420"></a>
<span class="sourceLineNo">3421</span> }<a name="line.3421"></a>
<span class="sourceLineNo">3422</span> }<a name="line.3422"></a>
<span class="sourceLineNo">3423</span> } else {<a name="line.3423"></a>
<span class="sourceLineNo">3424</span> while (it.hasNext()) {<a name="line.3424"></a>
<span class="sourceLineNo">3425</span> long iax = it.aLong;<a name="line.3425"></a>
<span class="sourceLineNo">3426</span> long ibx = it.bLong;<a name="line.3426"></a>
<span class="sourceLineNo">3427</span> byte ox;<a name="line.3427"></a>
<span class="sourceLineNo">3428</span> ox = (byte) (iax + ibx);<a name="line.3428"></a>
<span class="sourceLineNo">3429</span> oai8data[it.oIndex] = ox;<a name="line.3429"></a>
<span class="sourceLineNo">3430</span> for (int j = 1; j &lt; is; j++) {<a name="line.3430"></a>
<span class="sourceLineNo">3431</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.3431"></a>
<span class="sourceLineNo">3432</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.3432"></a>
<span class="sourceLineNo">3433</span> ox = (byte) (iax + ibx);<a name="line.3433"></a>
<span class="sourceLineNo">3434</span> oai8data[it.oIndex + j] = ox;<a name="line.3434"></a>
<span class="sourceLineNo">3435</span> }<a name="line.3435"></a>
<span class="sourceLineNo">3436</span> }<a name="line.3436"></a>
<span class="sourceLineNo">3437</span> }<a name="line.3437"></a>
<span class="sourceLineNo">3438</span> }<a name="line.3438"></a>
<span class="sourceLineNo">3439</span> break;<a name="line.3439"></a>
<span class="sourceLineNo">3440</span> case Dataset.ARRAYINT16:<a name="line.3440"></a>
<span class="sourceLineNo">3441</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.3441"></a>
<span class="sourceLineNo">3442</span> if (is == 1) {<a name="line.3442"></a>
<span class="sourceLineNo">3443</span> if (it.isOutputDouble()) {<a name="line.3443"></a>
<span class="sourceLineNo">3444</span> while (it.hasNext()) {<a name="line.3444"></a>
<span class="sourceLineNo">3445</span> final double iax = it.aDouble;<a name="line.3445"></a>
<span class="sourceLineNo">3446</span> final double ibx = it.bDouble;<a name="line.3446"></a>
<span class="sourceLineNo">3447</span> short ox;<a name="line.3447"></a>
<span class="sourceLineNo">3448</span> ox = (short) toLong(iax + ibx);<a name="line.3448"></a>
<span class="sourceLineNo">3449</span> oai16data[it.oIndex] = ox;<a name="line.3449"></a>
<span class="sourceLineNo">3450</span> }<a name="line.3450"></a>
<span class="sourceLineNo">3451</span> } else {<a name="line.3451"></a>
<span class="sourceLineNo">3452</span> while (it.hasNext()) {<a name="line.3452"></a>
<span class="sourceLineNo">3453</span> final long iax = it.aLong;<a name="line.3453"></a>
<span class="sourceLineNo">3454</span> final long ibx = it.bLong;<a name="line.3454"></a>
<span class="sourceLineNo">3455</span> short ox;<a name="line.3455"></a>
<span class="sourceLineNo">3456</span> ox = (short) (iax + ibx);<a name="line.3456"></a>
<span class="sourceLineNo">3457</span> oai16data[it.oIndex] = ox;<a name="line.3457"></a>
<span class="sourceLineNo">3458</span> }<a name="line.3458"></a>
<span class="sourceLineNo">3459</span> }<a name="line.3459"></a>
<span class="sourceLineNo">3460</span> } else if (as &lt; bs) {<a name="line.3460"></a>
<span class="sourceLineNo">3461</span> if (it.isOutputDouble()) {<a name="line.3461"></a>
<span class="sourceLineNo">3462</span> while (it.hasNext()) {<a name="line.3462"></a>
<span class="sourceLineNo">3463</span> final double iax = it.aDouble;<a name="line.3463"></a>
<span class="sourceLineNo">3464</span> double ibx = it.bDouble;<a name="line.3464"></a>
<span class="sourceLineNo">3465</span> short ox;<a name="line.3465"></a>
<span class="sourceLineNo">3466</span> ox = (short) toLong(iax + ibx);<a name="line.3466"></a>
<span class="sourceLineNo">3467</span> oai16data[it.oIndex] = ox;<a name="line.3467"></a>
<span class="sourceLineNo">3468</span> for (int j = 1; j &lt; is; j++) {<a name="line.3468"></a>
<span class="sourceLineNo">3469</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.3469"></a>
<span class="sourceLineNo">3470</span> ox = (short) toLong(iax + ibx);<a name="line.3470"></a>
<span class="sourceLineNo">3471</span> oai16data[it.oIndex + j] = ox;<a name="line.3471"></a>
<span class="sourceLineNo">3472</span> }<a name="line.3472"></a>
<span class="sourceLineNo">3473</span> }<a name="line.3473"></a>
<span class="sourceLineNo">3474</span> } else {<a name="line.3474"></a>
<span class="sourceLineNo">3475</span> while (it.hasNext()) {<a name="line.3475"></a>
<span class="sourceLineNo">3476</span> final long iax = it.aLong;<a name="line.3476"></a>
<span class="sourceLineNo">3477</span> long ibx = it.bLong;<a name="line.3477"></a>
<span class="sourceLineNo">3478</span> short ox;<a name="line.3478"></a>
<span class="sourceLineNo">3479</span> ox = (short) (iax + ibx);<a name="line.3479"></a>
<span class="sourceLineNo">3480</span> oai16data[it.oIndex] = ox;<a name="line.3480"></a>
<span class="sourceLineNo">3481</span> for (int j = 1; j &lt; is; j++) {<a name="line.3481"></a>
<span class="sourceLineNo">3482</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.3482"></a>
<span class="sourceLineNo">3483</span> ox = (short) (iax + ibx);<a name="line.3483"></a>
<span class="sourceLineNo">3484</span> oai16data[it.oIndex + j] = ox;<a name="line.3484"></a>
<span class="sourceLineNo">3485</span> }<a name="line.3485"></a>
<span class="sourceLineNo">3486</span> }<a name="line.3486"></a>
<span class="sourceLineNo">3487</span> }<a name="line.3487"></a>
<span class="sourceLineNo">3488</span> } else if (as &gt; bs) {<a name="line.3488"></a>
<span class="sourceLineNo">3489</span> if (it.isOutputDouble()) {<a name="line.3489"></a>
<span class="sourceLineNo">3490</span> while (it.hasNext()) {<a name="line.3490"></a>
<span class="sourceLineNo">3491</span> double iax = it.aDouble;<a name="line.3491"></a>
<span class="sourceLineNo">3492</span> final double ibx = it.bDouble;<a name="line.3492"></a>
<span class="sourceLineNo">3493</span> short ox;<a name="line.3493"></a>
<span class="sourceLineNo">3494</span> ox = (short) toLong(iax + ibx);<a name="line.3494"></a>
<span class="sourceLineNo">3495</span> oai16data[it.oIndex] = ox;<a name="line.3495"></a>
<span class="sourceLineNo">3496</span> for (int j = 1; j &lt; is; j++) {<a name="line.3496"></a>
<span class="sourceLineNo">3497</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.3497"></a>
<span class="sourceLineNo">3498</span> ox = (short) toLong(iax + ibx);<a name="line.3498"></a>
<span class="sourceLineNo">3499</span> oai16data[it.oIndex + j] = ox;<a name="line.3499"></a>
<span class="sourceLineNo">3500</span> }<a name="line.3500"></a>
<span class="sourceLineNo">3501</span> }<a name="line.3501"></a>
<span class="sourceLineNo">3502</span> } else {<a name="line.3502"></a>
<span class="sourceLineNo">3503</span> while (it.hasNext()) {<a name="line.3503"></a>
<span class="sourceLineNo">3504</span> long iax = it.aLong;<a name="line.3504"></a>
<span class="sourceLineNo">3505</span> final long ibx = it.bLong;<a name="line.3505"></a>
<span class="sourceLineNo">3506</span> short ox;<a name="line.3506"></a>
<span class="sourceLineNo">3507</span> ox = (short) (iax + ibx);<a name="line.3507"></a>
<span class="sourceLineNo">3508</span> oai16data[it.oIndex] = ox;<a name="line.3508"></a>
<span class="sourceLineNo">3509</span> for (int j = 1; j &lt; is; j++) {<a name="line.3509"></a>
<span class="sourceLineNo">3510</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.3510"></a>
<span class="sourceLineNo">3511</span> ox = (short) (iax + ibx);<a name="line.3511"></a>
<span class="sourceLineNo">3512</span> oai16data[it.oIndex + j] = ox;<a name="line.3512"></a>
<span class="sourceLineNo">3513</span> }<a name="line.3513"></a>
<span class="sourceLineNo">3514</span> }<a name="line.3514"></a>
<span class="sourceLineNo">3515</span> }<a name="line.3515"></a>
<span class="sourceLineNo">3516</span> } else if (as == 1) {<a name="line.3516"></a>
<span class="sourceLineNo">3517</span> if (it.isOutputDouble()) {<a name="line.3517"></a>
<span class="sourceLineNo">3518</span> while (it.hasNext()) {<a name="line.3518"></a>
<span class="sourceLineNo">3519</span> final double iax = it.aDouble;<a name="line.3519"></a>
<span class="sourceLineNo">3520</span> final double ibx = it.bDouble;<a name="line.3520"></a>
<span class="sourceLineNo">3521</span> short ox;<a name="line.3521"></a>
<span class="sourceLineNo">3522</span> ox = (short) toLong(iax + ibx);<a name="line.3522"></a>
<span class="sourceLineNo">3523</span> for (int j = 0; j &lt; is; j++) {<a name="line.3523"></a>
<span class="sourceLineNo">3524</span> oai16data[it.oIndex + j] = ox;<a name="line.3524"></a>
<span class="sourceLineNo">3525</span> }<a name="line.3525"></a>
<span class="sourceLineNo">3526</span> }<a name="line.3526"></a>
<span class="sourceLineNo">3527</span> } else {<a name="line.3527"></a>
<span class="sourceLineNo">3528</span> while (it.hasNext()) {<a name="line.3528"></a>
<span class="sourceLineNo">3529</span> final long iax = it.aLong;<a name="line.3529"></a>
<span class="sourceLineNo">3530</span> final long ibx = it.bLong;<a name="line.3530"></a>
<span class="sourceLineNo">3531</span> short ox;<a name="line.3531"></a>
<span class="sourceLineNo">3532</span> ox = (short) (iax + ibx);<a name="line.3532"></a>
<span class="sourceLineNo">3533</span> for (int j = 0; j &lt; is; j++) {<a name="line.3533"></a>
<span class="sourceLineNo">3534</span> oai16data[it.oIndex + j] = ox;<a name="line.3534"></a>
<span class="sourceLineNo">3535</span> }<a name="line.3535"></a>
<span class="sourceLineNo">3536</span> }<a name="line.3536"></a>
<span class="sourceLineNo">3537</span> }<a name="line.3537"></a>
<span class="sourceLineNo">3538</span> } else {<a name="line.3538"></a>
<span class="sourceLineNo">3539</span> if (it.isOutputDouble()) {<a name="line.3539"></a>
<span class="sourceLineNo">3540</span> while (it.hasNext()) {<a name="line.3540"></a>
<span class="sourceLineNo">3541</span> double iax = it.aDouble;<a name="line.3541"></a>
<span class="sourceLineNo">3542</span> double ibx = it.bDouble;<a name="line.3542"></a>
<span class="sourceLineNo">3543</span> short ox;<a name="line.3543"></a>
<span class="sourceLineNo">3544</span> ox = (short) toLong(iax + ibx);<a name="line.3544"></a>
<span class="sourceLineNo">3545</span> oai16data[it.oIndex] = ox;<a name="line.3545"></a>
<span class="sourceLineNo">3546</span> for (int j = 1; j &lt; is; j++) {<a name="line.3546"></a>
<span class="sourceLineNo">3547</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.3547"></a>
<span class="sourceLineNo">3548</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.3548"></a>
<span class="sourceLineNo">3549</span> ox = (short) toLong(iax + ibx);<a name="line.3549"></a>
<span class="sourceLineNo">3550</span> oai16data[it.oIndex + j] = ox;<a name="line.3550"></a>
<span class="sourceLineNo">3551</span> }<a name="line.3551"></a>
<span class="sourceLineNo">3552</span> }<a name="line.3552"></a>
<span class="sourceLineNo">3553</span> } else {<a name="line.3553"></a>
<span class="sourceLineNo">3554</span> while (it.hasNext()) {<a name="line.3554"></a>
<span class="sourceLineNo">3555</span> long iax = it.aLong;<a name="line.3555"></a>
<span class="sourceLineNo">3556</span> long ibx = it.bLong;<a name="line.3556"></a>
<span class="sourceLineNo">3557</span> short ox;<a name="line.3557"></a>
<span class="sourceLineNo">3558</span> ox = (short) (iax + ibx);<a name="line.3558"></a>
<span class="sourceLineNo">3559</span> oai16data[it.oIndex] = ox;<a name="line.3559"></a>
<span class="sourceLineNo">3560</span> for (int j = 1; j &lt; is; j++) {<a name="line.3560"></a>
<span class="sourceLineNo">3561</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.3561"></a>
<span class="sourceLineNo">3562</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.3562"></a>
<span class="sourceLineNo">3563</span> ox = (short) (iax + ibx);<a name="line.3563"></a>
<span class="sourceLineNo">3564</span> oai16data[it.oIndex + j] = ox;<a name="line.3564"></a>
<span class="sourceLineNo">3565</span> }<a name="line.3565"></a>
<span class="sourceLineNo">3566</span> }<a name="line.3566"></a>
<span class="sourceLineNo">3567</span> }<a name="line.3567"></a>
<span class="sourceLineNo">3568</span> }<a name="line.3568"></a>
<span class="sourceLineNo">3569</span> break;<a name="line.3569"></a>
<span class="sourceLineNo">3570</span> case Dataset.ARRAYINT64:<a name="line.3570"></a>
<span class="sourceLineNo">3571</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.3571"></a>
<span class="sourceLineNo">3572</span> if (is == 1) {<a name="line.3572"></a>
<span class="sourceLineNo">3573</span> if (it.isOutputDouble()) {<a name="line.3573"></a>
<span class="sourceLineNo">3574</span> while (it.hasNext()) {<a name="line.3574"></a>
<span class="sourceLineNo">3575</span> final double iax = it.aDouble;<a name="line.3575"></a>
<span class="sourceLineNo">3576</span> final double ibx = it.bDouble;<a name="line.3576"></a>
<span class="sourceLineNo">3577</span> long ox;<a name="line.3577"></a>
<span class="sourceLineNo">3578</span> ox = toLong(iax + ibx);<a name="line.3578"></a>
<span class="sourceLineNo">3579</span> oai64data[it.oIndex] = ox;<a name="line.3579"></a>
<span class="sourceLineNo">3580</span> }<a name="line.3580"></a>
<span class="sourceLineNo">3581</span> } else {<a name="line.3581"></a>
<span class="sourceLineNo">3582</span> while (it.hasNext()) {<a name="line.3582"></a>
<span class="sourceLineNo">3583</span> final long iax = it.aLong;<a name="line.3583"></a>
<span class="sourceLineNo">3584</span> final long ibx = it.bLong;<a name="line.3584"></a>
<span class="sourceLineNo">3585</span> long ox;<a name="line.3585"></a>
<span class="sourceLineNo">3586</span> ox = (iax + ibx);<a name="line.3586"></a>
<span class="sourceLineNo">3587</span> oai64data[it.oIndex] = ox;<a name="line.3587"></a>
<span class="sourceLineNo">3588</span> }<a name="line.3588"></a>
<span class="sourceLineNo">3589</span> }<a name="line.3589"></a>
<span class="sourceLineNo">3590</span> } else if (as &lt; bs) {<a name="line.3590"></a>
<span class="sourceLineNo">3591</span> if (it.isOutputDouble()) {<a name="line.3591"></a>
<span class="sourceLineNo">3592</span> while (it.hasNext()) {<a name="line.3592"></a>
<span class="sourceLineNo">3593</span> final double iax = it.aDouble;<a name="line.3593"></a>
<span class="sourceLineNo">3594</span> double ibx = it.bDouble;<a name="line.3594"></a>
<span class="sourceLineNo">3595</span> long ox;<a name="line.3595"></a>
<span class="sourceLineNo">3596</span> ox = toLong(iax + ibx);<a name="line.3596"></a>
<span class="sourceLineNo">3597</span> oai64data[it.oIndex] = ox;<a name="line.3597"></a>
<span class="sourceLineNo">3598</span> for (int j = 1; j &lt; is; j++) {<a name="line.3598"></a>
<span class="sourceLineNo">3599</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.3599"></a>
<span class="sourceLineNo">3600</span> ox = toLong(iax + ibx);<a name="line.3600"></a>
<span class="sourceLineNo">3601</span> oai64data[it.oIndex + j] = ox;<a name="line.3601"></a>
<span class="sourceLineNo">3602</span> }<a name="line.3602"></a>
<span class="sourceLineNo">3603</span> }<a name="line.3603"></a>
<span class="sourceLineNo">3604</span> } else {<a name="line.3604"></a>
<span class="sourceLineNo">3605</span> while (it.hasNext()) {<a name="line.3605"></a>
<span class="sourceLineNo">3606</span> final long iax = it.aLong;<a name="line.3606"></a>
<span class="sourceLineNo">3607</span> long ibx = it.bLong;<a name="line.3607"></a>
<span class="sourceLineNo">3608</span> long ox;<a name="line.3608"></a>
<span class="sourceLineNo">3609</span> ox = (iax + ibx);<a name="line.3609"></a>
<span class="sourceLineNo">3610</span> oai64data[it.oIndex] = ox;<a name="line.3610"></a>
<span class="sourceLineNo">3611</span> for (int j = 1; j &lt; is; j++) {<a name="line.3611"></a>
<span class="sourceLineNo">3612</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.3612"></a>
<span class="sourceLineNo">3613</span> ox = (iax + ibx);<a name="line.3613"></a>
<span class="sourceLineNo">3614</span> oai64data[it.oIndex + j] = ox;<a name="line.3614"></a>
<span class="sourceLineNo">3615</span> }<a name="line.3615"></a>
<span class="sourceLineNo">3616</span> }<a name="line.3616"></a>
<span class="sourceLineNo">3617</span> }<a name="line.3617"></a>
<span class="sourceLineNo">3618</span> } else if (as &gt; bs) {<a name="line.3618"></a>
<span class="sourceLineNo">3619</span> if (it.isOutputDouble()) {<a name="line.3619"></a>
<span class="sourceLineNo">3620</span> while (it.hasNext()) {<a name="line.3620"></a>
<span class="sourceLineNo">3621</span> double iax = it.aDouble;<a name="line.3621"></a>
<span class="sourceLineNo">3622</span> final double ibx = it.bDouble;<a name="line.3622"></a>
<span class="sourceLineNo">3623</span> long ox;<a name="line.3623"></a>
<span class="sourceLineNo">3624</span> ox = toLong(iax + ibx);<a name="line.3624"></a>
<span class="sourceLineNo">3625</span> oai64data[it.oIndex] = ox;<a name="line.3625"></a>
<span class="sourceLineNo">3626</span> for (int j = 1; j &lt; is; j++) {<a name="line.3626"></a>
<span class="sourceLineNo">3627</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.3627"></a>
<span class="sourceLineNo">3628</span> ox = toLong(iax + ibx);<a name="line.3628"></a>
<span class="sourceLineNo">3629</span> oai64data[it.oIndex + j] = ox;<a name="line.3629"></a>
<span class="sourceLineNo">3630</span> }<a name="line.3630"></a>
<span class="sourceLineNo">3631</span> }<a name="line.3631"></a>
<span class="sourceLineNo">3632</span> } else {<a name="line.3632"></a>
<span class="sourceLineNo">3633</span> while (it.hasNext()) {<a name="line.3633"></a>
<span class="sourceLineNo">3634</span> long iax = it.aLong;<a name="line.3634"></a>
<span class="sourceLineNo">3635</span> final long ibx = it.bLong;<a name="line.3635"></a>
<span class="sourceLineNo">3636</span> long ox;<a name="line.3636"></a>
<span class="sourceLineNo">3637</span> ox = (iax + ibx);<a name="line.3637"></a>
<span class="sourceLineNo">3638</span> oai64data[it.oIndex] = ox;<a name="line.3638"></a>
<span class="sourceLineNo">3639</span> for (int j = 1; j &lt; is; j++) {<a name="line.3639"></a>
<span class="sourceLineNo">3640</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.3640"></a>
<span class="sourceLineNo">3641</span> ox = (iax + ibx);<a name="line.3641"></a>
<span class="sourceLineNo">3642</span> oai64data[it.oIndex + j] = ox;<a name="line.3642"></a>
<span class="sourceLineNo">3643</span> }<a name="line.3643"></a>
<span class="sourceLineNo">3644</span> }<a name="line.3644"></a>
<span class="sourceLineNo">3645</span> }<a name="line.3645"></a>
<span class="sourceLineNo">3646</span> } else if (as == 1) {<a name="line.3646"></a>
<span class="sourceLineNo">3647</span> if (it.isOutputDouble()) {<a name="line.3647"></a>
<span class="sourceLineNo">3648</span> while (it.hasNext()) {<a name="line.3648"></a>
<span class="sourceLineNo">3649</span> final double iax = it.aDouble;<a name="line.3649"></a>
<span class="sourceLineNo">3650</span> final double ibx = it.bDouble;<a name="line.3650"></a>
<span class="sourceLineNo">3651</span> long ox;<a name="line.3651"></a>
<span class="sourceLineNo">3652</span> ox = toLong(iax + ibx);<a name="line.3652"></a>
<span class="sourceLineNo">3653</span> for (int j = 0; j &lt; is; j++) {<a name="line.3653"></a>
<span class="sourceLineNo">3654</span> oai64data[it.oIndex + j] = ox;<a name="line.3654"></a>
<span class="sourceLineNo">3655</span> }<a name="line.3655"></a>
<span class="sourceLineNo">3656</span> }<a name="line.3656"></a>
<span class="sourceLineNo">3657</span> } else {<a name="line.3657"></a>
<span class="sourceLineNo">3658</span> while (it.hasNext()) {<a name="line.3658"></a>
<span class="sourceLineNo">3659</span> final long iax = it.aLong;<a name="line.3659"></a>
<span class="sourceLineNo">3660</span> final long ibx = it.bLong;<a name="line.3660"></a>
<span class="sourceLineNo">3661</span> long ox;<a name="line.3661"></a>
<span class="sourceLineNo">3662</span> ox = (iax + ibx);<a name="line.3662"></a>
<span class="sourceLineNo">3663</span> for (int j = 0; j &lt; is; j++) {<a name="line.3663"></a>
<span class="sourceLineNo">3664</span> oai64data[it.oIndex + j] = ox;<a name="line.3664"></a>
<span class="sourceLineNo">3665</span> }<a name="line.3665"></a>
<span class="sourceLineNo">3666</span> }<a name="line.3666"></a>
<span class="sourceLineNo">3667</span> }<a name="line.3667"></a>
<span class="sourceLineNo">3668</span> } else {<a name="line.3668"></a>
<span class="sourceLineNo">3669</span> if (it.isOutputDouble()) {<a name="line.3669"></a>
<span class="sourceLineNo">3670</span> while (it.hasNext()) {<a name="line.3670"></a>
<span class="sourceLineNo">3671</span> double iax = it.aDouble;<a name="line.3671"></a>
<span class="sourceLineNo">3672</span> double ibx = it.bDouble;<a name="line.3672"></a>
<span class="sourceLineNo">3673</span> long ox;<a name="line.3673"></a>
<span class="sourceLineNo">3674</span> ox = toLong(iax + ibx);<a name="line.3674"></a>
<span class="sourceLineNo">3675</span> oai64data[it.oIndex] = ox;<a name="line.3675"></a>
<span class="sourceLineNo">3676</span> for (int j = 1; j &lt; is; j++) {<a name="line.3676"></a>
<span class="sourceLineNo">3677</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.3677"></a>
<span class="sourceLineNo">3678</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.3678"></a>
<span class="sourceLineNo">3679</span> ox = toLong(iax + ibx);<a name="line.3679"></a>
<span class="sourceLineNo">3680</span> oai64data[it.oIndex + j] = ox;<a name="line.3680"></a>
<span class="sourceLineNo">3681</span> }<a name="line.3681"></a>
<span class="sourceLineNo">3682</span> }<a name="line.3682"></a>
<span class="sourceLineNo">3683</span> } else {<a name="line.3683"></a>
<span class="sourceLineNo">3684</span> while (it.hasNext()) {<a name="line.3684"></a>
<span class="sourceLineNo">3685</span> long iax = it.aLong;<a name="line.3685"></a>
<span class="sourceLineNo">3686</span> long ibx = it.bLong;<a name="line.3686"></a>
<span class="sourceLineNo">3687</span> long ox;<a name="line.3687"></a>
<span class="sourceLineNo">3688</span> ox = (iax + ibx);<a name="line.3688"></a>
<span class="sourceLineNo">3689</span> oai64data[it.oIndex] = ox;<a name="line.3689"></a>
<span class="sourceLineNo">3690</span> for (int j = 1; j &lt; is; j++) {<a name="line.3690"></a>
<span class="sourceLineNo">3691</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.3691"></a>
<span class="sourceLineNo">3692</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.3692"></a>
<span class="sourceLineNo">3693</span> ox = (iax + ibx);<a name="line.3693"></a>
<span class="sourceLineNo">3694</span> oai64data[it.oIndex + j] = ox;<a name="line.3694"></a>
<span class="sourceLineNo">3695</span> }<a name="line.3695"></a>
<span class="sourceLineNo">3696</span> }<a name="line.3696"></a>
<span class="sourceLineNo">3697</span> }<a name="line.3697"></a>
<span class="sourceLineNo">3698</span> }<a name="line.3698"></a>
<span class="sourceLineNo">3699</span> break;<a name="line.3699"></a>
<span class="sourceLineNo">3700</span> case Dataset.ARRAYINT32:<a name="line.3700"></a>
<span class="sourceLineNo">3701</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.3701"></a>
<span class="sourceLineNo">3702</span> if (is == 1) {<a name="line.3702"></a>
<span class="sourceLineNo">3703</span> if (it.isOutputDouble()) {<a name="line.3703"></a>
<span class="sourceLineNo">3704</span> while (it.hasNext()) {<a name="line.3704"></a>
<span class="sourceLineNo">3705</span> final double iax = it.aDouble;<a name="line.3705"></a>
<span class="sourceLineNo">3706</span> final double ibx = it.bDouble;<a name="line.3706"></a>
<span class="sourceLineNo">3707</span> int ox;<a name="line.3707"></a>
<span class="sourceLineNo">3708</span> ox = (int) toLong(iax + ibx);<a name="line.3708"></a>
<span class="sourceLineNo">3709</span> oai32data[it.oIndex] = ox;<a name="line.3709"></a>
<span class="sourceLineNo">3710</span> }<a name="line.3710"></a>
<span class="sourceLineNo">3711</span> } else {<a name="line.3711"></a>
<span class="sourceLineNo">3712</span> while (it.hasNext()) {<a name="line.3712"></a>
<span class="sourceLineNo">3713</span> final long iax = it.aLong;<a name="line.3713"></a>
<span class="sourceLineNo">3714</span> final long ibx = it.bLong;<a name="line.3714"></a>
<span class="sourceLineNo">3715</span> int ox;<a name="line.3715"></a>
<span class="sourceLineNo">3716</span> ox = (int) (iax + ibx);<a name="line.3716"></a>
<span class="sourceLineNo">3717</span> oai32data[it.oIndex] = ox;<a name="line.3717"></a>
<span class="sourceLineNo">3718</span> }<a name="line.3718"></a>
<span class="sourceLineNo">3719</span> }<a name="line.3719"></a>
<span class="sourceLineNo">3720</span> } else if (as &lt; bs) {<a name="line.3720"></a>
<span class="sourceLineNo">3721</span> if (it.isOutputDouble()) {<a name="line.3721"></a>
<span class="sourceLineNo">3722</span> while (it.hasNext()) {<a name="line.3722"></a>
<span class="sourceLineNo">3723</span> final double iax = it.aDouble;<a name="line.3723"></a>
<span class="sourceLineNo">3724</span> double ibx = it.bDouble;<a name="line.3724"></a>
<span class="sourceLineNo">3725</span> int ox;<a name="line.3725"></a>
<span class="sourceLineNo">3726</span> ox = (int) toLong(iax + ibx);<a name="line.3726"></a>
<span class="sourceLineNo">3727</span> oai32data[it.oIndex] = ox;<a name="line.3727"></a>
<span class="sourceLineNo">3728</span> for (int j = 1; j &lt; is; j++) {<a name="line.3728"></a>
<span class="sourceLineNo">3729</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.3729"></a>
<span class="sourceLineNo">3730</span> ox = (int) toLong(iax + ibx);<a name="line.3730"></a>
<span class="sourceLineNo">3731</span> oai32data[it.oIndex + j] = ox;<a name="line.3731"></a>
<span class="sourceLineNo">3732</span> }<a name="line.3732"></a>
<span class="sourceLineNo">3733</span> }<a name="line.3733"></a>
<span class="sourceLineNo">3734</span> } else {<a name="line.3734"></a>
<span class="sourceLineNo">3735</span> while (it.hasNext()) {<a name="line.3735"></a>
<span class="sourceLineNo">3736</span> final long iax = it.aLong;<a name="line.3736"></a>
<span class="sourceLineNo">3737</span> long ibx = it.bLong;<a name="line.3737"></a>
<span class="sourceLineNo">3738</span> int ox;<a name="line.3738"></a>
<span class="sourceLineNo">3739</span> ox = (int) (iax + ibx);<a name="line.3739"></a>
<span class="sourceLineNo">3740</span> oai32data[it.oIndex] = ox;<a name="line.3740"></a>
<span class="sourceLineNo">3741</span> for (int j = 1; j &lt; is; j++) {<a name="line.3741"></a>
<span class="sourceLineNo">3742</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.3742"></a>
<span class="sourceLineNo">3743</span> ox = (int) (iax + ibx);<a name="line.3743"></a>
<span class="sourceLineNo">3744</span> oai32data[it.oIndex + j] = ox;<a name="line.3744"></a>
<span class="sourceLineNo">3745</span> }<a name="line.3745"></a>
<span class="sourceLineNo">3746</span> }<a name="line.3746"></a>
<span class="sourceLineNo">3747</span> }<a name="line.3747"></a>
<span class="sourceLineNo">3748</span> } else if (as &gt; bs) {<a name="line.3748"></a>
<span class="sourceLineNo">3749</span> if (it.isOutputDouble()) {<a name="line.3749"></a>
<span class="sourceLineNo">3750</span> while (it.hasNext()) {<a name="line.3750"></a>
<span class="sourceLineNo">3751</span> double iax = it.aDouble;<a name="line.3751"></a>
<span class="sourceLineNo">3752</span> final double ibx = it.bDouble;<a name="line.3752"></a>
<span class="sourceLineNo">3753</span> int ox;<a name="line.3753"></a>
<span class="sourceLineNo">3754</span> ox = (int) toLong(iax + ibx);<a name="line.3754"></a>
<span class="sourceLineNo">3755</span> oai32data[it.oIndex] = ox;<a name="line.3755"></a>
<span class="sourceLineNo">3756</span> for (int j = 1; j &lt; is; j++) {<a name="line.3756"></a>
<span class="sourceLineNo">3757</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.3757"></a>
<span class="sourceLineNo">3758</span> ox = (int) toLong(iax + ibx);<a name="line.3758"></a>
<span class="sourceLineNo">3759</span> oai32data[it.oIndex + j] = ox;<a name="line.3759"></a>
<span class="sourceLineNo">3760</span> }<a name="line.3760"></a>
<span class="sourceLineNo">3761</span> }<a name="line.3761"></a>
<span class="sourceLineNo">3762</span> } else {<a name="line.3762"></a>
<span class="sourceLineNo">3763</span> while (it.hasNext()) {<a name="line.3763"></a>
<span class="sourceLineNo">3764</span> long iax = it.aLong;<a name="line.3764"></a>
<span class="sourceLineNo">3765</span> final long ibx = it.bLong;<a name="line.3765"></a>
<span class="sourceLineNo">3766</span> int ox;<a name="line.3766"></a>
<span class="sourceLineNo">3767</span> ox = (int) (iax + ibx);<a name="line.3767"></a>
<span class="sourceLineNo">3768</span> oai32data[it.oIndex] = ox;<a name="line.3768"></a>
<span class="sourceLineNo">3769</span> for (int j = 1; j &lt; is; j++) {<a name="line.3769"></a>
<span class="sourceLineNo">3770</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.3770"></a>
<span class="sourceLineNo">3771</span> ox = (int) (iax + ibx);<a name="line.3771"></a>
<span class="sourceLineNo">3772</span> oai32data[it.oIndex + j] = ox;<a name="line.3772"></a>
<span class="sourceLineNo">3773</span> }<a name="line.3773"></a>
<span class="sourceLineNo">3774</span> }<a name="line.3774"></a>
<span class="sourceLineNo">3775</span> }<a name="line.3775"></a>
<span class="sourceLineNo">3776</span> } else if (as == 1) {<a name="line.3776"></a>
<span class="sourceLineNo">3777</span> if (it.isOutputDouble()) {<a name="line.3777"></a>
<span class="sourceLineNo">3778</span> while (it.hasNext()) {<a name="line.3778"></a>
<span class="sourceLineNo">3779</span> final double iax = it.aDouble;<a name="line.3779"></a>
<span class="sourceLineNo">3780</span> final double ibx = it.bDouble;<a name="line.3780"></a>
<span class="sourceLineNo">3781</span> int ox;<a name="line.3781"></a>
<span class="sourceLineNo">3782</span> ox = (int) toLong(iax + ibx);<a name="line.3782"></a>
<span class="sourceLineNo">3783</span> for (int j = 0; j &lt; is; j++) {<a name="line.3783"></a>
<span class="sourceLineNo">3784</span> oai32data[it.oIndex + j] = ox;<a name="line.3784"></a>
<span class="sourceLineNo">3785</span> }<a name="line.3785"></a>
<span class="sourceLineNo">3786</span> }<a name="line.3786"></a>
<span class="sourceLineNo">3787</span> } else {<a name="line.3787"></a>
<span class="sourceLineNo">3788</span> while (it.hasNext()) {<a name="line.3788"></a>
<span class="sourceLineNo">3789</span> final long iax = it.aLong;<a name="line.3789"></a>
<span class="sourceLineNo">3790</span> final long ibx = it.bLong;<a name="line.3790"></a>
<span class="sourceLineNo">3791</span> int ox;<a name="line.3791"></a>
<span class="sourceLineNo">3792</span> ox = (int) (iax + ibx);<a name="line.3792"></a>
<span class="sourceLineNo">3793</span> for (int j = 0; j &lt; is; j++) {<a name="line.3793"></a>
<span class="sourceLineNo">3794</span> oai32data[it.oIndex + j] = ox;<a name="line.3794"></a>
<span class="sourceLineNo">3795</span> }<a name="line.3795"></a>
<span class="sourceLineNo">3796</span> }<a name="line.3796"></a>
<span class="sourceLineNo">3797</span> }<a name="line.3797"></a>
<span class="sourceLineNo">3798</span> } else {<a name="line.3798"></a>
<span class="sourceLineNo">3799</span> if (it.isOutputDouble()) {<a name="line.3799"></a>
<span class="sourceLineNo">3800</span> while (it.hasNext()) {<a name="line.3800"></a>
<span class="sourceLineNo">3801</span> double iax = it.aDouble;<a name="line.3801"></a>
<span class="sourceLineNo">3802</span> double ibx = it.bDouble;<a name="line.3802"></a>
<span class="sourceLineNo">3803</span> int ox;<a name="line.3803"></a>
<span class="sourceLineNo">3804</span> ox = (int) toLong(iax + ibx);<a name="line.3804"></a>
<span class="sourceLineNo">3805</span> oai32data[it.oIndex] = ox;<a name="line.3805"></a>
<span class="sourceLineNo">3806</span> for (int j = 1; j &lt; is; j++) {<a name="line.3806"></a>
<span class="sourceLineNo">3807</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.3807"></a>
<span class="sourceLineNo">3808</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.3808"></a>
<span class="sourceLineNo">3809</span> ox = (int) toLong(iax + ibx);<a name="line.3809"></a>
<span class="sourceLineNo">3810</span> oai32data[it.oIndex + j] = ox;<a name="line.3810"></a>
<span class="sourceLineNo">3811</span> }<a name="line.3811"></a>
<span class="sourceLineNo">3812</span> }<a name="line.3812"></a>
<span class="sourceLineNo">3813</span> } else {<a name="line.3813"></a>
<span class="sourceLineNo">3814</span> while (it.hasNext()) {<a name="line.3814"></a>
<span class="sourceLineNo">3815</span> long iax = it.aLong;<a name="line.3815"></a>
<span class="sourceLineNo">3816</span> long ibx = it.bLong;<a name="line.3816"></a>
<span class="sourceLineNo">3817</span> int ox;<a name="line.3817"></a>
<span class="sourceLineNo">3818</span> ox = (int) (iax + ibx);<a name="line.3818"></a>
<span class="sourceLineNo">3819</span> oai32data[it.oIndex] = ox;<a name="line.3819"></a>
<span class="sourceLineNo">3820</span> for (int j = 1; j &lt; is; j++) {<a name="line.3820"></a>
<span class="sourceLineNo">3821</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.3821"></a>
<span class="sourceLineNo">3822</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.3822"></a>
<span class="sourceLineNo">3823</span> ox = (int) (iax + ibx);<a name="line.3823"></a>
<span class="sourceLineNo">3824</span> oai32data[it.oIndex + j] = ox;<a name="line.3824"></a>
<span class="sourceLineNo">3825</span> }<a name="line.3825"></a>
<span class="sourceLineNo">3826</span> }<a name="line.3826"></a>
<span class="sourceLineNo">3827</span> }<a name="line.3827"></a>
<span class="sourceLineNo">3828</span> }<a name="line.3828"></a>
<span class="sourceLineNo">3829</span> break;<a name="line.3829"></a>
<span class="sourceLineNo">3830</span> case Dataset.FLOAT32:<a name="line.3830"></a>
<span class="sourceLineNo">3831</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.3831"></a>
<span class="sourceLineNo">3832</span> if (it.isOutputDouble()) {<a name="line.3832"></a>
<span class="sourceLineNo">3833</span> while (it.hasNext()) {<a name="line.3833"></a>
<span class="sourceLineNo">3834</span> final double iax = it.aDouble;<a name="line.3834"></a>
<span class="sourceLineNo">3835</span> final double ibx = it.bDouble;<a name="line.3835"></a>
<span class="sourceLineNo">3836</span> float ox;<a name="line.3836"></a>
<span class="sourceLineNo">3837</span> ox = (float) (iax + ibx);<a name="line.3837"></a>
<span class="sourceLineNo">3838</span> of32data[it.oIndex] = ox;<a name="line.3838"></a>
<span class="sourceLineNo">3839</span> }<a name="line.3839"></a>
<span class="sourceLineNo">3840</span> } else {<a name="line.3840"></a>
<span class="sourceLineNo">3841</span> while (it.hasNext()) {<a name="line.3841"></a>
<span class="sourceLineNo">3842</span> final long iax = it.aLong;<a name="line.3842"></a>
<span class="sourceLineNo">3843</span> final long ibx = it.bLong;<a name="line.3843"></a>
<span class="sourceLineNo">3844</span> float ox;<a name="line.3844"></a>
<span class="sourceLineNo">3845</span> ox = (iax + ibx);<a name="line.3845"></a>
<span class="sourceLineNo">3846</span> of32data[it.oIndex] = ox;<a name="line.3846"></a>
<span class="sourceLineNo">3847</span> }<a name="line.3847"></a>
<span class="sourceLineNo">3848</span> }<a name="line.3848"></a>
<span class="sourceLineNo">3849</span> break;<a name="line.3849"></a>
<span class="sourceLineNo">3850</span> case Dataset.FLOAT64:<a name="line.3850"></a>
<span class="sourceLineNo">3851</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.3851"></a>
<span class="sourceLineNo">3852</span> if (it.isOutputDouble()) {<a name="line.3852"></a>
<span class="sourceLineNo">3853</span> while (it.hasNext()) {<a name="line.3853"></a>
<span class="sourceLineNo">3854</span> final double iax = it.aDouble;<a name="line.3854"></a>
<span class="sourceLineNo">3855</span> final double ibx = it.bDouble;<a name="line.3855"></a>
<span class="sourceLineNo">3856</span> double ox;<a name="line.3856"></a>
<span class="sourceLineNo">3857</span> ox = (iax + ibx);<a name="line.3857"></a>
<span class="sourceLineNo">3858</span> of64data[it.oIndex] = ox;<a name="line.3858"></a>
<span class="sourceLineNo">3859</span> }<a name="line.3859"></a>
<span class="sourceLineNo">3860</span> } else {<a name="line.3860"></a>
<span class="sourceLineNo">3861</span> while (it.hasNext()) {<a name="line.3861"></a>
<span class="sourceLineNo">3862</span> final long iax = it.aLong;<a name="line.3862"></a>
<span class="sourceLineNo">3863</span> final long ibx = it.bLong;<a name="line.3863"></a>
<span class="sourceLineNo">3864</span> double ox;<a name="line.3864"></a>
<span class="sourceLineNo">3865</span> ox = (iax + ibx);<a name="line.3865"></a>
<span class="sourceLineNo">3866</span> of64data[it.oIndex] = ox;<a name="line.3866"></a>
<span class="sourceLineNo">3867</span> }<a name="line.3867"></a>
<span class="sourceLineNo">3868</span> }<a name="line.3868"></a>
<span class="sourceLineNo">3869</span> break;<a name="line.3869"></a>
<span class="sourceLineNo">3870</span> case Dataset.ARRAYFLOAT32:<a name="line.3870"></a>
<span class="sourceLineNo">3871</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.3871"></a>
<span class="sourceLineNo">3872</span> if (is == 1) {<a name="line.3872"></a>
<span class="sourceLineNo">3873</span> if (it.isOutputDouble()) {<a name="line.3873"></a>
<span class="sourceLineNo">3874</span> while (it.hasNext()) {<a name="line.3874"></a>
<span class="sourceLineNo">3875</span> final double iax = it.aDouble;<a name="line.3875"></a>
<span class="sourceLineNo">3876</span> final double ibx = it.bDouble;<a name="line.3876"></a>
<span class="sourceLineNo">3877</span> float ox;<a name="line.3877"></a>
<span class="sourceLineNo">3878</span> ox = (float) (iax + ibx);<a name="line.3878"></a>
<span class="sourceLineNo">3879</span> oaf32data[it.oIndex] = ox;<a name="line.3879"></a>
<span class="sourceLineNo">3880</span> }<a name="line.3880"></a>
<span class="sourceLineNo">3881</span> } else {<a name="line.3881"></a>
<span class="sourceLineNo">3882</span> while (it.hasNext()) {<a name="line.3882"></a>
<span class="sourceLineNo">3883</span> final long iax = it.aLong;<a name="line.3883"></a>
<span class="sourceLineNo">3884</span> final long ibx = it.bLong;<a name="line.3884"></a>
<span class="sourceLineNo">3885</span> float ox;<a name="line.3885"></a>
<span class="sourceLineNo">3886</span> ox = (iax + ibx);<a name="line.3886"></a>
<span class="sourceLineNo">3887</span> oaf32data[it.oIndex] = ox;<a name="line.3887"></a>
<span class="sourceLineNo">3888</span> }<a name="line.3888"></a>
<span class="sourceLineNo">3889</span> }<a name="line.3889"></a>
<span class="sourceLineNo">3890</span> } else if (as &lt; bs) {<a name="line.3890"></a>
<span class="sourceLineNo">3891</span> if (it.isOutputDouble()) {<a name="line.3891"></a>
<span class="sourceLineNo">3892</span> while (it.hasNext()) {<a name="line.3892"></a>
<span class="sourceLineNo">3893</span> final double iax = it.aDouble;<a name="line.3893"></a>
<span class="sourceLineNo">3894</span> double ibx = it.bDouble;<a name="line.3894"></a>
<span class="sourceLineNo">3895</span> float ox;<a name="line.3895"></a>
<span class="sourceLineNo">3896</span> ox = (float) (iax + ibx);<a name="line.3896"></a>
<span class="sourceLineNo">3897</span> oaf32data[it.oIndex] = ox;<a name="line.3897"></a>
<span class="sourceLineNo">3898</span> for (int j = 1; j &lt; is; j++) {<a name="line.3898"></a>
<span class="sourceLineNo">3899</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.3899"></a>
<span class="sourceLineNo">3900</span> ox = (float) (iax + ibx);<a name="line.3900"></a>
<span class="sourceLineNo">3901</span> oaf32data[it.oIndex + j] = ox;<a name="line.3901"></a>
<span class="sourceLineNo">3902</span> }<a name="line.3902"></a>
<span class="sourceLineNo">3903</span> }<a name="line.3903"></a>
<span class="sourceLineNo">3904</span> } else {<a name="line.3904"></a>
<span class="sourceLineNo">3905</span> while (it.hasNext()) {<a name="line.3905"></a>
<span class="sourceLineNo">3906</span> final long iax = it.aLong;<a name="line.3906"></a>
<span class="sourceLineNo">3907</span> long ibx = it.bLong;<a name="line.3907"></a>
<span class="sourceLineNo">3908</span> float ox;<a name="line.3908"></a>
<span class="sourceLineNo">3909</span> ox = (iax + ibx);<a name="line.3909"></a>
<span class="sourceLineNo">3910</span> oaf32data[it.oIndex] = ox;<a name="line.3910"></a>
<span class="sourceLineNo">3911</span> for (int j = 1; j &lt; is; j++) {<a name="line.3911"></a>
<span class="sourceLineNo">3912</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.3912"></a>
<span class="sourceLineNo">3913</span> ox = (iax + ibx);<a name="line.3913"></a>
<span class="sourceLineNo">3914</span> oaf32data[it.oIndex + j] = ox;<a name="line.3914"></a>
<span class="sourceLineNo">3915</span> }<a name="line.3915"></a>
<span class="sourceLineNo">3916</span> }<a name="line.3916"></a>
<span class="sourceLineNo">3917</span> }<a name="line.3917"></a>
<span class="sourceLineNo">3918</span> } else if (as &gt; bs) {<a name="line.3918"></a>
<span class="sourceLineNo">3919</span> if (it.isOutputDouble()) {<a name="line.3919"></a>
<span class="sourceLineNo">3920</span> while (it.hasNext()) {<a name="line.3920"></a>
<span class="sourceLineNo">3921</span> double iax = it.aDouble;<a name="line.3921"></a>
<span class="sourceLineNo">3922</span> final double ibx = it.bDouble;<a name="line.3922"></a>
<span class="sourceLineNo">3923</span> float ox;<a name="line.3923"></a>
<span class="sourceLineNo">3924</span> ox = (float) (iax + ibx);<a name="line.3924"></a>
<span class="sourceLineNo">3925</span> oaf32data[it.oIndex] = ox;<a name="line.3925"></a>
<span class="sourceLineNo">3926</span> for (int j = 1; j &lt; is; j++) {<a name="line.3926"></a>
<span class="sourceLineNo">3927</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.3927"></a>
<span class="sourceLineNo">3928</span> ox = (float) (iax + ibx);<a name="line.3928"></a>
<span class="sourceLineNo">3929</span> oaf32data[it.oIndex + j] = ox;<a name="line.3929"></a>
<span class="sourceLineNo">3930</span> }<a name="line.3930"></a>
<span class="sourceLineNo">3931</span> }<a name="line.3931"></a>
<span class="sourceLineNo">3932</span> } else {<a name="line.3932"></a>
<span class="sourceLineNo">3933</span> while (it.hasNext()) {<a name="line.3933"></a>
<span class="sourceLineNo">3934</span> long iax = it.aLong;<a name="line.3934"></a>
<span class="sourceLineNo">3935</span> final long ibx = it.bLong;<a name="line.3935"></a>
<span class="sourceLineNo">3936</span> float ox;<a name="line.3936"></a>
<span class="sourceLineNo">3937</span> ox = (iax + ibx);<a name="line.3937"></a>
<span class="sourceLineNo">3938</span> oaf32data[it.oIndex] = ox;<a name="line.3938"></a>
<span class="sourceLineNo">3939</span> for (int j = 1; j &lt; is; j++) {<a name="line.3939"></a>
<span class="sourceLineNo">3940</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.3940"></a>
<span class="sourceLineNo">3941</span> ox = (iax + ibx);<a name="line.3941"></a>
<span class="sourceLineNo">3942</span> oaf32data[it.oIndex + j] = ox;<a name="line.3942"></a>
<span class="sourceLineNo">3943</span> }<a name="line.3943"></a>
<span class="sourceLineNo">3944</span> }<a name="line.3944"></a>
<span class="sourceLineNo">3945</span> }<a name="line.3945"></a>
<span class="sourceLineNo">3946</span> } else if (as == 1) {<a name="line.3946"></a>
<span class="sourceLineNo">3947</span> if (it.isOutputDouble()) {<a name="line.3947"></a>
<span class="sourceLineNo">3948</span> while (it.hasNext()) {<a name="line.3948"></a>
<span class="sourceLineNo">3949</span> final double iax = it.aDouble;<a name="line.3949"></a>
<span class="sourceLineNo">3950</span> final double ibx = it.bDouble;<a name="line.3950"></a>
<span class="sourceLineNo">3951</span> float ox;<a name="line.3951"></a>
<span class="sourceLineNo">3952</span> ox = (float) (iax + ibx);<a name="line.3952"></a>
<span class="sourceLineNo">3953</span> for (int j = 0; j &lt; is; j++) {<a name="line.3953"></a>
<span class="sourceLineNo">3954</span> oaf32data[it.oIndex + j] = ox;<a name="line.3954"></a>
<span class="sourceLineNo">3955</span> }<a name="line.3955"></a>
<span class="sourceLineNo">3956</span> }<a name="line.3956"></a>
<span class="sourceLineNo">3957</span> } else {<a name="line.3957"></a>
<span class="sourceLineNo">3958</span> while (it.hasNext()) {<a name="line.3958"></a>
<span class="sourceLineNo">3959</span> final long iax = it.aLong;<a name="line.3959"></a>
<span class="sourceLineNo">3960</span> final long ibx = it.bLong;<a name="line.3960"></a>
<span class="sourceLineNo">3961</span> float ox;<a name="line.3961"></a>
<span class="sourceLineNo">3962</span> ox = (iax + ibx);<a name="line.3962"></a>
<span class="sourceLineNo">3963</span> for (int j = 0; j &lt; is; j++) {<a name="line.3963"></a>
<span class="sourceLineNo">3964</span> oaf32data[it.oIndex + j] = ox;<a name="line.3964"></a>
<span class="sourceLineNo">3965</span> }<a name="line.3965"></a>
<span class="sourceLineNo">3966</span> }<a name="line.3966"></a>
<span class="sourceLineNo">3967</span> }<a name="line.3967"></a>
<span class="sourceLineNo">3968</span> } else {<a name="line.3968"></a>
<span class="sourceLineNo">3969</span> if (it.isOutputDouble()) {<a name="line.3969"></a>
<span class="sourceLineNo">3970</span> while (it.hasNext()) {<a name="line.3970"></a>
<span class="sourceLineNo">3971</span> double iax = it.aDouble;<a name="line.3971"></a>
<span class="sourceLineNo">3972</span> double ibx = it.bDouble;<a name="line.3972"></a>
<span class="sourceLineNo">3973</span> float ox;<a name="line.3973"></a>
<span class="sourceLineNo">3974</span> ox = (float) (iax + ibx);<a name="line.3974"></a>
<span class="sourceLineNo">3975</span> oaf32data[it.oIndex] = ox;<a name="line.3975"></a>
<span class="sourceLineNo">3976</span> for (int j = 1; j &lt; is; j++) {<a name="line.3976"></a>
<span class="sourceLineNo">3977</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.3977"></a>
<span class="sourceLineNo">3978</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.3978"></a>
<span class="sourceLineNo">3979</span> ox = (float) (iax + ibx);<a name="line.3979"></a>
<span class="sourceLineNo">3980</span> oaf32data[it.oIndex + j] = ox;<a name="line.3980"></a>
<span class="sourceLineNo">3981</span> }<a name="line.3981"></a>
<span class="sourceLineNo">3982</span> }<a name="line.3982"></a>
<span class="sourceLineNo">3983</span> } else {<a name="line.3983"></a>
<span class="sourceLineNo">3984</span> while (it.hasNext()) {<a name="line.3984"></a>
<span class="sourceLineNo">3985</span> long iax = it.aLong;<a name="line.3985"></a>
<span class="sourceLineNo">3986</span> long ibx = it.bLong;<a name="line.3986"></a>
<span class="sourceLineNo">3987</span> float ox;<a name="line.3987"></a>
<span class="sourceLineNo">3988</span> ox = (iax + ibx);<a name="line.3988"></a>
<span class="sourceLineNo">3989</span> oaf32data[it.oIndex] = ox;<a name="line.3989"></a>
<span class="sourceLineNo">3990</span> for (int j = 1; j &lt; is; j++) {<a name="line.3990"></a>
<span class="sourceLineNo">3991</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.3991"></a>
<span class="sourceLineNo">3992</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.3992"></a>
<span class="sourceLineNo">3993</span> ox = (iax + ibx);<a name="line.3993"></a>
<span class="sourceLineNo">3994</span> oaf32data[it.oIndex + j] = ox;<a name="line.3994"></a>
<span class="sourceLineNo">3995</span> }<a name="line.3995"></a>
<span class="sourceLineNo">3996</span> }<a name="line.3996"></a>
<span class="sourceLineNo">3997</span> }<a name="line.3997"></a>
<span class="sourceLineNo">3998</span> }<a name="line.3998"></a>
<span class="sourceLineNo">3999</span> break;<a name="line.3999"></a>
<span class="sourceLineNo">4000</span> case Dataset.ARRAYFLOAT64:<a name="line.4000"></a>
<span class="sourceLineNo">4001</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.4001"></a>
<span class="sourceLineNo">4002</span> if (is == 1) {<a name="line.4002"></a>
<span class="sourceLineNo">4003</span> if (it.isOutputDouble()) {<a name="line.4003"></a>
<span class="sourceLineNo">4004</span> while (it.hasNext()) {<a name="line.4004"></a>
<span class="sourceLineNo">4005</span> final double iax = it.aDouble;<a name="line.4005"></a>
<span class="sourceLineNo">4006</span> final double ibx = it.bDouble;<a name="line.4006"></a>
<span class="sourceLineNo">4007</span> double ox;<a name="line.4007"></a>
<span class="sourceLineNo">4008</span> ox = (iax + ibx);<a name="line.4008"></a>
<span class="sourceLineNo">4009</span> oaf64data[it.oIndex] = ox;<a name="line.4009"></a>
<span class="sourceLineNo">4010</span> }<a name="line.4010"></a>
<span class="sourceLineNo">4011</span> } else {<a name="line.4011"></a>
<span class="sourceLineNo">4012</span> while (it.hasNext()) {<a name="line.4012"></a>
<span class="sourceLineNo">4013</span> final long iax = it.aLong;<a name="line.4013"></a>
<span class="sourceLineNo">4014</span> final long ibx = it.bLong;<a name="line.4014"></a>
<span class="sourceLineNo">4015</span> double ox;<a name="line.4015"></a>
<span class="sourceLineNo">4016</span> ox = (iax + ibx);<a name="line.4016"></a>
<span class="sourceLineNo">4017</span> oaf64data[it.oIndex] = ox;<a name="line.4017"></a>
<span class="sourceLineNo">4018</span> }<a name="line.4018"></a>
<span class="sourceLineNo">4019</span> }<a name="line.4019"></a>
<span class="sourceLineNo">4020</span> } else if (as &lt; bs) {<a name="line.4020"></a>
<span class="sourceLineNo">4021</span> if (it.isOutputDouble()) {<a name="line.4021"></a>
<span class="sourceLineNo">4022</span> while (it.hasNext()) {<a name="line.4022"></a>
<span class="sourceLineNo">4023</span> final double iax = it.aDouble;<a name="line.4023"></a>
<span class="sourceLineNo">4024</span> double ibx = it.bDouble;<a name="line.4024"></a>
<span class="sourceLineNo">4025</span> double ox;<a name="line.4025"></a>
<span class="sourceLineNo">4026</span> ox = (iax + ibx);<a name="line.4026"></a>
<span class="sourceLineNo">4027</span> oaf64data[it.oIndex] = ox;<a name="line.4027"></a>
<span class="sourceLineNo">4028</span> for (int j = 1; j &lt; is; j++) {<a name="line.4028"></a>
<span class="sourceLineNo">4029</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.4029"></a>
<span class="sourceLineNo">4030</span> ox = (iax + ibx);<a name="line.4030"></a>
<span class="sourceLineNo">4031</span> oaf64data[it.oIndex + j] = ox;<a name="line.4031"></a>
<span class="sourceLineNo">4032</span> }<a name="line.4032"></a>
<span class="sourceLineNo">4033</span> }<a name="line.4033"></a>
<span class="sourceLineNo">4034</span> } else {<a name="line.4034"></a>
<span class="sourceLineNo">4035</span> while (it.hasNext()) {<a name="line.4035"></a>
<span class="sourceLineNo">4036</span> final long iax = it.aLong;<a name="line.4036"></a>
<span class="sourceLineNo">4037</span> long ibx = it.bLong;<a name="line.4037"></a>
<span class="sourceLineNo">4038</span> double ox;<a name="line.4038"></a>
<span class="sourceLineNo">4039</span> ox = (iax + ibx);<a name="line.4039"></a>
<span class="sourceLineNo">4040</span> oaf64data[it.oIndex] = ox;<a name="line.4040"></a>
<span class="sourceLineNo">4041</span> for (int j = 1; j &lt; is; j++) {<a name="line.4041"></a>
<span class="sourceLineNo">4042</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.4042"></a>
<span class="sourceLineNo">4043</span> ox = (iax + ibx);<a name="line.4043"></a>
<span class="sourceLineNo">4044</span> oaf64data[it.oIndex + j] = ox;<a name="line.4044"></a>
<span class="sourceLineNo">4045</span> }<a name="line.4045"></a>
<span class="sourceLineNo">4046</span> }<a name="line.4046"></a>
<span class="sourceLineNo">4047</span> }<a name="line.4047"></a>
<span class="sourceLineNo">4048</span> } else if (as &gt; bs) {<a name="line.4048"></a>
<span class="sourceLineNo">4049</span> if (it.isOutputDouble()) {<a name="line.4049"></a>
<span class="sourceLineNo">4050</span> while (it.hasNext()) {<a name="line.4050"></a>
<span class="sourceLineNo">4051</span> double iax = it.aDouble;<a name="line.4051"></a>
<span class="sourceLineNo">4052</span> final double ibx = it.bDouble;<a name="line.4052"></a>
<span class="sourceLineNo">4053</span> double ox;<a name="line.4053"></a>
<span class="sourceLineNo">4054</span> ox = (iax + ibx);<a name="line.4054"></a>
<span class="sourceLineNo">4055</span> oaf64data[it.oIndex] = ox;<a name="line.4055"></a>
<span class="sourceLineNo">4056</span> for (int j = 1; j &lt; is; j++) {<a name="line.4056"></a>
<span class="sourceLineNo">4057</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.4057"></a>
<span class="sourceLineNo">4058</span> ox = (iax + ibx);<a name="line.4058"></a>
<span class="sourceLineNo">4059</span> oaf64data[it.oIndex + j] = ox;<a name="line.4059"></a>
<span class="sourceLineNo">4060</span> }<a name="line.4060"></a>
<span class="sourceLineNo">4061</span> }<a name="line.4061"></a>
<span class="sourceLineNo">4062</span> } else {<a name="line.4062"></a>
<span class="sourceLineNo">4063</span> while (it.hasNext()) {<a name="line.4063"></a>
<span class="sourceLineNo">4064</span> long iax = it.aLong;<a name="line.4064"></a>
<span class="sourceLineNo">4065</span> final long ibx = it.bLong;<a name="line.4065"></a>
<span class="sourceLineNo">4066</span> double ox;<a name="line.4066"></a>
<span class="sourceLineNo">4067</span> ox = (iax + ibx);<a name="line.4067"></a>
<span class="sourceLineNo">4068</span> oaf64data[it.oIndex] = ox;<a name="line.4068"></a>
<span class="sourceLineNo">4069</span> for (int j = 1; j &lt; is; j++) {<a name="line.4069"></a>
<span class="sourceLineNo">4070</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.4070"></a>
<span class="sourceLineNo">4071</span> ox = (iax + ibx);<a name="line.4071"></a>
<span class="sourceLineNo">4072</span> oaf64data[it.oIndex + j] = ox;<a name="line.4072"></a>
<span class="sourceLineNo">4073</span> }<a name="line.4073"></a>
<span class="sourceLineNo">4074</span> }<a name="line.4074"></a>
<span class="sourceLineNo">4075</span> }<a name="line.4075"></a>
<span class="sourceLineNo">4076</span> } else if (as == 1) {<a name="line.4076"></a>
<span class="sourceLineNo">4077</span> if (it.isOutputDouble()) {<a name="line.4077"></a>
<span class="sourceLineNo">4078</span> while (it.hasNext()) {<a name="line.4078"></a>
<span class="sourceLineNo">4079</span> final double iax = it.aDouble;<a name="line.4079"></a>
<span class="sourceLineNo">4080</span> final double ibx = it.bDouble;<a name="line.4080"></a>
<span class="sourceLineNo">4081</span> double ox;<a name="line.4081"></a>
<span class="sourceLineNo">4082</span> ox = (iax + ibx);<a name="line.4082"></a>
<span class="sourceLineNo">4083</span> for (int j = 0; j &lt; is; j++) {<a name="line.4083"></a>
<span class="sourceLineNo">4084</span> oaf64data[it.oIndex + j] = ox;<a name="line.4084"></a>
<span class="sourceLineNo">4085</span> }<a name="line.4085"></a>
<span class="sourceLineNo">4086</span> }<a name="line.4086"></a>
<span class="sourceLineNo">4087</span> } else {<a name="line.4087"></a>
<span class="sourceLineNo">4088</span> while (it.hasNext()) {<a name="line.4088"></a>
<span class="sourceLineNo">4089</span> final long iax = it.aLong;<a name="line.4089"></a>
<span class="sourceLineNo">4090</span> final long ibx = it.bLong;<a name="line.4090"></a>
<span class="sourceLineNo">4091</span> double ox;<a name="line.4091"></a>
<span class="sourceLineNo">4092</span> ox = (iax + ibx);<a name="line.4092"></a>
<span class="sourceLineNo">4093</span> for (int j = 0; j &lt; is; j++) {<a name="line.4093"></a>
<span class="sourceLineNo">4094</span> oaf64data[it.oIndex + j] = ox;<a name="line.4094"></a>
<span class="sourceLineNo">4095</span> }<a name="line.4095"></a>
<span class="sourceLineNo">4096</span> }<a name="line.4096"></a>
<span class="sourceLineNo">4097</span> }<a name="line.4097"></a>
<span class="sourceLineNo">4098</span> } else {<a name="line.4098"></a>
<span class="sourceLineNo">4099</span> if (it.isOutputDouble()) {<a name="line.4099"></a>
<span class="sourceLineNo">4100</span> while (it.hasNext()) {<a name="line.4100"></a>
<span class="sourceLineNo">4101</span> double iax = it.aDouble;<a name="line.4101"></a>
<span class="sourceLineNo">4102</span> double ibx = it.bDouble;<a name="line.4102"></a>
<span class="sourceLineNo">4103</span> double ox;<a name="line.4103"></a>
<span class="sourceLineNo">4104</span> ox = (iax + ibx);<a name="line.4104"></a>
<span class="sourceLineNo">4105</span> oaf64data[it.oIndex] = ox;<a name="line.4105"></a>
<span class="sourceLineNo">4106</span> for (int j = 1; j &lt; is; j++) {<a name="line.4106"></a>
<span class="sourceLineNo">4107</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.4107"></a>
<span class="sourceLineNo">4108</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.4108"></a>
<span class="sourceLineNo">4109</span> ox = (iax + ibx);<a name="line.4109"></a>
<span class="sourceLineNo">4110</span> oaf64data[it.oIndex + j] = ox;<a name="line.4110"></a>
<span class="sourceLineNo">4111</span> }<a name="line.4111"></a>
<span class="sourceLineNo">4112</span> }<a name="line.4112"></a>
<span class="sourceLineNo">4113</span> } else {<a name="line.4113"></a>
<span class="sourceLineNo">4114</span> while (it.hasNext()) {<a name="line.4114"></a>
<span class="sourceLineNo">4115</span> long iax = it.aLong;<a name="line.4115"></a>
<span class="sourceLineNo">4116</span> long ibx = it.bLong;<a name="line.4116"></a>
<span class="sourceLineNo">4117</span> double ox;<a name="line.4117"></a>
<span class="sourceLineNo">4118</span> ox = (iax + ibx);<a name="line.4118"></a>
<span class="sourceLineNo">4119</span> oaf64data[it.oIndex] = ox;<a name="line.4119"></a>
<span class="sourceLineNo">4120</span> for (int j = 1; j &lt; is; j++) {<a name="line.4120"></a>
<span class="sourceLineNo">4121</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.4121"></a>
<span class="sourceLineNo">4122</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.4122"></a>
<span class="sourceLineNo">4123</span> ox = (iax + ibx);<a name="line.4123"></a>
<span class="sourceLineNo">4124</span> oaf64data[it.oIndex + j] = ox;<a name="line.4124"></a>
<span class="sourceLineNo">4125</span> }<a name="line.4125"></a>
<span class="sourceLineNo">4126</span> }<a name="line.4126"></a>
<span class="sourceLineNo">4127</span> }<a name="line.4127"></a>
<span class="sourceLineNo">4128</span> }<a name="line.4128"></a>
<span class="sourceLineNo">4129</span> break;<a name="line.4129"></a>
<span class="sourceLineNo">4130</span> case Dataset.COMPLEX64:<a name="line.4130"></a>
<span class="sourceLineNo">4131</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.4131"></a>
<span class="sourceLineNo">4132</span> if (!da.isComplex()) {<a name="line.4132"></a>
<span class="sourceLineNo">4133</span> if (it.isOutputDouble()) {<a name="line.4133"></a>
<span class="sourceLineNo">4134</span> final double iay = 0;<a name="line.4134"></a>
<span class="sourceLineNo">4135</span> if (db.isComplex()) {<a name="line.4135"></a>
<span class="sourceLineNo">4136</span> while (it.hasNext()) {<a name="line.4136"></a>
<span class="sourceLineNo">4137</span> final double iax = it.aDouble;<a name="line.4137"></a>
<span class="sourceLineNo">4138</span> final double ibx = it.bDouble;<a name="line.4138"></a>
<span class="sourceLineNo">4139</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.4139"></a>
<span class="sourceLineNo">4140</span> float ox;<a name="line.4140"></a>
<span class="sourceLineNo">4141</span> float oy;<a name="line.4141"></a>
<span class="sourceLineNo">4142</span> ox = (float) (iax + ibx);<a name="line.4142"></a>
<span class="sourceLineNo">4143</span> oy = (float) (iay + iby);<a name="line.4143"></a>
<span class="sourceLineNo">4144</span> oc64data[it.oIndex] = ox;<a name="line.4144"></a>
<span class="sourceLineNo">4145</span> oc64data[it.oIndex + 1] = oy;<a name="line.4145"></a>
<span class="sourceLineNo">4146</span> }<a name="line.4146"></a>
<span class="sourceLineNo">4147</span> } else {<a name="line.4147"></a>
<span class="sourceLineNo">4148</span> while (it.hasNext()) {<a name="line.4148"></a>
<span class="sourceLineNo">4149</span> final double iax = it.aDouble;<a name="line.4149"></a>
<span class="sourceLineNo">4150</span> final double ibx = it.bDouble;<a name="line.4150"></a>
<span class="sourceLineNo">4151</span> final double iby = 0;<a name="line.4151"></a>
<span class="sourceLineNo">4152</span> float ox;<a name="line.4152"></a>
<span class="sourceLineNo">4153</span> float oy;<a name="line.4153"></a>
<span class="sourceLineNo">4154</span> ox = (float) (iax + ibx);<a name="line.4154"></a>
<span class="sourceLineNo">4155</span> oy = (float) (iay + iby);<a name="line.4155"></a>
<span class="sourceLineNo">4156</span> oc64data[it.oIndex] = ox;<a name="line.4156"></a>
<span class="sourceLineNo">4157</span> oc64data[it.oIndex + 1] = oy;<a name="line.4157"></a>
<span class="sourceLineNo">4158</span> }<a name="line.4158"></a>
<span class="sourceLineNo">4159</span> }<a name="line.4159"></a>
<span class="sourceLineNo">4160</span> } else {<a name="line.4160"></a>
<span class="sourceLineNo">4161</span> final long iay = 0;<a name="line.4161"></a>
<span class="sourceLineNo">4162</span> while (it.hasNext()) {<a name="line.4162"></a>
<span class="sourceLineNo">4163</span> final long iax = it.aLong;<a name="line.4163"></a>
<span class="sourceLineNo">4164</span> final long ibx = it.bLong;<a name="line.4164"></a>
<span class="sourceLineNo">4165</span> final long iby = 0;<a name="line.4165"></a>
<span class="sourceLineNo">4166</span> float ox;<a name="line.4166"></a>
<span class="sourceLineNo">4167</span> float oy;<a name="line.4167"></a>
<span class="sourceLineNo">4168</span> ox = (float) (iax + ibx);<a name="line.4168"></a>
<span class="sourceLineNo">4169</span> oy = (float) (iay + iby);<a name="line.4169"></a>
<span class="sourceLineNo">4170</span> oc64data[it.oIndex] = ox;<a name="line.4170"></a>
<span class="sourceLineNo">4171</span> oc64data[it.oIndex + 1] = oy;<a name="line.4171"></a>
<span class="sourceLineNo">4172</span> }<a name="line.4172"></a>
<span class="sourceLineNo">4173</span> }<a name="line.4173"></a>
<span class="sourceLineNo">4174</span> } else if (!db.isComplex()) {<a name="line.4174"></a>
<span class="sourceLineNo">4175</span> final double iby = 0;<a name="line.4175"></a>
<span class="sourceLineNo">4176</span> while (it.hasNext()) {<a name="line.4176"></a>
<span class="sourceLineNo">4177</span> final double iax = it.aDouble;<a name="line.4177"></a>
<span class="sourceLineNo">4178</span> final double ibx = it.bDouble;<a name="line.4178"></a>
<span class="sourceLineNo">4179</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.4179"></a>
<span class="sourceLineNo">4180</span> float ox;<a name="line.4180"></a>
<span class="sourceLineNo">4181</span> float oy;<a name="line.4181"></a>
<span class="sourceLineNo">4182</span> ox = (float) (iax + ibx);<a name="line.4182"></a>
<span class="sourceLineNo">4183</span> oy = (float) (iay + iby);<a name="line.4183"></a>
<span class="sourceLineNo">4184</span> oc64data[it.oIndex] = ox;<a name="line.4184"></a>
<span class="sourceLineNo">4185</span> oc64data[it.oIndex + 1] = oy;<a name="line.4185"></a>
<span class="sourceLineNo">4186</span> }<a name="line.4186"></a>
<span class="sourceLineNo">4187</span> } else {<a name="line.4187"></a>
<span class="sourceLineNo">4188</span> while (it.hasNext()) {<a name="line.4188"></a>
<span class="sourceLineNo">4189</span> final double iax = it.aDouble;<a name="line.4189"></a>
<span class="sourceLineNo">4190</span> final double ibx = it.bDouble;<a name="line.4190"></a>
<span class="sourceLineNo">4191</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.4191"></a>
<span class="sourceLineNo">4192</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.4192"></a>
<span class="sourceLineNo">4193</span> float ox;<a name="line.4193"></a>
<span class="sourceLineNo">4194</span> float oy;<a name="line.4194"></a>
<span class="sourceLineNo">4195</span> ox = (float) (iax + ibx);<a name="line.4195"></a>
<span class="sourceLineNo">4196</span> oy = (float) (iay + iby);<a name="line.4196"></a>
<span class="sourceLineNo">4197</span> oc64data[it.oIndex] = ox;<a name="line.4197"></a>
<span class="sourceLineNo">4198</span> oc64data[it.oIndex + 1] = oy;<a name="line.4198"></a>
<span class="sourceLineNo">4199</span> }<a name="line.4199"></a>
<span class="sourceLineNo">4200</span> }<a name="line.4200"></a>
<span class="sourceLineNo">4201</span> break;<a name="line.4201"></a>
<span class="sourceLineNo">4202</span> case Dataset.COMPLEX128:<a name="line.4202"></a>
<span class="sourceLineNo">4203</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.4203"></a>
<span class="sourceLineNo">4204</span> if (!da.isComplex()) {<a name="line.4204"></a>
<span class="sourceLineNo">4205</span> if (it.isOutputDouble()) {<a name="line.4205"></a>
<span class="sourceLineNo">4206</span> final double iay = 0;<a name="line.4206"></a>
<span class="sourceLineNo">4207</span> if (db.isComplex()) {<a name="line.4207"></a>
<span class="sourceLineNo">4208</span> while (it.hasNext()) {<a name="line.4208"></a>
<span class="sourceLineNo">4209</span> final double iax = it.aDouble;<a name="line.4209"></a>
<span class="sourceLineNo">4210</span> final double ibx = it.bDouble;<a name="line.4210"></a>
<span class="sourceLineNo">4211</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.4211"></a>
<span class="sourceLineNo">4212</span> double ox;<a name="line.4212"></a>
<span class="sourceLineNo">4213</span> double oy;<a name="line.4213"></a>
<span class="sourceLineNo">4214</span> ox = (iax + ibx);<a name="line.4214"></a>
<span class="sourceLineNo">4215</span> oy = (iay + iby);<a name="line.4215"></a>
<span class="sourceLineNo">4216</span> oc128data[it.oIndex] = ox;<a name="line.4216"></a>
<span class="sourceLineNo">4217</span> oc128data[it.oIndex + 1] = oy;<a name="line.4217"></a>
<span class="sourceLineNo">4218</span> }<a name="line.4218"></a>
<span class="sourceLineNo">4219</span> } else {<a name="line.4219"></a>
<span class="sourceLineNo">4220</span> while (it.hasNext()) {<a name="line.4220"></a>
<span class="sourceLineNo">4221</span> final double iax = it.aDouble;<a name="line.4221"></a>
<span class="sourceLineNo">4222</span> final double ibx = it.bDouble;<a name="line.4222"></a>
<span class="sourceLineNo">4223</span> final double iby = 0;<a name="line.4223"></a>
<span class="sourceLineNo">4224</span> double ox;<a name="line.4224"></a>
<span class="sourceLineNo">4225</span> double oy;<a name="line.4225"></a>
<span class="sourceLineNo">4226</span> ox = (iax + ibx);<a name="line.4226"></a>
<span class="sourceLineNo">4227</span> oy = (iay + iby);<a name="line.4227"></a>
<span class="sourceLineNo">4228</span> oc128data[it.oIndex] = ox;<a name="line.4228"></a>
<span class="sourceLineNo">4229</span> oc128data[it.oIndex + 1] = oy;<a name="line.4229"></a>
<span class="sourceLineNo">4230</span> }<a name="line.4230"></a>
<span class="sourceLineNo">4231</span> }<a name="line.4231"></a>
<span class="sourceLineNo">4232</span> } else {<a name="line.4232"></a>
<span class="sourceLineNo">4233</span> final long iay = 0;<a name="line.4233"></a>
<span class="sourceLineNo">4234</span> while (it.hasNext()) {<a name="line.4234"></a>
<span class="sourceLineNo">4235</span> final long iax = it.aLong;<a name="line.4235"></a>
<span class="sourceLineNo">4236</span> final long ibx = it.bLong;<a name="line.4236"></a>
<span class="sourceLineNo">4237</span> final long iby = 0;<a name="line.4237"></a>
<span class="sourceLineNo">4238</span> double ox;<a name="line.4238"></a>
<span class="sourceLineNo">4239</span> double oy;<a name="line.4239"></a>
<span class="sourceLineNo">4240</span> ox = (iax + ibx);<a name="line.4240"></a>
<span class="sourceLineNo">4241</span> oy = (iay + iby);<a name="line.4241"></a>
<span class="sourceLineNo">4242</span> oc128data[it.oIndex] = ox;<a name="line.4242"></a>
<span class="sourceLineNo">4243</span> oc128data[it.oIndex + 1] = oy;<a name="line.4243"></a>
<span class="sourceLineNo">4244</span> }<a name="line.4244"></a>
<span class="sourceLineNo">4245</span> }<a name="line.4245"></a>
<span class="sourceLineNo">4246</span> } else if (!db.isComplex()) {<a name="line.4246"></a>
<span class="sourceLineNo">4247</span> final double iby = 0;<a name="line.4247"></a>
<span class="sourceLineNo">4248</span> while (it.hasNext()) {<a name="line.4248"></a>
<span class="sourceLineNo">4249</span> final double iax = it.aDouble;<a name="line.4249"></a>
<span class="sourceLineNo">4250</span> final double ibx = it.bDouble;<a name="line.4250"></a>
<span class="sourceLineNo">4251</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.4251"></a>
<span class="sourceLineNo">4252</span> double ox;<a name="line.4252"></a>
<span class="sourceLineNo">4253</span> double oy;<a name="line.4253"></a>
<span class="sourceLineNo">4254</span> ox = (iax + ibx);<a name="line.4254"></a>
<span class="sourceLineNo">4255</span> oy = (iay + iby);<a name="line.4255"></a>
<span class="sourceLineNo">4256</span> oc128data[it.oIndex] = ox;<a name="line.4256"></a>
<span class="sourceLineNo">4257</span> oc128data[it.oIndex + 1] = oy;<a name="line.4257"></a>
<span class="sourceLineNo">4258</span> }<a name="line.4258"></a>
<span class="sourceLineNo">4259</span> } else {<a name="line.4259"></a>
<span class="sourceLineNo">4260</span> while (it.hasNext()) {<a name="line.4260"></a>
<span class="sourceLineNo">4261</span> final double iax = it.aDouble;<a name="line.4261"></a>
<span class="sourceLineNo">4262</span> final double ibx = it.bDouble;<a name="line.4262"></a>
<span class="sourceLineNo">4263</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.4263"></a>
<span class="sourceLineNo">4264</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.4264"></a>
<span class="sourceLineNo">4265</span> double ox;<a name="line.4265"></a>
<span class="sourceLineNo">4266</span> double oy;<a name="line.4266"></a>
<span class="sourceLineNo">4267</span> ox = (iax + ibx);<a name="line.4267"></a>
<span class="sourceLineNo">4268</span> oy = (iay + iby);<a name="line.4268"></a>
<span class="sourceLineNo">4269</span> oc128data[it.oIndex] = ox;<a name="line.4269"></a>
<span class="sourceLineNo">4270</span> oc128data[it.oIndex + 1] = oy;<a name="line.4270"></a>
<span class="sourceLineNo">4271</span> }<a name="line.4271"></a>
<span class="sourceLineNo">4272</span> }<a name="line.4272"></a>
<span class="sourceLineNo">4273</span> break;<a name="line.4273"></a>
<span class="sourceLineNo">4274</span> default:<a name="line.4274"></a>
<span class="sourceLineNo">4275</span> throw new IllegalArgumentException("add supports integer, compound integer, real, compound real, complex datasets only");<a name="line.4275"></a>
<span class="sourceLineNo">4276</span> }<a name="line.4276"></a>
<span class="sourceLineNo">4277</span><a name="line.4277"></a>
<span class="sourceLineNo">4278</span> addBinaryOperatorName(da, db, result, "+");<a name="line.4278"></a>
<span class="sourceLineNo">4279</span> return result;<a name="line.4279"></a>
<span class="sourceLineNo">4280</span> }<a name="line.4280"></a>
<span class="sourceLineNo">4281</span><a name="line.4281"></a>
<span class="sourceLineNo">4282</span> /**<a name="line.4282"></a>
<span class="sourceLineNo">4283</span> * subtract operator<a name="line.4283"></a>
<span class="sourceLineNo">4284</span> * @param a<a name="line.4284"></a>
<span class="sourceLineNo">4285</span> * @param b<a name="line.4285"></a>
<span class="sourceLineNo">4286</span> * @return {@code a - b}, subtraction of a by b<a name="line.4286"></a>
<span class="sourceLineNo">4287</span> */<a name="line.4287"></a>
<span class="sourceLineNo">4288</span> public static Dataset subtract(final Object a, final Object b) {<a name="line.4288"></a>
<span class="sourceLineNo">4289</span> return subtract(a, b, null);<a name="line.4289"></a>
<span class="sourceLineNo">4290</span> }<a name="line.4290"></a>
<span class="sourceLineNo">4291</span><a name="line.4291"></a>
<span class="sourceLineNo">4292</span> /**<a name="line.4292"></a>
<span class="sourceLineNo">4293</span> * subtract operator<a name="line.4293"></a>
<span class="sourceLineNo">4294</span> * @param a<a name="line.4294"></a>
<span class="sourceLineNo">4295</span> * @param b<a name="line.4295"></a>
<span class="sourceLineNo">4296</span> * @param o output can be null - in which case, a new dataset is created<a name="line.4296"></a>
<span class="sourceLineNo">4297</span> * @return {@code a - b}, subtraction of a by b<a name="line.4297"></a>
<span class="sourceLineNo">4298</span> */<a name="line.4298"></a>
<span class="sourceLineNo">4299</span> public static Dataset subtract(final Object a, final Object b, final Dataset o) {<a name="line.4299"></a>
<span class="sourceLineNo">4300</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.4300"></a>
<span class="sourceLineNo">4301</span> Dataset db = b instanceof Dataset ? (Dataset) b : DatasetFactory.createFromObject(b);<a name="line.4301"></a>
<span class="sourceLineNo">4302</span> BroadcastIterator it = BroadcastIterator.createIterator(da, db, o, true);<a name="line.4302"></a>
<span class="sourceLineNo">4303</span> final Dataset result = it.getOutput();<a name="line.4303"></a>
<span class="sourceLineNo">4304</span> if (!result.isComplex()) {<a name="line.4304"></a>
<span class="sourceLineNo">4305</span> boolean change = false;<a name="line.4305"></a>
<span class="sourceLineNo">4306</span> if (da.isComplex()) {<a name="line.4306"></a>
<span class="sourceLineNo">4307</span> da = da.getRealView();<a name="line.4307"></a>
<span class="sourceLineNo">4308</span> change = true;<a name="line.4308"></a>
<span class="sourceLineNo">4309</span> }<a name="line.4309"></a>
<span class="sourceLineNo">4310</span> if (db.isComplex()) {<a name="line.4310"></a>
<span class="sourceLineNo">4311</span> db = db.getRealView();<a name="line.4311"></a>
<span class="sourceLineNo">4312</span> change = true;<a name="line.4312"></a>
<span class="sourceLineNo">4313</span> }<a name="line.4313"></a>
<span class="sourceLineNo">4314</span> if (change) {<a name="line.4314"></a>
<span class="sourceLineNo">4315</span> it = BroadcastIterator.createIterator(da, db, result, true);<a name="line.4315"></a>
<span class="sourceLineNo">4316</span> }<a name="line.4316"></a>
<span class="sourceLineNo">4317</span> }<a name="line.4317"></a>
<span class="sourceLineNo">4318</span> final int is = result.getElementsPerItem();<a name="line.4318"></a>
<span class="sourceLineNo">4319</span> final int as = da.getElementsPerItem();<a name="line.4319"></a>
<span class="sourceLineNo">4320</span> final int bs = db.getElementsPerItem();<a name="line.4320"></a>
<span class="sourceLineNo">4321</span> final int dt = result.getDType();<a name="line.4321"></a>
<span class="sourceLineNo">4322</span><a name="line.4322"></a>
<span class="sourceLineNo">4323</span> switch(dt) {<a name="line.4323"></a>
<span class="sourceLineNo">4324</span> case Dataset.INT8:<a name="line.4324"></a>
<span class="sourceLineNo">4325</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.4325"></a>
<span class="sourceLineNo">4326</span> if (it.isOutputDouble()) {<a name="line.4326"></a>
<span class="sourceLineNo">4327</span> while (it.hasNext()) {<a name="line.4327"></a>
<span class="sourceLineNo">4328</span> final double iax = it.aDouble;<a name="line.4328"></a>
<span class="sourceLineNo">4329</span> final double ibx = it.bDouble;<a name="line.4329"></a>
<span class="sourceLineNo">4330</span> byte ox;<a name="line.4330"></a>
<span class="sourceLineNo">4331</span> ox = (byte) toLong(iax - ibx);<a name="line.4331"></a>
<span class="sourceLineNo">4332</span> oi8data[it.oIndex] = ox;<a name="line.4332"></a>
<span class="sourceLineNo">4333</span> }<a name="line.4333"></a>
<span class="sourceLineNo">4334</span> } else {<a name="line.4334"></a>
<span class="sourceLineNo">4335</span> while (it.hasNext()) {<a name="line.4335"></a>
<span class="sourceLineNo">4336</span> final long iax = it.aLong;<a name="line.4336"></a>
<span class="sourceLineNo">4337</span> final long ibx = it.bLong;<a name="line.4337"></a>
<span class="sourceLineNo">4338</span> byte ox;<a name="line.4338"></a>
<span class="sourceLineNo">4339</span> ox = (byte) (iax - ibx);<a name="line.4339"></a>
<span class="sourceLineNo">4340</span> oi8data[it.oIndex] = ox;<a name="line.4340"></a>
<span class="sourceLineNo">4341</span> }<a name="line.4341"></a>
<span class="sourceLineNo">4342</span> }<a name="line.4342"></a>
<span class="sourceLineNo">4343</span> break;<a name="line.4343"></a>
<span class="sourceLineNo">4344</span> case Dataset.INT16:<a name="line.4344"></a>
<span class="sourceLineNo">4345</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.4345"></a>
<span class="sourceLineNo">4346</span> if (it.isOutputDouble()) {<a name="line.4346"></a>
<span class="sourceLineNo">4347</span> while (it.hasNext()) {<a name="line.4347"></a>
<span class="sourceLineNo">4348</span> final double iax = it.aDouble;<a name="line.4348"></a>
<span class="sourceLineNo">4349</span> final double ibx = it.bDouble;<a name="line.4349"></a>
<span class="sourceLineNo">4350</span> short ox;<a name="line.4350"></a>
<span class="sourceLineNo">4351</span> ox = (short) toLong(iax - ibx);<a name="line.4351"></a>
<span class="sourceLineNo">4352</span> oi16data[it.oIndex] = ox;<a name="line.4352"></a>
<span class="sourceLineNo">4353</span> }<a name="line.4353"></a>
<span class="sourceLineNo">4354</span> } else {<a name="line.4354"></a>
<span class="sourceLineNo">4355</span> while (it.hasNext()) {<a name="line.4355"></a>
<span class="sourceLineNo">4356</span> final long iax = it.aLong;<a name="line.4356"></a>
<span class="sourceLineNo">4357</span> final long ibx = it.bLong;<a name="line.4357"></a>
<span class="sourceLineNo">4358</span> short ox;<a name="line.4358"></a>
<span class="sourceLineNo">4359</span> ox = (short) (iax - ibx);<a name="line.4359"></a>
<span class="sourceLineNo">4360</span> oi16data[it.oIndex] = ox;<a name="line.4360"></a>
<span class="sourceLineNo">4361</span> }<a name="line.4361"></a>
<span class="sourceLineNo">4362</span> }<a name="line.4362"></a>
<span class="sourceLineNo">4363</span> break;<a name="line.4363"></a>
<span class="sourceLineNo">4364</span> case Dataset.INT64:<a name="line.4364"></a>
<span class="sourceLineNo">4365</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.4365"></a>
<span class="sourceLineNo">4366</span> if (it.isOutputDouble()) {<a name="line.4366"></a>
<span class="sourceLineNo">4367</span> while (it.hasNext()) {<a name="line.4367"></a>
<span class="sourceLineNo">4368</span> final double iax = it.aDouble;<a name="line.4368"></a>
<span class="sourceLineNo">4369</span> final double ibx = it.bDouble;<a name="line.4369"></a>
<span class="sourceLineNo">4370</span> long ox;<a name="line.4370"></a>
<span class="sourceLineNo">4371</span> ox = toLong(iax - ibx);<a name="line.4371"></a>
<span class="sourceLineNo">4372</span> oi64data[it.oIndex] = ox;<a name="line.4372"></a>
<span class="sourceLineNo">4373</span> }<a name="line.4373"></a>
<span class="sourceLineNo">4374</span> } else {<a name="line.4374"></a>
<span class="sourceLineNo">4375</span> while (it.hasNext()) {<a name="line.4375"></a>
<span class="sourceLineNo">4376</span> final long iax = it.aLong;<a name="line.4376"></a>
<span class="sourceLineNo">4377</span> final long ibx = it.bLong;<a name="line.4377"></a>
<span class="sourceLineNo">4378</span> long ox;<a name="line.4378"></a>
<span class="sourceLineNo">4379</span> ox = (iax - ibx);<a name="line.4379"></a>
<span class="sourceLineNo">4380</span> oi64data[it.oIndex] = ox;<a name="line.4380"></a>
<span class="sourceLineNo">4381</span> }<a name="line.4381"></a>
<span class="sourceLineNo">4382</span> }<a name="line.4382"></a>
<span class="sourceLineNo">4383</span> break;<a name="line.4383"></a>
<span class="sourceLineNo">4384</span> case Dataset.INT32:<a name="line.4384"></a>
<span class="sourceLineNo">4385</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.4385"></a>
<span class="sourceLineNo">4386</span> if (it.isOutputDouble()) {<a name="line.4386"></a>
<span class="sourceLineNo">4387</span> while (it.hasNext()) {<a name="line.4387"></a>
<span class="sourceLineNo">4388</span> final double iax = it.aDouble;<a name="line.4388"></a>
<span class="sourceLineNo">4389</span> final double ibx = it.bDouble;<a name="line.4389"></a>
<span class="sourceLineNo">4390</span> int ox;<a name="line.4390"></a>
<span class="sourceLineNo">4391</span> ox = (int) toLong(iax - ibx);<a name="line.4391"></a>
<span class="sourceLineNo">4392</span> oi32data[it.oIndex] = ox;<a name="line.4392"></a>
<span class="sourceLineNo">4393</span> }<a name="line.4393"></a>
<span class="sourceLineNo">4394</span> } else {<a name="line.4394"></a>
<span class="sourceLineNo">4395</span> while (it.hasNext()) {<a name="line.4395"></a>
<span class="sourceLineNo">4396</span> final long iax = it.aLong;<a name="line.4396"></a>
<span class="sourceLineNo">4397</span> final long ibx = it.bLong;<a name="line.4397"></a>
<span class="sourceLineNo">4398</span> int ox;<a name="line.4398"></a>
<span class="sourceLineNo">4399</span> ox = (int) (iax - ibx);<a name="line.4399"></a>
<span class="sourceLineNo">4400</span> oi32data[it.oIndex] = ox;<a name="line.4400"></a>
<span class="sourceLineNo">4401</span> }<a name="line.4401"></a>
<span class="sourceLineNo">4402</span> }<a name="line.4402"></a>
<span class="sourceLineNo">4403</span> break;<a name="line.4403"></a>
<span class="sourceLineNo">4404</span> case Dataset.ARRAYINT8:<a name="line.4404"></a>
<span class="sourceLineNo">4405</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.4405"></a>
<span class="sourceLineNo">4406</span> if (is == 1) {<a name="line.4406"></a>
<span class="sourceLineNo">4407</span> if (it.isOutputDouble()) {<a name="line.4407"></a>
<span class="sourceLineNo">4408</span> while (it.hasNext()) {<a name="line.4408"></a>
<span class="sourceLineNo">4409</span> final double iax = it.aDouble;<a name="line.4409"></a>
<span class="sourceLineNo">4410</span> final double ibx = it.bDouble;<a name="line.4410"></a>
<span class="sourceLineNo">4411</span> byte ox;<a name="line.4411"></a>
<span class="sourceLineNo">4412</span> ox = (byte) toLong(iax - ibx);<a name="line.4412"></a>
<span class="sourceLineNo">4413</span> oai8data[it.oIndex] = ox;<a name="line.4413"></a>
<span class="sourceLineNo">4414</span> }<a name="line.4414"></a>
<span class="sourceLineNo">4415</span> } else {<a name="line.4415"></a>
<span class="sourceLineNo">4416</span> while (it.hasNext()) {<a name="line.4416"></a>
<span class="sourceLineNo">4417</span> final long iax = it.aLong;<a name="line.4417"></a>
<span class="sourceLineNo">4418</span> final long ibx = it.bLong;<a name="line.4418"></a>
<span class="sourceLineNo">4419</span> byte ox;<a name="line.4419"></a>
<span class="sourceLineNo">4420</span> ox = (byte) (iax - ibx);<a name="line.4420"></a>
<span class="sourceLineNo">4421</span> oai8data[it.oIndex] = ox;<a name="line.4421"></a>
<span class="sourceLineNo">4422</span> }<a name="line.4422"></a>
<span class="sourceLineNo">4423</span> }<a name="line.4423"></a>
<span class="sourceLineNo">4424</span> } else if (as &lt; bs) {<a name="line.4424"></a>
<span class="sourceLineNo">4425</span> if (it.isOutputDouble()) {<a name="line.4425"></a>
<span class="sourceLineNo">4426</span> while (it.hasNext()) {<a name="line.4426"></a>
<span class="sourceLineNo">4427</span> final double iax = it.aDouble;<a name="line.4427"></a>
<span class="sourceLineNo">4428</span> double ibx = it.bDouble;<a name="line.4428"></a>
<span class="sourceLineNo">4429</span> byte ox;<a name="line.4429"></a>
<span class="sourceLineNo">4430</span> ox = (byte) toLong(iax - ibx);<a name="line.4430"></a>
<span class="sourceLineNo">4431</span> oai8data[it.oIndex] = ox;<a name="line.4431"></a>
<span class="sourceLineNo">4432</span> for (int j = 1; j &lt; is; j++) {<a name="line.4432"></a>
<span class="sourceLineNo">4433</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.4433"></a>
<span class="sourceLineNo">4434</span> ox = (byte) toLong(iax - ibx);<a name="line.4434"></a>
<span class="sourceLineNo">4435</span> oai8data[it.oIndex + j] = ox;<a name="line.4435"></a>
<span class="sourceLineNo">4436</span> }<a name="line.4436"></a>
<span class="sourceLineNo">4437</span> }<a name="line.4437"></a>
<span class="sourceLineNo">4438</span> } else {<a name="line.4438"></a>
<span class="sourceLineNo">4439</span> while (it.hasNext()) {<a name="line.4439"></a>
<span class="sourceLineNo">4440</span> final long iax = it.aLong;<a name="line.4440"></a>
<span class="sourceLineNo">4441</span> long ibx = it.bLong;<a name="line.4441"></a>
<span class="sourceLineNo">4442</span> byte ox;<a name="line.4442"></a>
<span class="sourceLineNo">4443</span> ox = (byte) (iax - ibx);<a name="line.4443"></a>
<span class="sourceLineNo">4444</span> oai8data[it.oIndex] = ox;<a name="line.4444"></a>
<span class="sourceLineNo">4445</span> for (int j = 1; j &lt; is; j++) {<a name="line.4445"></a>
<span class="sourceLineNo">4446</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.4446"></a>
<span class="sourceLineNo">4447</span> ox = (byte) (iax - ibx);<a name="line.4447"></a>
<span class="sourceLineNo">4448</span> oai8data[it.oIndex + j] = ox;<a name="line.4448"></a>
<span class="sourceLineNo">4449</span> }<a name="line.4449"></a>
<span class="sourceLineNo">4450</span> }<a name="line.4450"></a>
<span class="sourceLineNo">4451</span> }<a name="line.4451"></a>
<span class="sourceLineNo">4452</span> } else if (as &gt; bs) {<a name="line.4452"></a>
<span class="sourceLineNo">4453</span> if (it.isOutputDouble()) {<a name="line.4453"></a>
<span class="sourceLineNo">4454</span> while (it.hasNext()) {<a name="line.4454"></a>
<span class="sourceLineNo">4455</span> double iax = it.aDouble;<a name="line.4455"></a>
<span class="sourceLineNo">4456</span> final double ibx = it.bDouble;<a name="line.4456"></a>
<span class="sourceLineNo">4457</span> byte ox;<a name="line.4457"></a>
<span class="sourceLineNo">4458</span> ox = (byte) toLong(iax - ibx);<a name="line.4458"></a>
<span class="sourceLineNo">4459</span> oai8data[it.oIndex] = ox;<a name="line.4459"></a>
<span class="sourceLineNo">4460</span> for (int j = 1; j &lt; is; j++) {<a name="line.4460"></a>
<span class="sourceLineNo">4461</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.4461"></a>
<span class="sourceLineNo">4462</span> ox = (byte) toLong(iax - ibx);<a name="line.4462"></a>
<span class="sourceLineNo">4463</span> oai8data[it.oIndex + j] = ox;<a name="line.4463"></a>
<span class="sourceLineNo">4464</span> }<a name="line.4464"></a>
<span class="sourceLineNo">4465</span> }<a name="line.4465"></a>
<span class="sourceLineNo">4466</span> } else {<a name="line.4466"></a>
<span class="sourceLineNo">4467</span> while (it.hasNext()) {<a name="line.4467"></a>
<span class="sourceLineNo">4468</span> long iax = it.aLong;<a name="line.4468"></a>
<span class="sourceLineNo">4469</span> final long ibx = it.bLong;<a name="line.4469"></a>
<span class="sourceLineNo">4470</span> byte ox;<a name="line.4470"></a>
<span class="sourceLineNo">4471</span> ox = (byte) (iax - ibx);<a name="line.4471"></a>
<span class="sourceLineNo">4472</span> oai8data[it.oIndex] = ox;<a name="line.4472"></a>
<span class="sourceLineNo">4473</span> for (int j = 1; j &lt; is; j++) {<a name="line.4473"></a>
<span class="sourceLineNo">4474</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.4474"></a>
<span class="sourceLineNo">4475</span> ox = (byte) (iax - ibx);<a name="line.4475"></a>
<span class="sourceLineNo">4476</span> oai8data[it.oIndex + j] = ox;<a name="line.4476"></a>
<span class="sourceLineNo">4477</span> }<a name="line.4477"></a>
<span class="sourceLineNo">4478</span> }<a name="line.4478"></a>
<span class="sourceLineNo">4479</span> }<a name="line.4479"></a>
<span class="sourceLineNo">4480</span> } else if (as == 1) {<a name="line.4480"></a>
<span class="sourceLineNo">4481</span> if (it.isOutputDouble()) {<a name="line.4481"></a>
<span class="sourceLineNo">4482</span> while (it.hasNext()) {<a name="line.4482"></a>
<span class="sourceLineNo">4483</span> final double iax = it.aDouble;<a name="line.4483"></a>
<span class="sourceLineNo">4484</span> final double ibx = it.bDouble;<a name="line.4484"></a>
<span class="sourceLineNo">4485</span> byte ox;<a name="line.4485"></a>
<span class="sourceLineNo">4486</span> ox = (byte) toLong(iax - ibx);<a name="line.4486"></a>
<span class="sourceLineNo">4487</span> for (int j = 0; j &lt; is; j++) {<a name="line.4487"></a>
<span class="sourceLineNo">4488</span> oai8data[it.oIndex + j] = ox;<a name="line.4488"></a>
<span class="sourceLineNo">4489</span> }<a name="line.4489"></a>
<span class="sourceLineNo">4490</span> }<a name="line.4490"></a>
<span class="sourceLineNo">4491</span> } else {<a name="line.4491"></a>
<span class="sourceLineNo">4492</span> while (it.hasNext()) {<a name="line.4492"></a>
<span class="sourceLineNo">4493</span> final long iax = it.aLong;<a name="line.4493"></a>
<span class="sourceLineNo">4494</span> final long ibx = it.bLong;<a name="line.4494"></a>
<span class="sourceLineNo">4495</span> byte ox;<a name="line.4495"></a>
<span class="sourceLineNo">4496</span> ox = (byte) (iax - ibx);<a name="line.4496"></a>
<span class="sourceLineNo">4497</span> for (int j = 0; j &lt; is; j++) {<a name="line.4497"></a>
<span class="sourceLineNo">4498</span> oai8data[it.oIndex + j] = ox;<a name="line.4498"></a>
<span class="sourceLineNo">4499</span> }<a name="line.4499"></a>
<span class="sourceLineNo">4500</span> }<a name="line.4500"></a>
<span class="sourceLineNo">4501</span> }<a name="line.4501"></a>
<span class="sourceLineNo">4502</span> } else {<a name="line.4502"></a>
<span class="sourceLineNo">4503</span> if (it.isOutputDouble()) {<a name="line.4503"></a>
<span class="sourceLineNo">4504</span> while (it.hasNext()) {<a name="line.4504"></a>
<span class="sourceLineNo">4505</span> double iax = it.aDouble;<a name="line.4505"></a>
<span class="sourceLineNo">4506</span> double ibx = it.bDouble;<a name="line.4506"></a>
<span class="sourceLineNo">4507</span> byte ox;<a name="line.4507"></a>
<span class="sourceLineNo">4508</span> ox = (byte) toLong(iax - ibx);<a name="line.4508"></a>
<span class="sourceLineNo">4509</span> oai8data[it.oIndex] = ox;<a name="line.4509"></a>
<span class="sourceLineNo">4510</span> for (int j = 1; j &lt; is; j++) {<a name="line.4510"></a>
<span class="sourceLineNo">4511</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.4511"></a>
<span class="sourceLineNo">4512</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.4512"></a>
<span class="sourceLineNo">4513</span> ox = (byte) toLong(iax - ibx);<a name="line.4513"></a>
<span class="sourceLineNo">4514</span> oai8data[it.oIndex + j] = ox;<a name="line.4514"></a>
<span class="sourceLineNo">4515</span> }<a name="line.4515"></a>
<span class="sourceLineNo">4516</span> }<a name="line.4516"></a>
<span class="sourceLineNo">4517</span> } else {<a name="line.4517"></a>
<span class="sourceLineNo">4518</span> while (it.hasNext()) {<a name="line.4518"></a>
<span class="sourceLineNo">4519</span> long iax = it.aLong;<a name="line.4519"></a>
<span class="sourceLineNo">4520</span> long ibx = it.bLong;<a name="line.4520"></a>
<span class="sourceLineNo">4521</span> byte ox;<a name="line.4521"></a>
<span class="sourceLineNo">4522</span> ox = (byte) (iax - ibx);<a name="line.4522"></a>
<span class="sourceLineNo">4523</span> oai8data[it.oIndex] = ox;<a name="line.4523"></a>
<span class="sourceLineNo">4524</span> for (int j = 1; j &lt; is; j++) {<a name="line.4524"></a>
<span class="sourceLineNo">4525</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.4525"></a>
<span class="sourceLineNo">4526</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.4526"></a>
<span class="sourceLineNo">4527</span> ox = (byte) (iax - ibx);<a name="line.4527"></a>
<span class="sourceLineNo">4528</span> oai8data[it.oIndex + j] = ox;<a name="line.4528"></a>
<span class="sourceLineNo">4529</span> }<a name="line.4529"></a>
<span class="sourceLineNo">4530</span> }<a name="line.4530"></a>
<span class="sourceLineNo">4531</span> }<a name="line.4531"></a>
<span class="sourceLineNo">4532</span> }<a name="line.4532"></a>
<span class="sourceLineNo">4533</span> break;<a name="line.4533"></a>
<span class="sourceLineNo">4534</span> case Dataset.ARRAYINT16:<a name="line.4534"></a>
<span class="sourceLineNo">4535</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.4535"></a>
<span class="sourceLineNo">4536</span> if (is == 1) {<a name="line.4536"></a>
<span class="sourceLineNo">4537</span> if (it.isOutputDouble()) {<a name="line.4537"></a>
<span class="sourceLineNo">4538</span> while (it.hasNext()) {<a name="line.4538"></a>
<span class="sourceLineNo">4539</span> final double iax = it.aDouble;<a name="line.4539"></a>
<span class="sourceLineNo">4540</span> final double ibx = it.bDouble;<a name="line.4540"></a>
<span class="sourceLineNo">4541</span> short ox;<a name="line.4541"></a>
<span class="sourceLineNo">4542</span> ox = (short) toLong(iax - ibx);<a name="line.4542"></a>
<span class="sourceLineNo">4543</span> oai16data[it.oIndex] = ox;<a name="line.4543"></a>
<span class="sourceLineNo">4544</span> }<a name="line.4544"></a>
<span class="sourceLineNo">4545</span> } else {<a name="line.4545"></a>
<span class="sourceLineNo">4546</span> while (it.hasNext()) {<a name="line.4546"></a>
<span class="sourceLineNo">4547</span> final long iax = it.aLong;<a name="line.4547"></a>
<span class="sourceLineNo">4548</span> final long ibx = it.bLong;<a name="line.4548"></a>
<span class="sourceLineNo">4549</span> short ox;<a name="line.4549"></a>
<span class="sourceLineNo">4550</span> ox = (short) (iax - ibx);<a name="line.4550"></a>
<span class="sourceLineNo">4551</span> oai16data[it.oIndex] = ox;<a name="line.4551"></a>
<span class="sourceLineNo">4552</span> }<a name="line.4552"></a>
<span class="sourceLineNo">4553</span> }<a name="line.4553"></a>
<span class="sourceLineNo">4554</span> } else if (as &lt; bs) {<a name="line.4554"></a>
<span class="sourceLineNo">4555</span> if (it.isOutputDouble()) {<a name="line.4555"></a>
<span class="sourceLineNo">4556</span> while (it.hasNext()) {<a name="line.4556"></a>
<span class="sourceLineNo">4557</span> final double iax = it.aDouble;<a name="line.4557"></a>
<span class="sourceLineNo">4558</span> double ibx = it.bDouble;<a name="line.4558"></a>
<span class="sourceLineNo">4559</span> short ox;<a name="line.4559"></a>
<span class="sourceLineNo">4560</span> ox = (short) toLong(iax - ibx);<a name="line.4560"></a>
<span class="sourceLineNo">4561</span> oai16data[it.oIndex] = ox;<a name="line.4561"></a>
<span class="sourceLineNo">4562</span> for (int j = 1; j &lt; is; j++) {<a name="line.4562"></a>
<span class="sourceLineNo">4563</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.4563"></a>
<span class="sourceLineNo">4564</span> ox = (short) toLong(iax - ibx);<a name="line.4564"></a>
<span class="sourceLineNo">4565</span> oai16data[it.oIndex + j] = ox;<a name="line.4565"></a>
<span class="sourceLineNo">4566</span> }<a name="line.4566"></a>
<span class="sourceLineNo">4567</span> }<a name="line.4567"></a>
<span class="sourceLineNo">4568</span> } else {<a name="line.4568"></a>
<span class="sourceLineNo">4569</span> while (it.hasNext()) {<a name="line.4569"></a>
<span class="sourceLineNo">4570</span> final long iax = it.aLong;<a name="line.4570"></a>
<span class="sourceLineNo">4571</span> long ibx = it.bLong;<a name="line.4571"></a>
<span class="sourceLineNo">4572</span> short ox;<a name="line.4572"></a>
<span class="sourceLineNo">4573</span> ox = (short) (iax - ibx);<a name="line.4573"></a>
<span class="sourceLineNo">4574</span> oai16data[it.oIndex] = ox;<a name="line.4574"></a>
<span class="sourceLineNo">4575</span> for (int j = 1; j &lt; is; j++) {<a name="line.4575"></a>
<span class="sourceLineNo">4576</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.4576"></a>
<span class="sourceLineNo">4577</span> ox = (short) (iax - ibx);<a name="line.4577"></a>
<span class="sourceLineNo">4578</span> oai16data[it.oIndex + j] = ox;<a name="line.4578"></a>
<span class="sourceLineNo">4579</span> }<a name="line.4579"></a>
<span class="sourceLineNo">4580</span> }<a name="line.4580"></a>
<span class="sourceLineNo">4581</span> }<a name="line.4581"></a>
<span class="sourceLineNo">4582</span> } else if (as &gt; bs) {<a name="line.4582"></a>
<span class="sourceLineNo">4583</span> if (it.isOutputDouble()) {<a name="line.4583"></a>
<span class="sourceLineNo">4584</span> while (it.hasNext()) {<a name="line.4584"></a>
<span class="sourceLineNo">4585</span> double iax = it.aDouble;<a name="line.4585"></a>
<span class="sourceLineNo">4586</span> final double ibx = it.bDouble;<a name="line.4586"></a>
<span class="sourceLineNo">4587</span> short ox;<a name="line.4587"></a>
<span class="sourceLineNo">4588</span> ox = (short) toLong(iax - ibx);<a name="line.4588"></a>
<span class="sourceLineNo">4589</span> oai16data[it.oIndex] = ox;<a name="line.4589"></a>
<span class="sourceLineNo">4590</span> for (int j = 1; j &lt; is; j++) {<a name="line.4590"></a>
<span class="sourceLineNo">4591</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.4591"></a>
<span class="sourceLineNo">4592</span> ox = (short) toLong(iax - ibx);<a name="line.4592"></a>
<span class="sourceLineNo">4593</span> oai16data[it.oIndex + j] = ox;<a name="line.4593"></a>
<span class="sourceLineNo">4594</span> }<a name="line.4594"></a>
<span class="sourceLineNo">4595</span> }<a name="line.4595"></a>
<span class="sourceLineNo">4596</span> } else {<a name="line.4596"></a>
<span class="sourceLineNo">4597</span> while (it.hasNext()) {<a name="line.4597"></a>
<span class="sourceLineNo">4598</span> long iax = it.aLong;<a name="line.4598"></a>
<span class="sourceLineNo">4599</span> final long ibx = it.bLong;<a name="line.4599"></a>
<span class="sourceLineNo">4600</span> short ox;<a name="line.4600"></a>
<span class="sourceLineNo">4601</span> ox = (short) (iax - ibx);<a name="line.4601"></a>
<span class="sourceLineNo">4602</span> oai16data[it.oIndex] = ox;<a name="line.4602"></a>
<span class="sourceLineNo">4603</span> for (int j = 1; j &lt; is; j++) {<a name="line.4603"></a>
<span class="sourceLineNo">4604</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.4604"></a>
<span class="sourceLineNo">4605</span> ox = (short) (iax - ibx);<a name="line.4605"></a>
<span class="sourceLineNo">4606</span> oai16data[it.oIndex + j] = ox;<a name="line.4606"></a>
<span class="sourceLineNo">4607</span> }<a name="line.4607"></a>
<span class="sourceLineNo">4608</span> }<a name="line.4608"></a>
<span class="sourceLineNo">4609</span> }<a name="line.4609"></a>
<span class="sourceLineNo">4610</span> } else if (as == 1) {<a name="line.4610"></a>
<span class="sourceLineNo">4611</span> if (it.isOutputDouble()) {<a name="line.4611"></a>
<span class="sourceLineNo">4612</span> while (it.hasNext()) {<a name="line.4612"></a>
<span class="sourceLineNo">4613</span> final double iax = it.aDouble;<a name="line.4613"></a>
<span class="sourceLineNo">4614</span> final double ibx = it.bDouble;<a name="line.4614"></a>
<span class="sourceLineNo">4615</span> short ox;<a name="line.4615"></a>
<span class="sourceLineNo">4616</span> ox = (short) toLong(iax - ibx);<a name="line.4616"></a>
<span class="sourceLineNo">4617</span> for (int j = 0; j &lt; is; j++) {<a name="line.4617"></a>
<span class="sourceLineNo">4618</span> oai16data[it.oIndex + j] = ox;<a name="line.4618"></a>
<span class="sourceLineNo">4619</span> }<a name="line.4619"></a>
<span class="sourceLineNo">4620</span> }<a name="line.4620"></a>
<span class="sourceLineNo">4621</span> } else {<a name="line.4621"></a>
<span class="sourceLineNo">4622</span> while (it.hasNext()) {<a name="line.4622"></a>
<span class="sourceLineNo">4623</span> final long iax = it.aLong;<a name="line.4623"></a>
<span class="sourceLineNo">4624</span> final long ibx = it.bLong;<a name="line.4624"></a>
<span class="sourceLineNo">4625</span> short ox;<a name="line.4625"></a>
<span class="sourceLineNo">4626</span> ox = (short) (iax - ibx);<a name="line.4626"></a>
<span class="sourceLineNo">4627</span> for (int j = 0; j &lt; is; j++) {<a name="line.4627"></a>
<span class="sourceLineNo">4628</span> oai16data[it.oIndex + j] = ox;<a name="line.4628"></a>
<span class="sourceLineNo">4629</span> }<a name="line.4629"></a>
<span class="sourceLineNo">4630</span> }<a name="line.4630"></a>
<span class="sourceLineNo">4631</span> }<a name="line.4631"></a>
<span class="sourceLineNo">4632</span> } else {<a name="line.4632"></a>
<span class="sourceLineNo">4633</span> if (it.isOutputDouble()) {<a name="line.4633"></a>
<span class="sourceLineNo">4634</span> while (it.hasNext()) {<a name="line.4634"></a>
<span class="sourceLineNo">4635</span> double iax = it.aDouble;<a name="line.4635"></a>
<span class="sourceLineNo">4636</span> double ibx = it.bDouble;<a name="line.4636"></a>
<span class="sourceLineNo">4637</span> short ox;<a name="line.4637"></a>
<span class="sourceLineNo">4638</span> ox = (short) toLong(iax - ibx);<a name="line.4638"></a>
<span class="sourceLineNo">4639</span> oai16data[it.oIndex] = ox;<a name="line.4639"></a>
<span class="sourceLineNo">4640</span> for (int j = 1; j &lt; is; j++) {<a name="line.4640"></a>
<span class="sourceLineNo">4641</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.4641"></a>
<span class="sourceLineNo">4642</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.4642"></a>
<span class="sourceLineNo">4643</span> ox = (short) toLong(iax - ibx);<a name="line.4643"></a>
<span class="sourceLineNo">4644</span> oai16data[it.oIndex + j] = ox;<a name="line.4644"></a>
<span class="sourceLineNo">4645</span> }<a name="line.4645"></a>
<span class="sourceLineNo">4646</span> }<a name="line.4646"></a>
<span class="sourceLineNo">4647</span> } else {<a name="line.4647"></a>
<span class="sourceLineNo">4648</span> while (it.hasNext()) {<a name="line.4648"></a>
<span class="sourceLineNo">4649</span> long iax = it.aLong;<a name="line.4649"></a>
<span class="sourceLineNo">4650</span> long ibx = it.bLong;<a name="line.4650"></a>
<span class="sourceLineNo">4651</span> short ox;<a name="line.4651"></a>
<span class="sourceLineNo">4652</span> ox = (short) (iax - ibx);<a name="line.4652"></a>
<span class="sourceLineNo">4653</span> oai16data[it.oIndex] = ox;<a name="line.4653"></a>
<span class="sourceLineNo">4654</span> for (int j = 1; j &lt; is; j++) {<a name="line.4654"></a>
<span class="sourceLineNo">4655</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.4655"></a>
<span class="sourceLineNo">4656</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.4656"></a>
<span class="sourceLineNo">4657</span> ox = (short) (iax - ibx);<a name="line.4657"></a>
<span class="sourceLineNo">4658</span> oai16data[it.oIndex + j] = ox;<a name="line.4658"></a>
<span class="sourceLineNo">4659</span> }<a name="line.4659"></a>
<span class="sourceLineNo">4660</span> }<a name="line.4660"></a>
<span class="sourceLineNo">4661</span> }<a name="line.4661"></a>
<span class="sourceLineNo">4662</span> }<a name="line.4662"></a>
<span class="sourceLineNo">4663</span> break;<a name="line.4663"></a>
<span class="sourceLineNo">4664</span> case Dataset.ARRAYINT64:<a name="line.4664"></a>
<span class="sourceLineNo">4665</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.4665"></a>
<span class="sourceLineNo">4666</span> if (is == 1) {<a name="line.4666"></a>
<span class="sourceLineNo">4667</span> if (it.isOutputDouble()) {<a name="line.4667"></a>
<span class="sourceLineNo">4668</span> while (it.hasNext()) {<a name="line.4668"></a>
<span class="sourceLineNo">4669</span> final double iax = it.aDouble;<a name="line.4669"></a>
<span class="sourceLineNo">4670</span> final double ibx = it.bDouble;<a name="line.4670"></a>
<span class="sourceLineNo">4671</span> long ox;<a name="line.4671"></a>
<span class="sourceLineNo">4672</span> ox = toLong(iax - ibx);<a name="line.4672"></a>
<span class="sourceLineNo">4673</span> oai64data[it.oIndex] = ox;<a name="line.4673"></a>
<span class="sourceLineNo">4674</span> }<a name="line.4674"></a>
<span class="sourceLineNo">4675</span> } else {<a name="line.4675"></a>
<span class="sourceLineNo">4676</span> while (it.hasNext()) {<a name="line.4676"></a>
<span class="sourceLineNo">4677</span> final long iax = it.aLong;<a name="line.4677"></a>
<span class="sourceLineNo">4678</span> final long ibx = it.bLong;<a name="line.4678"></a>
<span class="sourceLineNo">4679</span> long ox;<a name="line.4679"></a>
<span class="sourceLineNo">4680</span> ox = (iax - ibx);<a name="line.4680"></a>
<span class="sourceLineNo">4681</span> oai64data[it.oIndex] = ox;<a name="line.4681"></a>
<span class="sourceLineNo">4682</span> }<a name="line.4682"></a>
<span class="sourceLineNo">4683</span> }<a name="line.4683"></a>
<span class="sourceLineNo">4684</span> } else if (as &lt; bs) {<a name="line.4684"></a>
<span class="sourceLineNo">4685</span> if (it.isOutputDouble()) {<a name="line.4685"></a>
<span class="sourceLineNo">4686</span> while (it.hasNext()) {<a name="line.4686"></a>
<span class="sourceLineNo">4687</span> final double iax = it.aDouble;<a name="line.4687"></a>
<span class="sourceLineNo">4688</span> double ibx = it.bDouble;<a name="line.4688"></a>
<span class="sourceLineNo">4689</span> long ox;<a name="line.4689"></a>
<span class="sourceLineNo">4690</span> ox = toLong(iax - ibx);<a name="line.4690"></a>
<span class="sourceLineNo">4691</span> oai64data[it.oIndex] = ox;<a name="line.4691"></a>
<span class="sourceLineNo">4692</span> for (int j = 1; j &lt; is; j++) {<a name="line.4692"></a>
<span class="sourceLineNo">4693</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.4693"></a>
<span class="sourceLineNo">4694</span> ox = toLong(iax - ibx);<a name="line.4694"></a>
<span class="sourceLineNo">4695</span> oai64data[it.oIndex + j] = ox;<a name="line.4695"></a>
<span class="sourceLineNo">4696</span> }<a name="line.4696"></a>
<span class="sourceLineNo">4697</span> }<a name="line.4697"></a>
<span class="sourceLineNo">4698</span> } else {<a name="line.4698"></a>
<span class="sourceLineNo">4699</span> while (it.hasNext()) {<a name="line.4699"></a>
<span class="sourceLineNo">4700</span> final long iax = it.aLong;<a name="line.4700"></a>
<span class="sourceLineNo">4701</span> long ibx = it.bLong;<a name="line.4701"></a>
<span class="sourceLineNo">4702</span> long ox;<a name="line.4702"></a>
<span class="sourceLineNo">4703</span> ox = (iax - ibx);<a name="line.4703"></a>
<span class="sourceLineNo">4704</span> oai64data[it.oIndex] = ox;<a name="line.4704"></a>
<span class="sourceLineNo">4705</span> for (int j = 1; j &lt; is; j++) {<a name="line.4705"></a>
<span class="sourceLineNo">4706</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.4706"></a>
<span class="sourceLineNo">4707</span> ox = (iax - ibx);<a name="line.4707"></a>
<span class="sourceLineNo">4708</span> oai64data[it.oIndex + j] = ox;<a name="line.4708"></a>
<span class="sourceLineNo">4709</span> }<a name="line.4709"></a>
<span class="sourceLineNo">4710</span> }<a name="line.4710"></a>
<span class="sourceLineNo">4711</span> }<a name="line.4711"></a>
<span class="sourceLineNo">4712</span> } else if (as &gt; bs) {<a name="line.4712"></a>
<span class="sourceLineNo">4713</span> if (it.isOutputDouble()) {<a name="line.4713"></a>
<span class="sourceLineNo">4714</span> while (it.hasNext()) {<a name="line.4714"></a>
<span class="sourceLineNo">4715</span> double iax = it.aDouble;<a name="line.4715"></a>
<span class="sourceLineNo">4716</span> final double ibx = it.bDouble;<a name="line.4716"></a>
<span class="sourceLineNo">4717</span> long ox;<a name="line.4717"></a>
<span class="sourceLineNo">4718</span> ox = toLong(iax - ibx);<a name="line.4718"></a>
<span class="sourceLineNo">4719</span> oai64data[it.oIndex] = ox;<a name="line.4719"></a>
<span class="sourceLineNo">4720</span> for (int j = 1; j &lt; is; j++) {<a name="line.4720"></a>
<span class="sourceLineNo">4721</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.4721"></a>
<span class="sourceLineNo">4722</span> ox = toLong(iax - ibx);<a name="line.4722"></a>
<span class="sourceLineNo">4723</span> oai64data[it.oIndex + j] = ox;<a name="line.4723"></a>
<span class="sourceLineNo">4724</span> }<a name="line.4724"></a>
<span class="sourceLineNo">4725</span> }<a name="line.4725"></a>
<span class="sourceLineNo">4726</span> } else {<a name="line.4726"></a>
<span class="sourceLineNo">4727</span> while (it.hasNext()) {<a name="line.4727"></a>
<span class="sourceLineNo">4728</span> long iax = it.aLong;<a name="line.4728"></a>
<span class="sourceLineNo">4729</span> final long ibx = it.bLong;<a name="line.4729"></a>
<span class="sourceLineNo">4730</span> long ox;<a name="line.4730"></a>
<span class="sourceLineNo">4731</span> ox = (iax - ibx);<a name="line.4731"></a>
<span class="sourceLineNo">4732</span> oai64data[it.oIndex] = ox;<a name="line.4732"></a>
<span class="sourceLineNo">4733</span> for (int j = 1; j &lt; is; j++) {<a name="line.4733"></a>
<span class="sourceLineNo">4734</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.4734"></a>
<span class="sourceLineNo">4735</span> ox = (iax - ibx);<a name="line.4735"></a>
<span class="sourceLineNo">4736</span> oai64data[it.oIndex + j] = ox;<a name="line.4736"></a>
<span class="sourceLineNo">4737</span> }<a name="line.4737"></a>
<span class="sourceLineNo">4738</span> }<a name="line.4738"></a>
<span class="sourceLineNo">4739</span> }<a name="line.4739"></a>
<span class="sourceLineNo">4740</span> } else if (as == 1) {<a name="line.4740"></a>
<span class="sourceLineNo">4741</span> if (it.isOutputDouble()) {<a name="line.4741"></a>
<span class="sourceLineNo">4742</span> while (it.hasNext()) {<a name="line.4742"></a>
<span class="sourceLineNo">4743</span> final double iax = it.aDouble;<a name="line.4743"></a>
<span class="sourceLineNo">4744</span> final double ibx = it.bDouble;<a name="line.4744"></a>
<span class="sourceLineNo">4745</span> long ox;<a name="line.4745"></a>
<span class="sourceLineNo">4746</span> ox = toLong(iax - ibx);<a name="line.4746"></a>
<span class="sourceLineNo">4747</span> for (int j = 0; j &lt; is; j++) {<a name="line.4747"></a>
<span class="sourceLineNo">4748</span> oai64data[it.oIndex + j] = ox;<a name="line.4748"></a>
<span class="sourceLineNo">4749</span> }<a name="line.4749"></a>
<span class="sourceLineNo">4750</span> }<a name="line.4750"></a>
<span class="sourceLineNo">4751</span> } else {<a name="line.4751"></a>
<span class="sourceLineNo">4752</span> while (it.hasNext()) {<a name="line.4752"></a>
<span class="sourceLineNo">4753</span> final long iax = it.aLong;<a name="line.4753"></a>
<span class="sourceLineNo">4754</span> final long ibx = it.bLong;<a name="line.4754"></a>
<span class="sourceLineNo">4755</span> long ox;<a name="line.4755"></a>
<span class="sourceLineNo">4756</span> ox = (iax - ibx);<a name="line.4756"></a>
<span class="sourceLineNo">4757</span> for (int j = 0; j &lt; is; j++) {<a name="line.4757"></a>
<span class="sourceLineNo">4758</span> oai64data[it.oIndex + j] = ox;<a name="line.4758"></a>
<span class="sourceLineNo">4759</span> }<a name="line.4759"></a>
<span class="sourceLineNo">4760</span> }<a name="line.4760"></a>
<span class="sourceLineNo">4761</span> }<a name="line.4761"></a>
<span class="sourceLineNo">4762</span> } else {<a name="line.4762"></a>
<span class="sourceLineNo">4763</span> if (it.isOutputDouble()) {<a name="line.4763"></a>
<span class="sourceLineNo">4764</span> while (it.hasNext()) {<a name="line.4764"></a>
<span class="sourceLineNo">4765</span> double iax = it.aDouble;<a name="line.4765"></a>
<span class="sourceLineNo">4766</span> double ibx = it.bDouble;<a name="line.4766"></a>
<span class="sourceLineNo">4767</span> long ox;<a name="line.4767"></a>
<span class="sourceLineNo">4768</span> ox = toLong(iax - ibx);<a name="line.4768"></a>
<span class="sourceLineNo">4769</span> oai64data[it.oIndex] = ox;<a name="line.4769"></a>
<span class="sourceLineNo">4770</span> for (int j = 1; j &lt; is; j++) {<a name="line.4770"></a>
<span class="sourceLineNo">4771</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.4771"></a>
<span class="sourceLineNo">4772</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.4772"></a>
<span class="sourceLineNo">4773</span> ox = toLong(iax - ibx);<a name="line.4773"></a>
<span class="sourceLineNo">4774</span> oai64data[it.oIndex + j] = ox;<a name="line.4774"></a>
<span class="sourceLineNo">4775</span> }<a name="line.4775"></a>
<span class="sourceLineNo">4776</span> }<a name="line.4776"></a>
<span class="sourceLineNo">4777</span> } else {<a name="line.4777"></a>
<span class="sourceLineNo">4778</span> while (it.hasNext()) {<a name="line.4778"></a>
<span class="sourceLineNo">4779</span> long iax = it.aLong;<a name="line.4779"></a>
<span class="sourceLineNo">4780</span> long ibx = it.bLong;<a name="line.4780"></a>
<span class="sourceLineNo">4781</span> long ox;<a name="line.4781"></a>
<span class="sourceLineNo">4782</span> ox = (iax - ibx);<a name="line.4782"></a>
<span class="sourceLineNo">4783</span> oai64data[it.oIndex] = ox;<a name="line.4783"></a>
<span class="sourceLineNo">4784</span> for (int j = 1; j &lt; is; j++) {<a name="line.4784"></a>
<span class="sourceLineNo">4785</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.4785"></a>
<span class="sourceLineNo">4786</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.4786"></a>
<span class="sourceLineNo">4787</span> ox = (iax - ibx);<a name="line.4787"></a>
<span class="sourceLineNo">4788</span> oai64data[it.oIndex + j] = ox;<a name="line.4788"></a>
<span class="sourceLineNo">4789</span> }<a name="line.4789"></a>
<span class="sourceLineNo">4790</span> }<a name="line.4790"></a>
<span class="sourceLineNo">4791</span> }<a name="line.4791"></a>
<span class="sourceLineNo">4792</span> }<a name="line.4792"></a>
<span class="sourceLineNo">4793</span> break;<a name="line.4793"></a>
<span class="sourceLineNo">4794</span> case Dataset.ARRAYINT32:<a name="line.4794"></a>
<span class="sourceLineNo">4795</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.4795"></a>
<span class="sourceLineNo">4796</span> if (is == 1) {<a name="line.4796"></a>
<span class="sourceLineNo">4797</span> if (it.isOutputDouble()) {<a name="line.4797"></a>
<span class="sourceLineNo">4798</span> while (it.hasNext()) {<a name="line.4798"></a>
<span class="sourceLineNo">4799</span> final double iax = it.aDouble;<a name="line.4799"></a>
<span class="sourceLineNo">4800</span> final double ibx = it.bDouble;<a name="line.4800"></a>
<span class="sourceLineNo">4801</span> int ox;<a name="line.4801"></a>
<span class="sourceLineNo">4802</span> ox = (int) toLong(iax - ibx);<a name="line.4802"></a>
<span class="sourceLineNo">4803</span> oai32data[it.oIndex] = ox;<a name="line.4803"></a>
<span class="sourceLineNo">4804</span> }<a name="line.4804"></a>
<span class="sourceLineNo">4805</span> } else {<a name="line.4805"></a>
<span class="sourceLineNo">4806</span> while (it.hasNext()) {<a name="line.4806"></a>
<span class="sourceLineNo">4807</span> final long iax = it.aLong;<a name="line.4807"></a>
<span class="sourceLineNo">4808</span> final long ibx = it.bLong;<a name="line.4808"></a>
<span class="sourceLineNo">4809</span> int ox;<a name="line.4809"></a>
<span class="sourceLineNo">4810</span> ox = (int) (iax - ibx);<a name="line.4810"></a>
<span class="sourceLineNo">4811</span> oai32data[it.oIndex] = ox;<a name="line.4811"></a>
<span class="sourceLineNo">4812</span> }<a name="line.4812"></a>
<span class="sourceLineNo">4813</span> }<a name="line.4813"></a>
<span class="sourceLineNo">4814</span> } else if (as &lt; bs) {<a name="line.4814"></a>
<span class="sourceLineNo">4815</span> if (it.isOutputDouble()) {<a name="line.4815"></a>
<span class="sourceLineNo">4816</span> while (it.hasNext()) {<a name="line.4816"></a>
<span class="sourceLineNo">4817</span> final double iax = it.aDouble;<a name="line.4817"></a>
<span class="sourceLineNo">4818</span> double ibx = it.bDouble;<a name="line.4818"></a>
<span class="sourceLineNo">4819</span> int ox;<a name="line.4819"></a>
<span class="sourceLineNo">4820</span> ox = (int) toLong(iax - ibx);<a name="line.4820"></a>
<span class="sourceLineNo">4821</span> oai32data[it.oIndex] = ox;<a name="line.4821"></a>
<span class="sourceLineNo">4822</span> for (int j = 1; j &lt; is; j++) {<a name="line.4822"></a>
<span class="sourceLineNo">4823</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.4823"></a>
<span class="sourceLineNo">4824</span> ox = (int) toLong(iax - ibx);<a name="line.4824"></a>
<span class="sourceLineNo">4825</span> oai32data[it.oIndex + j] = ox;<a name="line.4825"></a>
<span class="sourceLineNo">4826</span> }<a name="line.4826"></a>
<span class="sourceLineNo">4827</span> }<a name="line.4827"></a>
<span class="sourceLineNo">4828</span> } else {<a name="line.4828"></a>
<span class="sourceLineNo">4829</span> while (it.hasNext()) {<a name="line.4829"></a>
<span class="sourceLineNo">4830</span> final long iax = it.aLong;<a name="line.4830"></a>
<span class="sourceLineNo">4831</span> long ibx = it.bLong;<a name="line.4831"></a>
<span class="sourceLineNo">4832</span> int ox;<a name="line.4832"></a>
<span class="sourceLineNo">4833</span> ox = (int) (iax - ibx);<a name="line.4833"></a>
<span class="sourceLineNo">4834</span> oai32data[it.oIndex] = ox;<a name="line.4834"></a>
<span class="sourceLineNo">4835</span> for (int j = 1; j &lt; is; j++) {<a name="line.4835"></a>
<span class="sourceLineNo">4836</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.4836"></a>
<span class="sourceLineNo">4837</span> ox = (int) (iax - ibx);<a name="line.4837"></a>
<span class="sourceLineNo">4838</span> oai32data[it.oIndex + j] = ox;<a name="line.4838"></a>
<span class="sourceLineNo">4839</span> }<a name="line.4839"></a>
<span class="sourceLineNo">4840</span> }<a name="line.4840"></a>
<span class="sourceLineNo">4841</span> }<a name="line.4841"></a>
<span class="sourceLineNo">4842</span> } else if (as &gt; bs) {<a name="line.4842"></a>
<span class="sourceLineNo">4843</span> if (it.isOutputDouble()) {<a name="line.4843"></a>
<span class="sourceLineNo">4844</span> while (it.hasNext()) {<a name="line.4844"></a>
<span class="sourceLineNo">4845</span> double iax = it.aDouble;<a name="line.4845"></a>
<span class="sourceLineNo">4846</span> final double ibx = it.bDouble;<a name="line.4846"></a>
<span class="sourceLineNo">4847</span> int ox;<a name="line.4847"></a>
<span class="sourceLineNo">4848</span> ox = (int) toLong(iax - ibx);<a name="line.4848"></a>
<span class="sourceLineNo">4849</span> oai32data[it.oIndex] = ox;<a name="line.4849"></a>
<span class="sourceLineNo">4850</span> for (int j = 1; j &lt; is; j++) {<a name="line.4850"></a>
<span class="sourceLineNo">4851</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.4851"></a>
<span class="sourceLineNo">4852</span> ox = (int) toLong(iax - ibx);<a name="line.4852"></a>
<span class="sourceLineNo">4853</span> oai32data[it.oIndex + j] = ox;<a name="line.4853"></a>
<span class="sourceLineNo">4854</span> }<a name="line.4854"></a>
<span class="sourceLineNo">4855</span> }<a name="line.4855"></a>
<span class="sourceLineNo">4856</span> } else {<a name="line.4856"></a>
<span class="sourceLineNo">4857</span> while (it.hasNext()) {<a name="line.4857"></a>
<span class="sourceLineNo">4858</span> long iax = it.aLong;<a name="line.4858"></a>
<span class="sourceLineNo">4859</span> final long ibx = it.bLong;<a name="line.4859"></a>
<span class="sourceLineNo">4860</span> int ox;<a name="line.4860"></a>
<span class="sourceLineNo">4861</span> ox = (int) (iax - ibx);<a name="line.4861"></a>
<span class="sourceLineNo">4862</span> oai32data[it.oIndex] = ox;<a name="line.4862"></a>
<span class="sourceLineNo">4863</span> for (int j = 1; j &lt; is; j++) {<a name="line.4863"></a>
<span class="sourceLineNo">4864</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.4864"></a>
<span class="sourceLineNo">4865</span> ox = (int) (iax - ibx);<a name="line.4865"></a>
<span class="sourceLineNo">4866</span> oai32data[it.oIndex + j] = ox;<a name="line.4866"></a>
<span class="sourceLineNo">4867</span> }<a name="line.4867"></a>
<span class="sourceLineNo">4868</span> }<a name="line.4868"></a>
<span class="sourceLineNo">4869</span> }<a name="line.4869"></a>
<span class="sourceLineNo">4870</span> } else if (as == 1) {<a name="line.4870"></a>
<span class="sourceLineNo">4871</span> if (it.isOutputDouble()) {<a name="line.4871"></a>
<span class="sourceLineNo">4872</span> while (it.hasNext()) {<a name="line.4872"></a>
<span class="sourceLineNo">4873</span> final double iax = it.aDouble;<a name="line.4873"></a>
<span class="sourceLineNo">4874</span> final double ibx = it.bDouble;<a name="line.4874"></a>
<span class="sourceLineNo">4875</span> int ox;<a name="line.4875"></a>
<span class="sourceLineNo">4876</span> ox = (int) toLong(iax - ibx);<a name="line.4876"></a>
<span class="sourceLineNo">4877</span> for (int j = 0; j &lt; is; j++) {<a name="line.4877"></a>
<span class="sourceLineNo">4878</span> oai32data[it.oIndex + j] = ox;<a name="line.4878"></a>
<span class="sourceLineNo">4879</span> }<a name="line.4879"></a>
<span class="sourceLineNo">4880</span> }<a name="line.4880"></a>
<span class="sourceLineNo">4881</span> } else {<a name="line.4881"></a>
<span class="sourceLineNo">4882</span> while (it.hasNext()) {<a name="line.4882"></a>
<span class="sourceLineNo">4883</span> final long iax = it.aLong;<a name="line.4883"></a>
<span class="sourceLineNo">4884</span> final long ibx = it.bLong;<a name="line.4884"></a>
<span class="sourceLineNo">4885</span> int ox;<a name="line.4885"></a>
<span class="sourceLineNo">4886</span> ox = (int) (iax - ibx);<a name="line.4886"></a>
<span class="sourceLineNo">4887</span> for (int j = 0; j &lt; is; j++) {<a name="line.4887"></a>
<span class="sourceLineNo">4888</span> oai32data[it.oIndex + j] = ox;<a name="line.4888"></a>
<span class="sourceLineNo">4889</span> }<a name="line.4889"></a>
<span class="sourceLineNo">4890</span> }<a name="line.4890"></a>
<span class="sourceLineNo">4891</span> }<a name="line.4891"></a>
<span class="sourceLineNo">4892</span> } else {<a name="line.4892"></a>
<span class="sourceLineNo">4893</span> if (it.isOutputDouble()) {<a name="line.4893"></a>
<span class="sourceLineNo">4894</span> while (it.hasNext()) {<a name="line.4894"></a>
<span class="sourceLineNo">4895</span> double iax = it.aDouble;<a name="line.4895"></a>
<span class="sourceLineNo">4896</span> double ibx = it.bDouble;<a name="line.4896"></a>
<span class="sourceLineNo">4897</span> int ox;<a name="line.4897"></a>
<span class="sourceLineNo">4898</span> ox = (int) toLong(iax - ibx);<a name="line.4898"></a>
<span class="sourceLineNo">4899</span> oai32data[it.oIndex] = ox;<a name="line.4899"></a>
<span class="sourceLineNo">4900</span> for (int j = 1; j &lt; is; j++) {<a name="line.4900"></a>
<span class="sourceLineNo">4901</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.4901"></a>
<span class="sourceLineNo">4902</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.4902"></a>
<span class="sourceLineNo">4903</span> ox = (int) toLong(iax - ibx);<a name="line.4903"></a>
<span class="sourceLineNo">4904</span> oai32data[it.oIndex + j] = ox;<a name="line.4904"></a>
<span class="sourceLineNo">4905</span> }<a name="line.4905"></a>
<span class="sourceLineNo">4906</span> }<a name="line.4906"></a>
<span class="sourceLineNo">4907</span> } else {<a name="line.4907"></a>
<span class="sourceLineNo">4908</span> while (it.hasNext()) {<a name="line.4908"></a>
<span class="sourceLineNo">4909</span> long iax = it.aLong;<a name="line.4909"></a>
<span class="sourceLineNo">4910</span> long ibx = it.bLong;<a name="line.4910"></a>
<span class="sourceLineNo">4911</span> int ox;<a name="line.4911"></a>
<span class="sourceLineNo">4912</span> ox = (int) (iax - ibx);<a name="line.4912"></a>
<span class="sourceLineNo">4913</span> oai32data[it.oIndex] = ox;<a name="line.4913"></a>
<span class="sourceLineNo">4914</span> for (int j = 1; j &lt; is; j++) {<a name="line.4914"></a>
<span class="sourceLineNo">4915</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.4915"></a>
<span class="sourceLineNo">4916</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.4916"></a>
<span class="sourceLineNo">4917</span> ox = (int) (iax - ibx);<a name="line.4917"></a>
<span class="sourceLineNo">4918</span> oai32data[it.oIndex + j] = ox;<a name="line.4918"></a>
<span class="sourceLineNo">4919</span> }<a name="line.4919"></a>
<span class="sourceLineNo">4920</span> }<a name="line.4920"></a>
<span class="sourceLineNo">4921</span> }<a name="line.4921"></a>
<span class="sourceLineNo">4922</span> }<a name="line.4922"></a>
<span class="sourceLineNo">4923</span> break;<a name="line.4923"></a>
<span class="sourceLineNo">4924</span> case Dataset.FLOAT32:<a name="line.4924"></a>
<span class="sourceLineNo">4925</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.4925"></a>
<span class="sourceLineNo">4926</span> if (it.isOutputDouble()) {<a name="line.4926"></a>
<span class="sourceLineNo">4927</span> while (it.hasNext()) {<a name="line.4927"></a>
<span class="sourceLineNo">4928</span> final double iax = it.aDouble;<a name="line.4928"></a>
<span class="sourceLineNo">4929</span> final double ibx = it.bDouble;<a name="line.4929"></a>
<span class="sourceLineNo">4930</span> float ox;<a name="line.4930"></a>
<span class="sourceLineNo">4931</span> ox = (float) (iax - ibx);<a name="line.4931"></a>
<span class="sourceLineNo">4932</span> of32data[it.oIndex] = ox;<a name="line.4932"></a>
<span class="sourceLineNo">4933</span> }<a name="line.4933"></a>
<span class="sourceLineNo">4934</span> } else {<a name="line.4934"></a>
<span class="sourceLineNo">4935</span> while (it.hasNext()) {<a name="line.4935"></a>
<span class="sourceLineNo">4936</span> final long iax = it.aLong;<a name="line.4936"></a>
<span class="sourceLineNo">4937</span> final long ibx = it.bLong;<a name="line.4937"></a>
<span class="sourceLineNo">4938</span> float ox;<a name="line.4938"></a>
<span class="sourceLineNo">4939</span> ox = (iax - ibx);<a name="line.4939"></a>
<span class="sourceLineNo">4940</span> of32data[it.oIndex] = ox;<a name="line.4940"></a>
<span class="sourceLineNo">4941</span> }<a name="line.4941"></a>
<span class="sourceLineNo">4942</span> }<a name="line.4942"></a>
<span class="sourceLineNo">4943</span> break;<a name="line.4943"></a>
<span class="sourceLineNo">4944</span> case Dataset.FLOAT64:<a name="line.4944"></a>
<span class="sourceLineNo">4945</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.4945"></a>
<span class="sourceLineNo">4946</span> if (it.isOutputDouble()) {<a name="line.4946"></a>
<span class="sourceLineNo">4947</span> while (it.hasNext()) {<a name="line.4947"></a>
<span class="sourceLineNo">4948</span> final double iax = it.aDouble;<a name="line.4948"></a>
<span class="sourceLineNo">4949</span> final double ibx = it.bDouble;<a name="line.4949"></a>
<span class="sourceLineNo">4950</span> double ox;<a name="line.4950"></a>
<span class="sourceLineNo">4951</span> ox = (iax - ibx);<a name="line.4951"></a>
<span class="sourceLineNo">4952</span> of64data[it.oIndex] = ox;<a name="line.4952"></a>
<span class="sourceLineNo">4953</span> }<a name="line.4953"></a>
<span class="sourceLineNo">4954</span> } else {<a name="line.4954"></a>
<span class="sourceLineNo">4955</span> while (it.hasNext()) {<a name="line.4955"></a>
<span class="sourceLineNo">4956</span> final long iax = it.aLong;<a name="line.4956"></a>
<span class="sourceLineNo">4957</span> final long ibx = it.bLong;<a name="line.4957"></a>
<span class="sourceLineNo">4958</span> double ox;<a name="line.4958"></a>
<span class="sourceLineNo">4959</span> ox = (iax - ibx);<a name="line.4959"></a>
<span class="sourceLineNo">4960</span> of64data[it.oIndex] = ox;<a name="line.4960"></a>
<span class="sourceLineNo">4961</span> }<a name="line.4961"></a>
<span class="sourceLineNo">4962</span> }<a name="line.4962"></a>
<span class="sourceLineNo">4963</span> break;<a name="line.4963"></a>
<span class="sourceLineNo">4964</span> case Dataset.ARRAYFLOAT32:<a name="line.4964"></a>
<span class="sourceLineNo">4965</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.4965"></a>
<span class="sourceLineNo">4966</span> if (is == 1) {<a name="line.4966"></a>
<span class="sourceLineNo">4967</span> if (it.isOutputDouble()) {<a name="line.4967"></a>
<span class="sourceLineNo">4968</span> while (it.hasNext()) {<a name="line.4968"></a>
<span class="sourceLineNo">4969</span> final double iax = it.aDouble;<a name="line.4969"></a>
<span class="sourceLineNo">4970</span> final double ibx = it.bDouble;<a name="line.4970"></a>
<span class="sourceLineNo">4971</span> float ox;<a name="line.4971"></a>
<span class="sourceLineNo">4972</span> ox = (float) (iax - ibx);<a name="line.4972"></a>
<span class="sourceLineNo">4973</span> oaf32data[it.oIndex] = ox;<a name="line.4973"></a>
<span class="sourceLineNo">4974</span> }<a name="line.4974"></a>
<span class="sourceLineNo">4975</span> } else {<a name="line.4975"></a>
<span class="sourceLineNo">4976</span> while (it.hasNext()) {<a name="line.4976"></a>
<span class="sourceLineNo">4977</span> final long iax = it.aLong;<a name="line.4977"></a>
<span class="sourceLineNo">4978</span> final long ibx = it.bLong;<a name="line.4978"></a>
<span class="sourceLineNo">4979</span> float ox;<a name="line.4979"></a>
<span class="sourceLineNo">4980</span> ox = (iax - ibx);<a name="line.4980"></a>
<span class="sourceLineNo">4981</span> oaf32data[it.oIndex] = ox;<a name="line.4981"></a>
<span class="sourceLineNo">4982</span> }<a name="line.4982"></a>
<span class="sourceLineNo">4983</span> }<a name="line.4983"></a>
<span class="sourceLineNo">4984</span> } else if (as &lt; bs) {<a name="line.4984"></a>
<span class="sourceLineNo">4985</span> if (it.isOutputDouble()) {<a name="line.4985"></a>
<span class="sourceLineNo">4986</span> while (it.hasNext()) {<a name="line.4986"></a>
<span class="sourceLineNo">4987</span> final double iax = it.aDouble;<a name="line.4987"></a>
<span class="sourceLineNo">4988</span> double ibx = it.bDouble;<a name="line.4988"></a>
<span class="sourceLineNo">4989</span> float ox;<a name="line.4989"></a>
<span class="sourceLineNo">4990</span> ox = (float) (iax - ibx);<a name="line.4990"></a>
<span class="sourceLineNo">4991</span> oaf32data[it.oIndex] = ox;<a name="line.4991"></a>
<span class="sourceLineNo">4992</span> for (int j = 1; j &lt; is; j++) {<a name="line.4992"></a>
<span class="sourceLineNo">4993</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.4993"></a>
<span class="sourceLineNo">4994</span> ox = (float) (iax - ibx);<a name="line.4994"></a>
<span class="sourceLineNo">4995</span> oaf32data[it.oIndex + j] = ox;<a name="line.4995"></a>
<span class="sourceLineNo">4996</span> }<a name="line.4996"></a>
<span class="sourceLineNo">4997</span> }<a name="line.4997"></a>
<span class="sourceLineNo">4998</span> } else {<a name="line.4998"></a>
<span class="sourceLineNo">4999</span> while (it.hasNext()) {<a name="line.4999"></a>
<span class="sourceLineNo">5000</span> final long iax = it.aLong;<a name="line.5000"></a>
<span class="sourceLineNo">5001</span> long ibx = it.bLong;<a name="line.5001"></a>
<span class="sourceLineNo">5002</span> float ox;<a name="line.5002"></a>
<span class="sourceLineNo">5003</span> ox = (iax - ibx);<a name="line.5003"></a>
<span class="sourceLineNo">5004</span> oaf32data[it.oIndex] = ox;<a name="line.5004"></a>
<span class="sourceLineNo">5005</span> for (int j = 1; j &lt; is; j++) {<a name="line.5005"></a>
<span class="sourceLineNo">5006</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.5006"></a>
<span class="sourceLineNo">5007</span> ox = (iax - ibx);<a name="line.5007"></a>
<span class="sourceLineNo">5008</span> oaf32data[it.oIndex + j] = ox;<a name="line.5008"></a>
<span class="sourceLineNo">5009</span> }<a name="line.5009"></a>
<span class="sourceLineNo">5010</span> }<a name="line.5010"></a>
<span class="sourceLineNo">5011</span> }<a name="line.5011"></a>
<span class="sourceLineNo">5012</span> } else if (as &gt; bs) {<a name="line.5012"></a>
<span class="sourceLineNo">5013</span> if (it.isOutputDouble()) {<a name="line.5013"></a>
<span class="sourceLineNo">5014</span> while (it.hasNext()) {<a name="line.5014"></a>
<span class="sourceLineNo">5015</span> double iax = it.aDouble;<a name="line.5015"></a>
<span class="sourceLineNo">5016</span> final double ibx = it.bDouble;<a name="line.5016"></a>
<span class="sourceLineNo">5017</span> float ox;<a name="line.5017"></a>
<span class="sourceLineNo">5018</span> ox = (float) (iax - ibx);<a name="line.5018"></a>
<span class="sourceLineNo">5019</span> oaf32data[it.oIndex] = ox;<a name="line.5019"></a>
<span class="sourceLineNo">5020</span> for (int j = 1; j &lt; is; j++) {<a name="line.5020"></a>
<span class="sourceLineNo">5021</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.5021"></a>
<span class="sourceLineNo">5022</span> ox = (float) (iax - ibx);<a name="line.5022"></a>
<span class="sourceLineNo">5023</span> oaf32data[it.oIndex + j] = ox;<a name="line.5023"></a>
<span class="sourceLineNo">5024</span> }<a name="line.5024"></a>
<span class="sourceLineNo">5025</span> }<a name="line.5025"></a>
<span class="sourceLineNo">5026</span> } else {<a name="line.5026"></a>
<span class="sourceLineNo">5027</span> while (it.hasNext()) {<a name="line.5027"></a>
<span class="sourceLineNo">5028</span> long iax = it.aLong;<a name="line.5028"></a>
<span class="sourceLineNo">5029</span> final long ibx = it.bLong;<a name="line.5029"></a>
<span class="sourceLineNo">5030</span> float ox;<a name="line.5030"></a>
<span class="sourceLineNo">5031</span> ox = (iax - ibx);<a name="line.5031"></a>
<span class="sourceLineNo">5032</span> oaf32data[it.oIndex] = ox;<a name="line.5032"></a>
<span class="sourceLineNo">5033</span> for (int j = 1; j &lt; is; j++) {<a name="line.5033"></a>
<span class="sourceLineNo">5034</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.5034"></a>
<span class="sourceLineNo">5035</span> ox = (iax - ibx);<a name="line.5035"></a>
<span class="sourceLineNo">5036</span> oaf32data[it.oIndex + j] = ox;<a name="line.5036"></a>
<span class="sourceLineNo">5037</span> }<a name="line.5037"></a>
<span class="sourceLineNo">5038</span> }<a name="line.5038"></a>
<span class="sourceLineNo">5039</span> }<a name="line.5039"></a>
<span class="sourceLineNo">5040</span> } else if (as == 1) {<a name="line.5040"></a>
<span class="sourceLineNo">5041</span> if (it.isOutputDouble()) {<a name="line.5041"></a>
<span class="sourceLineNo">5042</span> while (it.hasNext()) {<a name="line.5042"></a>
<span class="sourceLineNo">5043</span> final double iax = it.aDouble;<a name="line.5043"></a>
<span class="sourceLineNo">5044</span> final double ibx = it.bDouble;<a name="line.5044"></a>
<span class="sourceLineNo">5045</span> float ox;<a name="line.5045"></a>
<span class="sourceLineNo">5046</span> ox = (float) (iax - ibx);<a name="line.5046"></a>
<span class="sourceLineNo">5047</span> for (int j = 0; j &lt; is; j++) {<a name="line.5047"></a>
<span class="sourceLineNo">5048</span> oaf32data[it.oIndex + j] = ox;<a name="line.5048"></a>
<span class="sourceLineNo">5049</span> }<a name="line.5049"></a>
<span class="sourceLineNo">5050</span> }<a name="line.5050"></a>
<span class="sourceLineNo">5051</span> } else {<a name="line.5051"></a>
<span class="sourceLineNo">5052</span> while (it.hasNext()) {<a name="line.5052"></a>
<span class="sourceLineNo">5053</span> final long iax = it.aLong;<a name="line.5053"></a>
<span class="sourceLineNo">5054</span> final long ibx = it.bLong;<a name="line.5054"></a>
<span class="sourceLineNo">5055</span> float ox;<a name="line.5055"></a>
<span class="sourceLineNo">5056</span> ox = (iax - ibx);<a name="line.5056"></a>
<span class="sourceLineNo">5057</span> for (int j = 0; j &lt; is; j++) {<a name="line.5057"></a>
<span class="sourceLineNo">5058</span> oaf32data[it.oIndex + j] = ox;<a name="line.5058"></a>
<span class="sourceLineNo">5059</span> }<a name="line.5059"></a>
<span class="sourceLineNo">5060</span> }<a name="line.5060"></a>
<span class="sourceLineNo">5061</span> }<a name="line.5061"></a>
<span class="sourceLineNo">5062</span> } else {<a name="line.5062"></a>
<span class="sourceLineNo">5063</span> if (it.isOutputDouble()) {<a name="line.5063"></a>
<span class="sourceLineNo">5064</span> while (it.hasNext()) {<a name="line.5064"></a>
<span class="sourceLineNo">5065</span> double iax = it.aDouble;<a name="line.5065"></a>
<span class="sourceLineNo">5066</span> double ibx = it.bDouble;<a name="line.5066"></a>
<span class="sourceLineNo">5067</span> float ox;<a name="line.5067"></a>
<span class="sourceLineNo">5068</span> ox = (float) (iax - ibx);<a name="line.5068"></a>
<span class="sourceLineNo">5069</span> oaf32data[it.oIndex] = ox;<a name="line.5069"></a>
<span class="sourceLineNo">5070</span> for (int j = 1; j &lt; is; j++) {<a name="line.5070"></a>
<span class="sourceLineNo">5071</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.5071"></a>
<span class="sourceLineNo">5072</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.5072"></a>
<span class="sourceLineNo">5073</span> ox = (float) (iax - ibx);<a name="line.5073"></a>
<span class="sourceLineNo">5074</span> oaf32data[it.oIndex + j] = ox;<a name="line.5074"></a>
<span class="sourceLineNo">5075</span> }<a name="line.5075"></a>
<span class="sourceLineNo">5076</span> }<a name="line.5076"></a>
<span class="sourceLineNo">5077</span> } else {<a name="line.5077"></a>
<span class="sourceLineNo">5078</span> while (it.hasNext()) {<a name="line.5078"></a>
<span class="sourceLineNo">5079</span> long iax = it.aLong;<a name="line.5079"></a>
<span class="sourceLineNo">5080</span> long ibx = it.bLong;<a name="line.5080"></a>
<span class="sourceLineNo">5081</span> float ox;<a name="line.5081"></a>
<span class="sourceLineNo">5082</span> ox = (iax - ibx);<a name="line.5082"></a>
<span class="sourceLineNo">5083</span> oaf32data[it.oIndex] = ox;<a name="line.5083"></a>
<span class="sourceLineNo">5084</span> for (int j = 1; j &lt; is; j++) {<a name="line.5084"></a>
<span class="sourceLineNo">5085</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.5085"></a>
<span class="sourceLineNo">5086</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.5086"></a>
<span class="sourceLineNo">5087</span> ox = (iax - ibx);<a name="line.5087"></a>
<span class="sourceLineNo">5088</span> oaf32data[it.oIndex + j] = ox;<a name="line.5088"></a>
<span class="sourceLineNo">5089</span> }<a name="line.5089"></a>
<span class="sourceLineNo">5090</span> }<a name="line.5090"></a>
<span class="sourceLineNo">5091</span> }<a name="line.5091"></a>
<span class="sourceLineNo">5092</span> }<a name="line.5092"></a>
<span class="sourceLineNo">5093</span> break;<a name="line.5093"></a>
<span class="sourceLineNo">5094</span> case Dataset.ARRAYFLOAT64:<a name="line.5094"></a>
<span class="sourceLineNo">5095</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.5095"></a>
<span class="sourceLineNo">5096</span> if (is == 1) {<a name="line.5096"></a>
<span class="sourceLineNo">5097</span> if (it.isOutputDouble()) {<a name="line.5097"></a>
<span class="sourceLineNo">5098</span> while (it.hasNext()) {<a name="line.5098"></a>
<span class="sourceLineNo">5099</span> final double iax = it.aDouble;<a name="line.5099"></a>
<span class="sourceLineNo">5100</span> final double ibx = it.bDouble;<a name="line.5100"></a>
<span class="sourceLineNo">5101</span> double ox;<a name="line.5101"></a>
<span class="sourceLineNo">5102</span> ox = (iax - ibx);<a name="line.5102"></a>
<span class="sourceLineNo">5103</span> oaf64data[it.oIndex] = ox;<a name="line.5103"></a>
<span class="sourceLineNo">5104</span> }<a name="line.5104"></a>
<span class="sourceLineNo">5105</span> } else {<a name="line.5105"></a>
<span class="sourceLineNo">5106</span> while (it.hasNext()) {<a name="line.5106"></a>
<span class="sourceLineNo">5107</span> final long iax = it.aLong;<a name="line.5107"></a>
<span class="sourceLineNo">5108</span> final long ibx = it.bLong;<a name="line.5108"></a>
<span class="sourceLineNo">5109</span> double ox;<a name="line.5109"></a>
<span class="sourceLineNo">5110</span> ox = (iax - ibx);<a name="line.5110"></a>
<span class="sourceLineNo">5111</span> oaf64data[it.oIndex] = ox;<a name="line.5111"></a>
<span class="sourceLineNo">5112</span> }<a name="line.5112"></a>
<span class="sourceLineNo">5113</span> }<a name="line.5113"></a>
<span class="sourceLineNo">5114</span> } else if (as &lt; bs) {<a name="line.5114"></a>
<span class="sourceLineNo">5115</span> if (it.isOutputDouble()) {<a name="line.5115"></a>
<span class="sourceLineNo">5116</span> while (it.hasNext()) {<a name="line.5116"></a>
<span class="sourceLineNo">5117</span> final double iax = it.aDouble;<a name="line.5117"></a>
<span class="sourceLineNo">5118</span> double ibx = it.bDouble;<a name="line.5118"></a>
<span class="sourceLineNo">5119</span> double ox;<a name="line.5119"></a>
<span class="sourceLineNo">5120</span> ox = (iax - ibx);<a name="line.5120"></a>
<span class="sourceLineNo">5121</span> oaf64data[it.oIndex] = ox;<a name="line.5121"></a>
<span class="sourceLineNo">5122</span> for (int j = 1; j &lt; is; j++) {<a name="line.5122"></a>
<span class="sourceLineNo">5123</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.5123"></a>
<span class="sourceLineNo">5124</span> ox = (iax - ibx);<a name="line.5124"></a>
<span class="sourceLineNo">5125</span> oaf64data[it.oIndex + j] = ox;<a name="line.5125"></a>
<span class="sourceLineNo">5126</span> }<a name="line.5126"></a>
<span class="sourceLineNo">5127</span> }<a name="line.5127"></a>
<span class="sourceLineNo">5128</span> } else {<a name="line.5128"></a>
<span class="sourceLineNo">5129</span> while (it.hasNext()) {<a name="line.5129"></a>
<span class="sourceLineNo">5130</span> final long iax = it.aLong;<a name="line.5130"></a>
<span class="sourceLineNo">5131</span> long ibx = it.bLong;<a name="line.5131"></a>
<span class="sourceLineNo">5132</span> double ox;<a name="line.5132"></a>
<span class="sourceLineNo">5133</span> ox = (iax - ibx);<a name="line.5133"></a>
<span class="sourceLineNo">5134</span> oaf64data[it.oIndex] = ox;<a name="line.5134"></a>
<span class="sourceLineNo">5135</span> for (int j = 1; j &lt; is; j++) {<a name="line.5135"></a>
<span class="sourceLineNo">5136</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.5136"></a>
<span class="sourceLineNo">5137</span> ox = (iax - ibx);<a name="line.5137"></a>
<span class="sourceLineNo">5138</span> oaf64data[it.oIndex + j] = ox;<a name="line.5138"></a>
<span class="sourceLineNo">5139</span> }<a name="line.5139"></a>
<span class="sourceLineNo">5140</span> }<a name="line.5140"></a>
<span class="sourceLineNo">5141</span> }<a name="line.5141"></a>
<span class="sourceLineNo">5142</span> } else if (as &gt; bs) {<a name="line.5142"></a>
<span class="sourceLineNo">5143</span> if (it.isOutputDouble()) {<a name="line.5143"></a>
<span class="sourceLineNo">5144</span> while (it.hasNext()) {<a name="line.5144"></a>
<span class="sourceLineNo">5145</span> double iax = it.aDouble;<a name="line.5145"></a>
<span class="sourceLineNo">5146</span> final double ibx = it.bDouble;<a name="line.5146"></a>
<span class="sourceLineNo">5147</span> double ox;<a name="line.5147"></a>
<span class="sourceLineNo">5148</span> ox = (iax - ibx);<a name="line.5148"></a>
<span class="sourceLineNo">5149</span> oaf64data[it.oIndex] = ox;<a name="line.5149"></a>
<span class="sourceLineNo">5150</span> for (int j = 1; j &lt; is; j++) {<a name="line.5150"></a>
<span class="sourceLineNo">5151</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.5151"></a>
<span class="sourceLineNo">5152</span> ox = (iax - ibx);<a name="line.5152"></a>
<span class="sourceLineNo">5153</span> oaf64data[it.oIndex + j] = ox;<a name="line.5153"></a>
<span class="sourceLineNo">5154</span> }<a name="line.5154"></a>
<span class="sourceLineNo">5155</span> }<a name="line.5155"></a>
<span class="sourceLineNo">5156</span> } else {<a name="line.5156"></a>
<span class="sourceLineNo">5157</span> while (it.hasNext()) {<a name="line.5157"></a>
<span class="sourceLineNo">5158</span> long iax = it.aLong;<a name="line.5158"></a>
<span class="sourceLineNo">5159</span> final long ibx = it.bLong;<a name="line.5159"></a>
<span class="sourceLineNo">5160</span> double ox;<a name="line.5160"></a>
<span class="sourceLineNo">5161</span> ox = (iax - ibx);<a name="line.5161"></a>
<span class="sourceLineNo">5162</span> oaf64data[it.oIndex] = ox;<a name="line.5162"></a>
<span class="sourceLineNo">5163</span> for (int j = 1; j &lt; is; j++) {<a name="line.5163"></a>
<span class="sourceLineNo">5164</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.5164"></a>
<span class="sourceLineNo">5165</span> ox = (iax - ibx);<a name="line.5165"></a>
<span class="sourceLineNo">5166</span> oaf64data[it.oIndex + j] = ox;<a name="line.5166"></a>
<span class="sourceLineNo">5167</span> }<a name="line.5167"></a>
<span class="sourceLineNo">5168</span> }<a name="line.5168"></a>
<span class="sourceLineNo">5169</span> }<a name="line.5169"></a>
<span class="sourceLineNo">5170</span> } else if (as == 1) {<a name="line.5170"></a>
<span class="sourceLineNo">5171</span> if (it.isOutputDouble()) {<a name="line.5171"></a>
<span class="sourceLineNo">5172</span> while (it.hasNext()) {<a name="line.5172"></a>
<span class="sourceLineNo">5173</span> final double iax = it.aDouble;<a name="line.5173"></a>
<span class="sourceLineNo">5174</span> final double ibx = it.bDouble;<a name="line.5174"></a>
<span class="sourceLineNo">5175</span> double ox;<a name="line.5175"></a>
<span class="sourceLineNo">5176</span> ox = (iax - ibx);<a name="line.5176"></a>
<span class="sourceLineNo">5177</span> for (int j = 0; j &lt; is; j++) {<a name="line.5177"></a>
<span class="sourceLineNo">5178</span> oaf64data[it.oIndex + j] = ox;<a name="line.5178"></a>
<span class="sourceLineNo">5179</span> }<a name="line.5179"></a>
<span class="sourceLineNo">5180</span> }<a name="line.5180"></a>
<span class="sourceLineNo">5181</span> } else {<a name="line.5181"></a>
<span class="sourceLineNo">5182</span> while (it.hasNext()) {<a name="line.5182"></a>
<span class="sourceLineNo">5183</span> final long iax = it.aLong;<a name="line.5183"></a>
<span class="sourceLineNo">5184</span> final long ibx = it.bLong;<a name="line.5184"></a>
<span class="sourceLineNo">5185</span> double ox;<a name="line.5185"></a>
<span class="sourceLineNo">5186</span> ox = (iax - ibx);<a name="line.5186"></a>
<span class="sourceLineNo">5187</span> for (int j = 0; j &lt; is; j++) {<a name="line.5187"></a>
<span class="sourceLineNo">5188</span> oaf64data[it.oIndex + j] = ox;<a name="line.5188"></a>
<span class="sourceLineNo">5189</span> }<a name="line.5189"></a>
<span class="sourceLineNo">5190</span> }<a name="line.5190"></a>
<span class="sourceLineNo">5191</span> }<a name="line.5191"></a>
<span class="sourceLineNo">5192</span> } else {<a name="line.5192"></a>
<span class="sourceLineNo">5193</span> if (it.isOutputDouble()) {<a name="line.5193"></a>
<span class="sourceLineNo">5194</span> while (it.hasNext()) {<a name="line.5194"></a>
<span class="sourceLineNo">5195</span> double iax = it.aDouble;<a name="line.5195"></a>
<span class="sourceLineNo">5196</span> double ibx = it.bDouble;<a name="line.5196"></a>
<span class="sourceLineNo">5197</span> double ox;<a name="line.5197"></a>
<span class="sourceLineNo">5198</span> ox = (iax - ibx);<a name="line.5198"></a>
<span class="sourceLineNo">5199</span> oaf64data[it.oIndex] = ox;<a name="line.5199"></a>
<span class="sourceLineNo">5200</span> for (int j = 1; j &lt; is; j++) {<a name="line.5200"></a>
<span class="sourceLineNo">5201</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.5201"></a>
<span class="sourceLineNo">5202</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.5202"></a>
<span class="sourceLineNo">5203</span> ox = (iax - ibx);<a name="line.5203"></a>
<span class="sourceLineNo">5204</span> oaf64data[it.oIndex + j] = ox;<a name="line.5204"></a>
<span class="sourceLineNo">5205</span> }<a name="line.5205"></a>
<span class="sourceLineNo">5206</span> }<a name="line.5206"></a>
<span class="sourceLineNo">5207</span> } else {<a name="line.5207"></a>
<span class="sourceLineNo">5208</span> while (it.hasNext()) {<a name="line.5208"></a>
<span class="sourceLineNo">5209</span> long iax = it.aLong;<a name="line.5209"></a>
<span class="sourceLineNo">5210</span> long ibx = it.bLong;<a name="line.5210"></a>
<span class="sourceLineNo">5211</span> double ox;<a name="line.5211"></a>
<span class="sourceLineNo">5212</span> ox = (iax - ibx);<a name="line.5212"></a>
<span class="sourceLineNo">5213</span> oaf64data[it.oIndex] = ox;<a name="line.5213"></a>
<span class="sourceLineNo">5214</span> for (int j = 1; j &lt; is; j++) {<a name="line.5214"></a>
<span class="sourceLineNo">5215</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.5215"></a>
<span class="sourceLineNo">5216</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.5216"></a>
<span class="sourceLineNo">5217</span> ox = (iax - ibx);<a name="line.5217"></a>
<span class="sourceLineNo">5218</span> oaf64data[it.oIndex + j] = ox;<a name="line.5218"></a>
<span class="sourceLineNo">5219</span> }<a name="line.5219"></a>
<span class="sourceLineNo">5220</span> }<a name="line.5220"></a>
<span class="sourceLineNo">5221</span> }<a name="line.5221"></a>
<span class="sourceLineNo">5222</span> }<a name="line.5222"></a>
<span class="sourceLineNo">5223</span> break;<a name="line.5223"></a>
<span class="sourceLineNo">5224</span> case Dataset.COMPLEX64:<a name="line.5224"></a>
<span class="sourceLineNo">5225</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.5225"></a>
<span class="sourceLineNo">5226</span> if (!da.isComplex()) {<a name="line.5226"></a>
<span class="sourceLineNo">5227</span> if (it.isOutputDouble()) {<a name="line.5227"></a>
<span class="sourceLineNo">5228</span> final double iay = 0;<a name="line.5228"></a>
<span class="sourceLineNo">5229</span> if (db.isComplex()) {<a name="line.5229"></a>
<span class="sourceLineNo">5230</span> while (it.hasNext()) {<a name="line.5230"></a>
<span class="sourceLineNo">5231</span> final double iax = it.aDouble;<a name="line.5231"></a>
<span class="sourceLineNo">5232</span> final double ibx = it.bDouble;<a name="line.5232"></a>
<span class="sourceLineNo">5233</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.5233"></a>
<span class="sourceLineNo">5234</span> float ox;<a name="line.5234"></a>
<span class="sourceLineNo">5235</span> float oy;<a name="line.5235"></a>
<span class="sourceLineNo">5236</span> ox = (float) (iax - ibx);<a name="line.5236"></a>
<span class="sourceLineNo">5237</span> oy = (float) (iay - iby);<a name="line.5237"></a>
<span class="sourceLineNo">5238</span> oc64data[it.oIndex] = ox;<a name="line.5238"></a>
<span class="sourceLineNo">5239</span> oc64data[it.oIndex + 1] = oy;<a name="line.5239"></a>
<span class="sourceLineNo">5240</span> }<a name="line.5240"></a>
<span class="sourceLineNo">5241</span> } else {<a name="line.5241"></a>
<span class="sourceLineNo">5242</span> while (it.hasNext()) {<a name="line.5242"></a>
<span class="sourceLineNo">5243</span> final double iax = it.aDouble;<a name="line.5243"></a>
<span class="sourceLineNo">5244</span> final double ibx = it.bDouble;<a name="line.5244"></a>
<span class="sourceLineNo">5245</span> final double iby = 0;<a name="line.5245"></a>
<span class="sourceLineNo">5246</span> float ox;<a name="line.5246"></a>
<span class="sourceLineNo">5247</span> float oy;<a name="line.5247"></a>
<span class="sourceLineNo">5248</span> ox = (float) (iax - ibx);<a name="line.5248"></a>
<span class="sourceLineNo">5249</span> oy = (float) (iay - iby);<a name="line.5249"></a>
<span class="sourceLineNo">5250</span> oc64data[it.oIndex] = ox;<a name="line.5250"></a>
<span class="sourceLineNo">5251</span> oc64data[it.oIndex + 1] = oy;<a name="line.5251"></a>
<span class="sourceLineNo">5252</span> }<a name="line.5252"></a>
<span class="sourceLineNo">5253</span> }<a name="line.5253"></a>
<span class="sourceLineNo">5254</span> } else {<a name="line.5254"></a>
<span class="sourceLineNo">5255</span> final long iay = 0;<a name="line.5255"></a>
<span class="sourceLineNo">5256</span> while (it.hasNext()) {<a name="line.5256"></a>
<span class="sourceLineNo">5257</span> final long iax = it.aLong;<a name="line.5257"></a>
<span class="sourceLineNo">5258</span> final long ibx = it.bLong;<a name="line.5258"></a>
<span class="sourceLineNo">5259</span> final long iby = 0;<a name="line.5259"></a>
<span class="sourceLineNo">5260</span> float ox;<a name="line.5260"></a>
<span class="sourceLineNo">5261</span> float oy;<a name="line.5261"></a>
<span class="sourceLineNo">5262</span> ox = (float) (iax - ibx);<a name="line.5262"></a>
<span class="sourceLineNo">5263</span> oy = (float) (iay - iby);<a name="line.5263"></a>
<span class="sourceLineNo">5264</span> oc64data[it.oIndex] = ox;<a name="line.5264"></a>
<span class="sourceLineNo">5265</span> oc64data[it.oIndex + 1] = oy;<a name="line.5265"></a>
<span class="sourceLineNo">5266</span> }<a name="line.5266"></a>
<span class="sourceLineNo">5267</span> }<a name="line.5267"></a>
<span class="sourceLineNo">5268</span> } else if (!db.isComplex()) {<a name="line.5268"></a>
<span class="sourceLineNo">5269</span> final double iby = 0;<a name="line.5269"></a>
<span class="sourceLineNo">5270</span> while (it.hasNext()) {<a name="line.5270"></a>
<span class="sourceLineNo">5271</span> final double iax = it.aDouble;<a name="line.5271"></a>
<span class="sourceLineNo">5272</span> final double ibx = it.bDouble;<a name="line.5272"></a>
<span class="sourceLineNo">5273</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.5273"></a>
<span class="sourceLineNo">5274</span> float ox;<a name="line.5274"></a>
<span class="sourceLineNo">5275</span> float oy;<a name="line.5275"></a>
<span class="sourceLineNo">5276</span> ox = (float) (iax - ibx);<a name="line.5276"></a>
<span class="sourceLineNo">5277</span> oy = (float) (iay - iby);<a name="line.5277"></a>
<span class="sourceLineNo">5278</span> oc64data[it.oIndex] = ox;<a name="line.5278"></a>
<span class="sourceLineNo">5279</span> oc64data[it.oIndex + 1] = oy;<a name="line.5279"></a>
<span class="sourceLineNo">5280</span> }<a name="line.5280"></a>
<span class="sourceLineNo">5281</span> } else {<a name="line.5281"></a>
<span class="sourceLineNo">5282</span> while (it.hasNext()) {<a name="line.5282"></a>
<span class="sourceLineNo">5283</span> final double iax = it.aDouble;<a name="line.5283"></a>
<span class="sourceLineNo">5284</span> final double ibx = it.bDouble;<a name="line.5284"></a>
<span class="sourceLineNo">5285</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.5285"></a>
<span class="sourceLineNo">5286</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.5286"></a>
<span class="sourceLineNo">5287</span> float ox;<a name="line.5287"></a>
<span class="sourceLineNo">5288</span> float oy;<a name="line.5288"></a>
<span class="sourceLineNo">5289</span> ox = (float) (iax - ibx);<a name="line.5289"></a>
<span class="sourceLineNo">5290</span> oy = (float) (iay - iby);<a name="line.5290"></a>
<span class="sourceLineNo">5291</span> oc64data[it.oIndex] = ox;<a name="line.5291"></a>
<span class="sourceLineNo">5292</span> oc64data[it.oIndex + 1] = oy;<a name="line.5292"></a>
<span class="sourceLineNo">5293</span> }<a name="line.5293"></a>
<span class="sourceLineNo">5294</span> }<a name="line.5294"></a>
<span class="sourceLineNo">5295</span> break;<a name="line.5295"></a>
<span class="sourceLineNo">5296</span> case Dataset.COMPLEX128:<a name="line.5296"></a>
<span class="sourceLineNo">5297</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.5297"></a>
<span class="sourceLineNo">5298</span> if (!da.isComplex()) {<a name="line.5298"></a>
<span class="sourceLineNo">5299</span> if (it.isOutputDouble()) {<a name="line.5299"></a>
<span class="sourceLineNo">5300</span> final double iay = 0;<a name="line.5300"></a>
<span class="sourceLineNo">5301</span> if (db.isComplex()) {<a name="line.5301"></a>
<span class="sourceLineNo">5302</span> while (it.hasNext()) {<a name="line.5302"></a>
<span class="sourceLineNo">5303</span> final double iax = it.aDouble;<a name="line.5303"></a>
<span class="sourceLineNo">5304</span> final double ibx = it.bDouble;<a name="line.5304"></a>
<span class="sourceLineNo">5305</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.5305"></a>
<span class="sourceLineNo">5306</span> double ox;<a name="line.5306"></a>
<span class="sourceLineNo">5307</span> double oy;<a name="line.5307"></a>
<span class="sourceLineNo">5308</span> ox = (iax - ibx);<a name="line.5308"></a>
<span class="sourceLineNo">5309</span> oy = (iay - iby);<a name="line.5309"></a>
<span class="sourceLineNo">5310</span> oc128data[it.oIndex] = ox;<a name="line.5310"></a>
<span class="sourceLineNo">5311</span> oc128data[it.oIndex + 1] = oy;<a name="line.5311"></a>
<span class="sourceLineNo">5312</span> }<a name="line.5312"></a>
<span class="sourceLineNo">5313</span> } else {<a name="line.5313"></a>
<span class="sourceLineNo">5314</span> while (it.hasNext()) {<a name="line.5314"></a>
<span class="sourceLineNo">5315</span> final double iax = it.aDouble;<a name="line.5315"></a>
<span class="sourceLineNo">5316</span> final double ibx = it.bDouble;<a name="line.5316"></a>
<span class="sourceLineNo">5317</span> final double iby = 0;<a name="line.5317"></a>
<span class="sourceLineNo">5318</span> double ox;<a name="line.5318"></a>
<span class="sourceLineNo">5319</span> double oy;<a name="line.5319"></a>
<span class="sourceLineNo">5320</span> ox = (iax - ibx);<a name="line.5320"></a>
<span class="sourceLineNo">5321</span> oy = (iay - iby);<a name="line.5321"></a>
<span class="sourceLineNo">5322</span> oc128data[it.oIndex] = ox;<a name="line.5322"></a>
<span class="sourceLineNo">5323</span> oc128data[it.oIndex + 1] = oy;<a name="line.5323"></a>
<span class="sourceLineNo">5324</span> }<a name="line.5324"></a>
<span class="sourceLineNo">5325</span> }<a name="line.5325"></a>
<span class="sourceLineNo">5326</span> } else {<a name="line.5326"></a>
<span class="sourceLineNo">5327</span> final long iay = 0;<a name="line.5327"></a>
<span class="sourceLineNo">5328</span> while (it.hasNext()) {<a name="line.5328"></a>
<span class="sourceLineNo">5329</span> final long iax = it.aLong;<a name="line.5329"></a>
<span class="sourceLineNo">5330</span> final long ibx = it.bLong;<a name="line.5330"></a>
<span class="sourceLineNo">5331</span> final long iby = 0;<a name="line.5331"></a>
<span class="sourceLineNo">5332</span> double ox;<a name="line.5332"></a>
<span class="sourceLineNo">5333</span> double oy;<a name="line.5333"></a>
<span class="sourceLineNo">5334</span> ox = (iax - ibx);<a name="line.5334"></a>
<span class="sourceLineNo">5335</span> oy = (iay - iby);<a name="line.5335"></a>
<span class="sourceLineNo">5336</span> oc128data[it.oIndex] = ox;<a name="line.5336"></a>
<span class="sourceLineNo">5337</span> oc128data[it.oIndex + 1] = oy;<a name="line.5337"></a>
<span class="sourceLineNo">5338</span> }<a name="line.5338"></a>
<span class="sourceLineNo">5339</span> }<a name="line.5339"></a>
<span class="sourceLineNo">5340</span> } else if (!db.isComplex()) {<a name="line.5340"></a>
<span class="sourceLineNo">5341</span> final double iby = 0;<a name="line.5341"></a>
<span class="sourceLineNo">5342</span> while (it.hasNext()) {<a name="line.5342"></a>
<span class="sourceLineNo">5343</span> final double iax = it.aDouble;<a name="line.5343"></a>
<span class="sourceLineNo">5344</span> final double ibx = it.bDouble;<a name="line.5344"></a>
<span class="sourceLineNo">5345</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.5345"></a>
<span class="sourceLineNo">5346</span> double ox;<a name="line.5346"></a>
<span class="sourceLineNo">5347</span> double oy;<a name="line.5347"></a>
<span class="sourceLineNo">5348</span> ox = (iax - ibx);<a name="line.5348"></a>
<span class="sourceLineNo">5349</span> oy = (iay - iby);<a name="line.5349"></a>
<span class="sourceLineNo">5350</span> oc128data[it.oIndex] = ox;<a name="line.5350"></a>
<span class="sourceLineNo">5351</span> oc128data[it.oIndex + 1] = oy;<a name="line.5351"></a>
<span class="sourceLineNo">5352</span> }<a name="line.5352"></a>
<span class="sourceLineNo">5353</span> } else {<a name="line.5353"></a>
<span class="sourceLineNo">5354</span> while (it.hasNext()) {<a name="line.5354"></a>
<span class="sourceLineNo">5355</span> final double iax = it.aDouble;<a name="line.5355"></a>
<span class="sourceLineNo">5356</span> final double ibx = it.bDouble;<a name="line.5356"></a>
<span class="sourceLineNo">5357</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.5357"></a>
<span class="sourceLineNo">5358</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.5358"></a>
<span class="sourceLineNo">5359</span> double ox;<a name="line.5359"></a>
<span class="sourceLineNo">5360</span> double oy;<a name="line.5360"></a>
<span class="sourceLineNo">5361</span> ox = (iax - ibx);<a name="line.5361"></a>
<span class="sourceLineNo">5362</span> oy = (iay - iby);<a name="line.5362"></a>
<span class="sourceLineNo">5363</span> oc128data[it.oIndex] = ox;<a name="line.5363"></a>
<span class="sourceLineNo">5364</span> oc128data[it.oIndex + 1] = oy;<a name="line.5364"></a>
<span class="sourceLineNo">5365</span> }<a name="line.5365"></a>
<span class="sourceLineNo">5366</span> }<a name="line.5366"></a>
<span class="sourceLineNo">5367</span> break;<a name="line.5367"></a>
<span class="sourceLineNo">5368</span> default:<a name="line.5368"></a>
<span class="sourceLineNo">5369</span> throw new IllegalArgumentException("subtract supports integer, compound integer, real, compound real, complex datasets only");<a name="line.5369"></a>
<span class="sourceLineNo">5370</span> }<a name="line.5370"></a>
<span class="sourceLineNo">5371</span><a name="line.5371"></a>
<span class="sourceLineNo">5372</span> addBinaryOperatorName(da, db, result, "-");<a name="line.5372"></a>
<span class="sourceLineNo">5373</span> return result;<a name="line.5373"></a>
<span class="sourceLineNo">5374</span> }<a name="line.5374"></a>
<span class="sourceLineNo">5375</span><a name="line.5375"></a>
<span class="sourceLineNo">5376</span> /**<a name="line.5376"></a>
<span class="sourceLineNo">5377</span> * multiply operator<a name="line.5377"></a>
<span class="sourceLineNo">5378</span> * @param a<a name="line.5378"></a>
<span class="sourceLineNo">5379</span> * @param b<a name="line.5379"></a>
<span class="sourceLineNo">5380</span> * @return {@code a * b}, product of a and b<a name="line.5380"></a>
<span class="sourceLineNo">5381</span> */<a name="line.5381"></a>
<span class="sourceLineNo">5382</span> public static Dataset multiply(final Object a, final Object b) {<a name="line.5382"></a>
<span class="sourceLineNo">5383</span> return multiply(a, b, null);<a name="line.5383"></a>
<span class="sourceLineNo">5384</span> }<a name="line.5384"></a>
<span class="sourceLineNo">5385</span><a name="line.5385"></a>
<span class="sourceLineNo">5386</span> /**<a name="line.5386"></a>
<span class="sourceLineNo">5387</span> * multiply operator<a name="line.5387"></a>
<span class="sourceLineNo">5388</span> * @param a<a name="line.5388"></a>
<span class="sourceLineNo">5389</span> * @param b<a name="line.5389"></a>
<span class="sourceLineNo">5390</span> * @param o output can be null - in which case, a new dataset is created<a name="line.5390"></a>
<span class="sourceLineNo">5391</span> * @return {@code a * b}, product of a and b<a name="line.5391"></a>
<span class="sourceLineNo">5392</span> */<a name="line.5392"></a>
<span class="sourceLineNo">5393</span> public static Dataset multiply(final Object a, final Object b, final Dataset o) {<a name="line.5393"></a>
<span class="sourceLineNo">5394</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.5394"></a>
<span class="sourceLineNo">5395</span> Dataset db = b instanceof Dataset ? (Dataset) b : DatasetFactory.createFromObject(b);<a name="line.5395"></a>
<span class="sourceLineNo">5396</span> BroadcastIterator it = BroadcastIterator.createIterator(da, db, o, true);<a name="line.5396"></a>
<span class="sourceLineNo">5397</span> final Dataset result = it.getOutput();<a name="line.5397"></a>
<span class="sourceLineNo">5398</span> if (!result.isComplex()) {<a name="line.5398"></a>
<span class="sourceLineNo">5399</span> boolean change = false;<a name="line.5399"></a>
<span class="sourceLineNo">5400</span> if (da.isComplex()) {<a name="line.5400"></a>
<span class="sourceLineNo">5401</span> da = da.getRealView();<a name="line.5401"></a>
<span class="sourceLineNo">5402</span> change = true;<a name="line.5402"></a>
<span class="sourceLineNo">5403</span> }<a name="line.5403"></a>
<span class="sourceLineNo">5404</span> if (db.isComplex()) {<a name="line.5404"></a>
<span class="sourceLineNo">5405</span> db = db.getRealView();<a name="line.5405"></a>
<span class="sourceLineNo">5406</span> change = true;<a name="line.5406"></a>
<span class="sourceLineNo">5407</span> }<a name="line.5407"></a>
<span class="sourceLineNo">5408</span> if (change) {<a name="line.5408"></a>
<span class="sourceLineNo">5409</span> it = BroadcastIterator.createIterator(da, db, result, true);<a name="line.5409"></a>
<span class="sourceLineNo">5410</span> }<a name="line.5410"></a>
<span class="sourceLineNo">5411</span> }<a name="line.5411"></a>
<span class="sourceLineNo">5412</span> final int is = result.getElementsPerItem();<a name="line.5412"></a>
<span class="sourceLineNo">5413</span> final int as = da.getElementsPerItem();<a name="line.5413"></a>
<span class="sourceLineNo">5414</span> final int bs = db.getElementsPerItem();<a name="line.5414"></a>
<span class="sourceLineNo">5415</span> final int dt = result.getDType();<a name="line.5415"></a>
<span class="sourceLineNo">5416</span><a name="line.5416"></a>
<span class="sourceLineNo">5417</span> switch(dt) {<a name="line.5417"></a>
<span class="sourceLineNo">5418</span> case Dataset.INT8:<a name="line.5418"></a>
<span class="sourceLineNo">5419</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.5419"></a>
<span class="sourceLineNo">5420</span> if (it.isOutputDouble()) {<a name="line.5420"></a>
<span class="sourceLineNo">5421</span> while (it.hasNext()) {<a name="line.5421"></a>
<span class="sourceLineNo">5422</span> final double iax = it.aDouble;<a name="line.5422"></a>
<span class="sourceLineNo">5423</span> final double ibx = it.bDouble;<a name="line.5423"></a>
<span class="sourceLineNo">5424</span> byte ox;<a name="line.5424"></a>
<span class="sourceLineNo">5425</span> ox = (byte) toLong(iax * ibx);<a name="line.5425"></a>
<span class="sourceLineNo">5426</span> oi8data[it.oIndex] = ox;<a name="line.5426"></a>
<span class="sourceLineNo">5427</span> }<a name="line.5427"></a>
<span class="sourceLineNo">5428</span> } else {<a name="line.5428"></a>
<span class="sourceLineNo">5429</span> while (it.hasNext()) {<a name="line.5429"></a>
<span class="sourceLineNo">5430</span> final long iax = it.aLong;<a name="line.5430"></a>
<span class="sourceLineNo">5431</span> final long ibx = it.bLong;<a name="line.5431"></a>
<span class="sourceLineNo">5432</span> byte ox;<a name="line.5432"></a>
<span class="sourceLineNo">5433</span> ox = (byte) (iax * ibx);<a name="line.5433"></a>
<span class="sourceLineNo">5434</span> oi8data[it.oIndex] = ox;<a name="line.5434"></a>
<span class="sourceLineNo">5435</span> }<a name="line.5435"></a>
<span class="sourceLineNo">5436</span> }<a name="line.5436"></a>
<span class="sourceLineNo">5437</span> break;<a name="line.5437"></a>
<span class="sourceLineNo">5438</span> case Dataset.INT16:<a name="line.5438"></a>
<span class="sourceLineNo">5439</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.5439"></a>
<span class="sourceLineNo">5440</span> if (it.isOutputDouble()) {<a name="line.5440"></a>
<span class="sourceLineNo">5441</span> while (it.hasNext()) {<a name="line.5441"></a>
<span class="sourceLineNo">5442</span> final double iax = it.aDouble;<a name="line.5442"></a>
<span class="sourceLineNo">5443</span> final double ibx = it.bDouble;<a name="line.5443"></a>
<span class="sourceLineNo">5444</span> short ox;<a name="line.5444"></a>
<span class="sourceLineNo">5445</span> ox = (short) toLong(iax * ibx);<a name="line.5445"></a>
<span class="sourceLineNo">5446</span> oi16data[it.oIndex] = ox;<a name="line.5446"></a>
<span class="sourceLineNo">5447</span> }<a name="line.5447"></a>
<span class="sourceLineNo">5448</span> } else {<a name="line.5448"></a>
<span class="sourceLineNo">5449</span> while (it.hasNext()) {<a name="line.5449"></a>
<span class="sourceLineNo">5450</span> final long iax = it.aLong;<a name="line.5450"></a>
<span class="sourceLineNo">5451</span> final long ibx = it.bLong;<a name="line.5451"></a>
<span class="sourceLineNo">5452</span> short ox;<a name="line.5452"></a>
<span class="sourceLineNo">5453</span> ox = (short) (iax * ibx);<a name="line.5453"></a>
<span class="sourceLineNo">5454</span> oi16data[it.oIndex] = ox;<a name="line.5454"></a>
<span class="sourceLineNo">5455</span> }<a name="line.5455"></a>
<span class="sourceLineNo">5456</span> }<a name="line.5456"></a>
<span class="sourceLineNo">5457</span> break;<a name="line.5457"></a>
<span class="sourceLineNo">5458</span> case Dataset.INT64:<a name="line.5458"></a>
<span class="sourceLineNo">5459</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.5459"></a>
<span class="sourceLineNo">5460</span> if (it.isOutputDouble()) {<a name="line.5460"></a>
<span class="sourceLineNo">5461</span> while (it.hasNext()) {<a name="line.5461"></a>
<span class="sourceLineNo">5462</span> final double iax = it.aDouble;<a name="line.5462"></a>
<span class="sourceLineNo">5463</span> final double ibx = it.bDouble;<a name="line.5463"></a>
<span class="sourceLineNo">5464</span> long ox;<a name="line.5464"></a>
<span class="sourceLineNo">5465</span> ox = toLong(iax * ibx);<a name="line.5465"></a>
<span class="sourceLineNo">5466</span> oi64data[it.oIndex] = ox;<a name="line.5466"></a>
<span class="sourceLineNo">5467</span> }<a name="line.5467"></a>
<span class="sourceLineNo">5468</span> } else {<a name="line.5468"></a>
<span class="sourceLineNo">5469</span> while (it.hasNext()) {<a name="line.5469"></a>
<span class="sourceLineNo">5470</span> final long iax = it.aLong;<a name="line.5470"></a>
<span class="sourceLineNo">5471</span> final long ibx = it.bLong;<a name="line.5471"></a>
<span class="sourceLineNo">5472</span> long ox;<a name="line.5472"></a>
<span class="sourceLineNo">5473</span> ox = (iax * ibx);<a name="line.5473"></a>
<span class="sourceLineNo">5474</span> oi64data[it.oIndex] = ox;<a name="line.5474"></a>
<span class="sourceLineNo">5475</span> }<a name="line.5475"></a>
<span class="sourceLineNo">5476</span> }<a name="line.5476"></a>
<span class="sourceLineNo">5477</span> break;<a name="line.5477"></a>
<span class="sourceLineNo">5478</span> case Dataset.INT32:<a name="line.5478"></a>
<span class="sourceLineNo">5479</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.5479"></a>
<span class="sourceLineNo">5480</span> if (it.isOutputDouble()) {<a name="line.5480"></a>
<span class="sourceLineNo">5481</span> while (it.hasNext()) {<a name="line.5481"></a>
<span class="sourceLineNo">5482</span> final double iax = it.aDouble;<a name="line.5482"></a>
<span class="sourceLineNo">5483</span> final double ibx = it.bDouble;<a name="line.5483"></a>
<span class="sourceLineNo">5484</span> int ox;<a name="line.5484"></a>
<span class="sourceLineNo">5485</span> ox = (int) toLong(iax * ibx);<a name="line.5485"></a>
<span class="sourceLineNo">5486</span> oi32data[it.oIndex] = ox;<a name="line.5486"></a>
<span class="sourceLineNo">5487</span> }<a name="line.5487"></a>
<span class="sourceLineNo">5488</span> } else {<a name="line.5488"></a>
<span class="sourceLineNo">5489</span> while (it.hasNext()) {<a name="line.5489"></a>
<span class="sourceLineNo">5490</span> final long iax = it.aLong;<a name="line.5490"></a>
<span class="sourceLineNo">5491</span> final long ibx = it.bLong;<a name="line.5491"></a>
<span class="sourceLineNo">5492</span> int ox;<a name="line.5492"></a>
<span class="sourceLineNo">5493</span> ox = (int) (iax * ibx);<a name="line.5493"></a>
<span class="sourceLineNo">5494</span> oi32data[it.oIndex] = ox;<a name="line.5494"></a>
<span class="sourceLineNo">5495</span> }<a name="line.5495"></a>
<span class="sourceLineNo">5496</span> }<a name="line.5496"></a>
<span class="sourceLineNo">5497</span> break;<a name="line.5497"></a>
<span class="sourceLineNo">5498</span> case Dataset.ARRAYINT8:<a name="line.5498"></a>
<span class="sourceLineNo">5499</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.5499"></a>
<span class="sourceLineNo">5500</span> if (is == 1) {<a name="line.5500"></a>
<span class="sourceLineNo">5501</span> if (it.isOutputDouble()) {<a name="line.5501"></a>
<span class="sourceLineNo">5502</span> while (it.hasNext()) {<a name="line.5502"></a>
<span class="sourceLineNo">5503</span> final double iax = it.aDouble;<a name="line.5503"></a>
<span class="sourceLineNo">5504</span> final double ibx = it.bDouble;<a name="line.5504"></a>
<span class="sourceLineNo">5505</span> byte ox;<a name="line.5505"></a>
<span class="sourceLineNo">5506</span> ox = (byte) toLong(iax * ibx);<a name="line.5506"></a>
<span class="sourceLineNo">5507</span> oai8data[it.oIndex] = ox;<a name="line.5507"></a>
<span class="sourceLineNo">5508</span> }<a name="line.5508"></a>
<span class="sourceLineNo">5509</span> } else {<a name="line.5509"></a>
<span class="sourceLineNo">5510</span> while (it.hasNext()) {<a name="line.5510"></a>
<span class="sourceLineNo">5511</span> final long iax = it.aLong;<a name="line.5511"></a>
<span class="sourceLineNo">5512</span> final long ibx = it.bLong;<a name="line.5512"></a>
<span class="sourceLineNo">5513</span> byte ox;<a name="line.5513"></a>
<span class="sourceLineNo">5514</span> ox = (byte) (iax * ibx);<a name="line.5514"></a>
<span class="sourceLineNo">5515</span> oai8data[it.oIndex] = ox;<a name="line.5515"></a>
<span class="sourceLineNo">5516</span> }<a name="line.5516"></a>
<span class="sourceLineNo">5517</span> }<a name="line.5517"></a>
<span class="sourceLineNo">5518</span> } else if (as &lt; bs) {<a name="line.5518"></a>
<span class="sourceLineNo">5519</span> if (it.isOutputDouble()) {<a name="line.5519"></a>
<span class="sourceLineNo">5520</span> while (it.hasNext()) {<a name="line.5520"></a>
<span class="sourceLineNo">5521</span> final double iax = it.aDouble;<a name="line.5521"></a>
<span class="sourceLineNo">5522</span> double ibx = it.bDouble;<a name="line.5522"></a>
<span class="sourceLineNo">5523</span> byte ox;<a name="line.5523"></a>
<span class="sourceLineNo">5524</span> ox = (byte) toLong(iax * ibx);<a name="line.5524"></a>
<span class="sourceLineNo">5525</span> oai8data[it.oIndex] = ox;<a name="line.5525"></a>
<span class="sourceLineNo">5526</span> for (int j = 1; j &lt; is; j++) {<a name="line.5526"></a>
<span class="sourceLineNo">5527</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.5527"></a>
<span class="sourceLineNo">5528</span> ox = (byte) toLong(iax * ibx);<a name="line.5528"></a>
<span class="sourceLineNo">5529</span> oai8data[it.oIndex + j] = ox;<a name="line.5529"></a>
<span class="sourceLineNo">5530</span> }<a name="line.5530"></a>
<span class="sourceLineNo">5531</span> }<a name="line.5531"></a>
<span class="sourceLineNo">5532</span> } else {<a name="line.5532"></a>
<span class="sourceLineNo">5533</span> while (it.hasNext()) {<a name="line.5533"></a>
<span class="sourceLineNo">5534</span> final long iax = it.aLong;<a name="line.5534"></a>
<span class="sourceLineNo">5535</span> long ibx = it.bLong;<a name="line.5535"></a>
<span class="sourceLineNo">5536</span> byte ox;<a name="line.5536"></a>
<span class="sourceLineNo">5537</span> ox = (byte) (iax * ibx);<a name="line.5537"></a>
<span class="sourceLineNo">5538</span> oai8data[it.oIndex] = ox;<a name="line.5538"></a>
<span class="sourceLineNo">5539</span> for (int j = 1; j &lt; is; j++) {<a name="line.5539"></a>
<span class="sourceLineNo">5540</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.5540"></a>
<span class="sourceLineNo">5541</span> ox = (byte) (iax * ibx);<a name="line.5541"></a>
<span class="sourceLineNo">5542</span> oai8data[it.oIndex + j] = ox;<a name="line.5542"></a>
<span class="sourceLineNo">5543</span> }<a name="line.5543"></a>
<span class="sourceLineNo">5544</span> }<a name="line.5544"></a>
<span class="sourceLineNo">5545</span> }<a name="line.5545"></a>
<span class="sourceLineNo">5546</span> } else if (as &gt; bs) {<a name="line.5546"></a>
<span class="sourceLineNo">5547</span> if (it.isOutputDouble()) {<a name="line.5547"></a>
<span class="sourceLineNo">5548</span> while (it.hasNext()) {<a name="line.5548"></a>
<span class="sourceLineNo">5549</span> double iax = it.aDouble;<a name="line.5549"></a>
<span class="sourceLineNo">5550</span> final double ibx = it.bDouble;<a name="line.5550"></a>
<span class="sourceLineNo">5551</span> byte ox;<a name="line.5551"></a>
<span class="sourceLineNo">5552</span> ox = (byte) toLong(iax * ibx);<a name="line.5552"></a>
<span class="sourceLineNo">5553</span> oai8data[it.oIndex] = ox;<a name="line.5553"></a>
<span class="sourceLineNo">5554</span> for (int j = 1; j &lt; is; j++) {<a name="line.5554"></a>
<span class="sourceLineNo">5555</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.5555"></a>
<span class="sourceLineNo">5556</span> ox = (byte) toLong(iax * ibx);<a name="line.5556"></a>
<span class="sourceLineNo">5557</span> oai8data[it.oIndex + j] = ox;<a name="line.5557"></a>
<span class="sourceLineNo">5558</span> }<a name="line.5558"></a>
<span class="sourceLineNo">5559</span> }<a name="line.5559"></a>
<span class="sourceLineNo">5560</span> } else {<a name="line.5560"></a>
<span class="sourceLineNo">5561</span> while (it.hasNext()) {<a name="line.5561"></a>
<span class="sourceLineNo">5562</span> long iax = it.aLong;<a name="line.5562"></a>
<span class="sourceLineNo">5563</span> final long ibx = it.bLong;<a name="line.5563"></a>
<span class="sourceLineNo">5564</span> byte ox;<a name="line.5564"></a>
<span class="sourceLineNo">5565</span> ox = (byte) (iax * ibx);<a name="line.5565"></a>
<span class="sourceLineNo">5566</span> oai8data[it.oIndex] = ox;<a name="line.5566"></a>
<span class="sourceLineNo">5567</span> for (int j = 1; j &lt; is; j++) {<a name="line.5567"></a>
<span class="sourceLineNo">5568</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.5568"></a>
<span class="sourceLineNo">5569</span> ox = (byte) (iax * ibx);<a name="line.5569"></a>
<span class="sourceLineNo">5570</span> oai8data[it.oIndex + j] = ox;<a name="line.5570"></a>
<span class="sourceLineNo">5571</span> }<a name="line.5571"></a>
<span class="sourceLineNo">5572</span> }<a name="line.5572"></a>
<span class="sourceLineNo">5573</span> }<a name="line.5573"></a>
<span class="sourceLineNo">5574</span> } else if (as == 1) {<a name="line.5574"></a>
<span class="sourceLineNo">5575</span> if (it.isOutputDouble()) {<a name="line.5575"></a>
<span class="sourceLineNo">5576</span> while (it.hasNext()) {<a name="line.5576"></a>
<span class="sourceLineNo">5577</span> final double iax = it.aDouble;<a name="line.5577"></a>
<span class="sourceLineNo">5578</span> final double ibx = it.bDouble;<a name="line.5578"></a>
<span class="sourceLineNo">5579</span> byte ox;<a name="line.5579"></a>
<span class="sourceLineNo">5580</span> ox = (byte) toLong(iax * ibx);<a name="line.5580"></a>
<span class="sourceLineNo">5581</span> for (int j = 0; j &lt; is; j++) {<a name="line.5581"></a>
<span class="sourceLineNo">5582</span> oai8data[it.oIndex + j] = ox;<a name="line.5582"></a>
<span class="sourceLineNo">5583</span> }<a name="line.5583"></a>
<span class="sourceLineNo">5584</span> }<a name="line.5584"></a>
<span class="sourceLineNo">5585</span> } else {<a name="line.5585"></a>
<span class="sourceLineNo">5586</span> while (it.hasNext()) {<a name="line.5586"></a>
<span class="sourceLineNo">5587</span> final long iax = it.aLong;<a name="line.5587"></a>
<span class="sourceLineNo">5588</span> final long ibx = it.bLong;<a name="line.5588"></a>
<span class="sourceLineNo">5589</span> byte ox;<a name="line.5589"></a>
<span class="sourceLineNo">5590</span> ox = (byte) (iax * ibx);<a name="line.5590"></a>
<span class="sourceLineNo">5591</span> for (int j = 0; j &lt; is; j++) {<a name="line.5591"></a>
<span class="sourceLineNo">5592</span> oai8data[it.oIndex + j] = ox;<a name="line.5592"></a>
<span class="sourceLineNo">5593</span> }<a name="line.5593"></a>
<span class="sourceLineNo">5594</span> }<a name="line.5594"></a>
<span class="sourceLineNo">5595</span> }<a name="line.5595"></a>
<span class="sourceLineNo">5596</span> } else {<a name="line.5596"></a>
<span class="sourceLineNo">5597</span> if (it.isOutputDouble()) {<a name="line.5597"></a>
<span class="sourceLineNo">5598</span> while (it.hasNext()) {<a name="line.5598"></a>
<span class="sourceLineNo">5599</span> double iax = it.aDouble;<a name="line.5599"></a>
<span class="sourceLineNo">5600</span> double ibx = it.bDouble;<a name="line.5600"></a>
<span class="sourceLineNo">5601</span> byte ox;<a name="line.5601"></a>
<span class="sourceLineNo">5602</span> ox = (byte) toLong(iax * ibx);<a name="line.5602"></a>
<span class="sourceLineNo">5603</span> oai8data[it.oIndex] = ox;<a name="line.5603"></a>
<span class="sourceLineNo">5604</span> for (int j = 1; j &lt; is; j++) {<a name="line.5604"></a>
<span class="sourceLineNo">5605</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.5605"></a>
<span class="sourceLineNo">5606</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.5606"></a>
<span class="sourceLineNo">5607</span> ox = (byte) toLong(iax * ibx);<a name="line.5607"></a>
<span class="sourceLineNo">5608</span> oai8data[it.oIndex + j] = ox;<a name="line.5608"></a>
<span class="sourceLineNo">5609</span> }<a name="line.5609"></a>
<span class="sourceLineNo">5610</span> }<a name="line.5610"></a>
<span class="sourceLineNo">5611</span> } else {<a name="line.5611"></a>
<span class="sourceLineNo">5612</span> while (it.hasNext()) {<a name="line.5612"></a>
<span class="sourceLineNo">5613</span> long iax = it.aLong;<a name="line.5613"></a>
<span class="sourceLineNo">5614</span> long ibx = it.bLong;<a name="line.5614"></a>
<span class="sourceLineNo">5615</span> byte ox;<a name="line.5615"></a>
<span class="sourceLineNo">5616</span> ox = (byte) (iax * ibx);<a name="line.5616"></a>
<span class="sourceLineNo">5617</span> oai8data[it.oIndex] = ox;<a name="line.5617"></a>
<span class="sourceLineNo">5618</span> for (int j = 1; j &lt; is; j++) {<a name="line.5618"></a>
<span class="sourceLineNo">5619</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.5619"></a>
<span class="sourceLineNo">5620</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.5620"></a>
<span class="sourceLineNo">5621</span> ox = (byte) (iax * ibx);<a name="line.5621"></a>
<span class="sourceLineNo">5622</span> oai8data[it.oIndex + j] = ox;<a name="line.5622"></a>
<span class="sourceLineNo">5623</span> }<a name="line.5623"></a>
<span class="sourceLineNo">5624</span> }<a name="line.5624"></a>
<span class="sourceLineNo">5625</span> }<a name="line.5625"></a>
<span class="sourceLineNo">5626</span> }<a name="line.5626"></a>
<span class="sourceLineNo">5627</span> break;<a name="line.5627"></a>
<span class="sourceLineNo">5628</span> case Dataset.ARRAYINT16:<a name="line.5628"></a>
<span class="sourceLineNo">5629</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.5629"></a>
<span class="sourceLineNo">5630</span> if (is == 1) {<a name="line.5630"></a>
<span class="sourceLineNo">5631</span> if (it.isOutputDouble()) {<a name="line.5631"></a>
<span class="sourceLineNo">5632</span> while (it.hasNext()) {<a name="line.5632"></a>
<span class="sourceLineNo">5633</span> final double iax = it.aDouble;<a name="line.5633"></a>
<span class="sourceLineNo">5634</span> final double ibx = it.bDouble;<a name="line.5634"></a>
<span class="sourceLineNo">5635</span> short ox;<a name="line.5635"></a>
<span class="sourceLineNo">5636</span> ox = (short) toLong(iax * ibx);<a name="line.5636"></a>
<span class="sourceLineNo">5637</span> oai16data[it.oIndex] = ox;<a name="line.5637"></a>
<span class="sourceLineNo">5638</span> }<a name="line.5638"></a>
<span class="sourceLineNo">5639</span> } else {<a name="line.5639"></a>
<span class="sourceLineNo">5640</span> while (it.hasNext()) {<a name="line.5640"></a>
<span class="sourceLineNo">5641</span> final long iax = it.aLong;<a name="line.5641"></a>
<span class="sourceLineNo">5642</span> final long ibx = it.bLong;<a name="line.5642"></a>
<span class="sourceLineNo">5643</span> short ox;<a name="line.5643"></a>
<span class="sourceLineNo">5644</span> ox = (short) (iax * ibx);<a name="line.5644"></a>
<span class="sourceLineNo">5645</span> oai16data[it.oIndex] = ox;<a name="line.5645"></a>
<span class="sourceLineNo">5646</span> }<a name="line.5646"></a>
<span class="sourceLineNo">5647</span> }<a name="line.5647"></a>
<span class="sourceLineNo">5648</span> } else if (as &lt; bs) {<a name="line.5648"></a>
<span class="sourceLineNo">5649</span> if (it.isOutputDouble()) {<a name="line.5649"></a>
<span class="sourceLineNo">5650</span> while (it.hasNext()) {<a name="line.5650"></a>
<span class="sourceLineNo">5651</span> final double iax = it.aDouble;<a name="line.5651"></a>
<span class="sourceLineNo">5652</span> double ibx = it.bDouble;<a name="line.5652"></a>
<span class="sourceLineNo">5653</span> short ox;<a name="line.5653"></a>
<span class="sourceLineNo">5654</span> ox = (short) toLong(iax * ibx);<a name="line.5654"></a>
<span class="sourceLineNo">5655</span> oai16data[it.oIndex] = ox;<a name="line.5655"></a>
<span class="sourceLineNo">5656</span> for (int j = 1; j &lt; is; j++) {<a name="line.5656"></a>
<span class="sourceLineNo">5657</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.5657"></a>
<span class="sourceLineNo">5658</span> ox = (short) toLong(iax * ibx);<a name="line.5658"></a>
<span class="sourceLineNo">5659</span> oai16data[it.oIndex + j] = ox;<a name="line.5659"></a>
<span class="sourceLineNo">5660</span> }<a name="line.5660"></a>
<span class="sourceLineNo">5661</span> }<a name="line.5661"></a>
<span class="sourceLineNo">5662</span> } else {<a name="line.5662"></a>
<span class="sourceLineNo">5663</span> while (it.hasNext()) {<a name="line.5663"></a>
<span class="sourceLineNo">5664</span> final long iax = it.aLong;<a name="line.5664"></a>
<span class="sourceLineNo">5665</span> long ibx = it.bLong;<a name="line.5665"></a>
<span class="sourceLineNo">5666</span> short ox;<a name="line.5666"></a>
<span class="sourceLineNo">5667</span> ox = (short) (iax * ibx);<a name="line.5667"></a>
<span class="sourceLineNo">5668</span> oai16data[it.oIndex] = ox;<a name="line.5668"></a>
<span class="sourceLineNo">5669</span> for (int j = 1; j &lt; is; j++) {<a name="line.5669"></a>
<span class="sourceLineNo">5670</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.5670"></a>
<span class="sourceLineNo">5671</span> ox = (short) (iax * ibx);<a name="line.5671"></a>
<span class="sourceLineNo">5672</span> oai16data[it.oIndex + j] = ox;<a name="line.5672"></a>
<span class="sourceLineNo">5673</span> }<a name="line.5673"></a>
<span class="sourceLineNo">5674</span> }<a name="line.5674"></a>
<span class="sourceLineNo">5675</span> }<a name="line.5675"></a>
<span class="sourceLineNo">5676</span> } else if (as &gt; bs) {<a name="line.5676"></a>
<span class="sourceLineNo">5677</span> if (it.isOutputDouble()) {<a name="line.5677"></a>
<span class="sourceLineNo">5678</span> while (it.hasNext()) {<a name="line.5678"></a>
<span class="sourceLineNo">5679</span> double iax = it.aDouble;<a name="line.5679"></a>
<span class="sourceLineNo">5680</span> final double ibx = it.bDouble;<a name="line.5680"></a>
<span class="sourceLineNo">5681</span> short ox;<a name="line.5681"></a>
<span class="sourceLineNo">5682</span> ox = (short) toLong(iax * ibx);<a name="line.5682"></a>
<span class="sourceLineNo">5683</span> oai16data[it.oIndex] = ox;<a name="line.5683"></a>
<span class="sourceLineNo">5684</span> for (int j = 1; j &lt; is; j++) {<a name="line.5684"></a>
<span class="sourceLineNo">5685</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.5685"></a>
<span class="sourceLineNo">5686</span> ox = (short) toLong(iax * ibx);<a name="line.5686"></a>
<span class="sourceLineNo">5687</span> oai16data[it.oIndex + j] = ox;<a name="line.5687"></a>
<span class="sourceLineNo">5688</span> }<a name="line.5688"></a>
<span class="sourceLineNo">5689</span> }<a name="line.5689"></a>
<span class="sourceLineNo">5690</span> } else {<a name="line.5690"></a>
<span class="sourceLineNo">5691</span> while (it.hasNext()) {<a name="line.5691"></a>
<span class="sourceLineNo">5692</span> long iax = it.aLong;<a name="line.5692"></a>
<span class="sourceLineNo">5693</span> final long ibx = it.bLong;<a name="line.5693"></a>
<span class="sourceLineNo">5694</span> short ox;<a name="line.5694"></a>
<span class="sourceLineNo">5695</span> ox = (short) (iax * ibx);<a name="line.5695"></a>
<span class="sourceLineNo">5696</span> oai16data[it.oIndex] = ox;<a name="line.5696"></a>
<span class="sourceLineNo">5697</span> for (int j = 1; j &lt; is; j++) {<a name="line.5697"></a>
<span class="sourceLineNo">5698</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.5698"></a>
<span class="sourceLineNo">5699</span> ox = (short) (iax * ibx);<a name="line.5699"></a>
<span class="sourceLineNo">5700</span> oai16data[it.oIndex + j] = ox;<a name="line.5700"></a>
<span class="sourceLineNo">5701</span> }<a name="line.5701"></a>
<span class="sourceLineNo">5702</span> }<a name="line.5702"></a>
<span class="sourceLineNo">5703</span> }<a name="line.5703"></a>
<span class="sourceLineNo">5704</span> } else if (as == 1) {<a name="line.5704"></a>
<span class="sourceLineNo">5705</span> if (it.isOutputDouble()) {<a name="line.5705"></a>
<span class="sourceLineNo">5706</span> while (it.hasNext()) {<a name="line.5706"></a>
<span class="sourceLineNo">5707</span> final double iax = it.aDouble;<a name="line.5707"></a>
<span class="sourceLineNo">5708</span> final double ibx = it.bDouble;<a name="line.5708"></a>
<span class="sourceLineNo">5709</span> short ox;<a name="line.5709"></a>
<span class="sourceLineNo">5710</span> ox = (short) toLong(iax * ibx);<a name="line.5710"></a>
<span class="sourceLineNo">5711</span> for (int j = 0; j &lt; is; j++) {<a name="line.5711"></a>
<span class="sourceLineNo">5712</span> oai16data[it.oIndex + j] = ox;<a name="line.5712"></a>
<span class="sourceLineNo">5713</span> }<a name="line.5713"></a>
<span class="sourceLineNo">5714</span> }<a name="line.5714"></a>
<span class="sourceLineNo">5715</span> } else {<a name="line.5715"></a>
<span class="sourceLineNo">5716</span> while (it.hasNext()) {<a name="line.5716"></a>
<span class="sourceLineNo">5717</span> final long iax = it.aLong;<a name="line.5717"></a>
<span class="sourceLineNo">5718</span> final long ibx = it.bLong;<a name="line.5718"></a>
<span class="sourceLineNo">5719</span> short ox;<a name="line.5719"></a>
<span class="sourceLineNo">5720</span> ox = (short) (iax * ibx);<a name="line.5720"></a>
<span class="sourceLineNo">5721</span> for (int j = 0; j &lt; is; j++) {<a name="line.5721"></a>
<span class="sourceLineNo">5722</span> oai16data[it.oIndex + j] = ox;<a name="line.5722"></a>
<span class="sourceLineNo">5723</span> }<a name="line.5723"></a>
<span class="sourceLineNo">5724</span> }<a name="line.5724"></a>
<span class="sourceLineNo">5725</span> }<a name="line.5725"></a>
<span class="sourceLineNo">5726</span> } else {<a name="line.5726"></a>
<span class="sourceLineNo">5727</span> if (it.isOutputDouble()) {<a name="line.5727"></a>
<span class="sourceLineNo">5728</span> while (it.hasNext()) {<a name="line.5728"></a>
<span class="sourceLineNo">5729</span> double iax = it.aDouble;<a name="line.5729"></a>
<span class="sourceLineNo">5730</span> double ibx = it.bDouble;<a name="line.5730"></a>
<span class="sourceLineNo">5731</span> short ox;<a name="line.5731"></a>
<span class="sourceLineNo">5732</span> ox = (short) toLong(iax * ibx);<a name="line.5732"></a>
<span class="sourceLineNo">5733</span> oai16data[it.oIndex] = ox;<a name="line.5733"></a>
<span class="sourceLineNo">5734</span> for (int j = 1; j &lt; is; j++) {<a name="line.5734"></a>
<span class="sourceLineNo">5735</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.5735"></a>
<span class="sourceLineNo">5736</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.5736"></a>
<span class="sourceLineNo">5737</span> ox = (short) toLong(iax * ibx);<a name="line.5737"></a>
<span class="sourceLineNo">5738</span> oai16data[it.oIndex + j] = ox;<a name="line.5738"></a>
<span class="sourceLineNo">5739</span> }<a name="line.5739"></a>
<span class="sourceLineNo">5740</span> }<a name="line.5740"></a>
<span class="sourceLineNo">5741</span> } else {<a name="line.5741"></a>
<span class="sourceLineNo">5742</span> while (it.hasNext()) {<a name="line.5742"></a>
<span class="sourceLineNo">5743</span> long iax = it.aLong;<a name="line.5743"></a>
<span class="sourceLineNo">5744</span> long ibx = it.bLong;<a name="line.5744"></a>
<span class="sourceLineNo">5745</span> short ox;<a name="line.5745"></a>
<span class="sourceLineNo">5746</span> ox = (short) (iax * ibx);<a name="line.5746"></a>
<span class="sourceLineNo">5747</span> oai16data[it.oIndex] = ox;<a name="line.5747"></a>
<span class="sourceLineNo">5748</span> for (int j = 1; j &lt; is; j++) {<a name="line.5748"></a>
<span class="sourceLineNo">5749</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.5749"></a>
<span class="sourceLineNo">5750</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.5750"></a>
<span class="sourceLineNo">5751</span> ox = (short) (iax * ibx);<a name="line.5751"></a>
<span class="sourceLineNo">5752</span> oai16data[it.oIndex + j] = ox;<a name="line.5752"></a>
<span class="sourceLineNo">5753</span> }<a name="line.5753"></a>
<span class="sourceLineNo">5754</span> }<a name="line.5754"></a>
<span class="sourceLineNo">5755</span> }<a name="line.5755"></a>
<span class="sourceLineNo">5756</span> }<a name="line.5756"></a>
<span class="sourceLineNo">5757</span> break;<a name="line.5757"></a>
<span class="sourceLineNo">5758</span> case Dataset.ARRAYINT64:<a name="line.5758"></a>
<span class="sourceLineNo">5759</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.5759"></a>
<span class="sourceLineNo">5760</span> if (is == 1) {<a name="line.5760"></a>
<span class="sourceLineNo">5761</span> if (it.isOutputDouble()) {<a name="line.5761"></a>
<span class="sourceLineNo">5762</span> while (it.hasNext()) {<a name="line.5762"></a>
<span class="sourceLineNo">5763</span> final double iax = it.aDouble;<a name="line.5763"></a>
<span class="sourceLineNo">5764</span> final double ibx = it.bDouble;<a name="line.5764"></a>
<span class="sourceLineNo">5765</span> long ox;<a name="line.5765"></a>
<span class="sourceLineNo">5766</span> ox = toLong(iax * ibx);<a name="line.5766"></a>
<span class="sourceLineNo">5767</span> oai64data[it.oIndex] = ox;<a name="line.5767"></a>
<span class="sourceLineNo">5768</span> }<a name="line.5768"></a>
<span class="sourceLineNo">5769</span> } else {<a name="line.5769"></a>
<span class="sourceLineNo">5770</span> while (it.hasNext()) {<a name="line.5770"></a>
<span class="sourceLineNo">5771</span> final long iax = it.aLong;<a name="line.5771"></a>
<span class="sourceLineNo">5772</span> final long ibx = it.bLong;<a name="line.5772"></a>
<span class="sourceLineNo">5773</span> long ox;<a name="line.5773"></a>
<span class="sourceLineNo">5774</span> ox = (iax * ibx);<a name="line.5774"></a>
<span class="sourceLineNo">5775</span> oai64data[it.oIndex] = ox;<a name="line.5775"></a>
<span class="sourceLineNo">5776</span> }<a name="line.5776"></a>
<span class="sourceLineNo">5777</span> }<a name="line.5777"></a>
<span class="sourceLineNo">5778</span> } else if (as &lt; bs) {<a name="line.5778"></a>
<span class="sourceLineNo">5779</span> if (it.isOutputDouble()) {<a name="line.5779"></a>
<span class="sourceLineNo">5780</span> while (it.hasNext()) {<a name="line.5780"></a>
<span class="sourceLineNo">5781</span> final double iax = it.aDouble;<a name="line.5781"></a>
<span class="sourceLineNo">5782</span> double ibx = it.bDouble;<a name="line.5782"></a>
<span class="sourceLineNo">5783</span> long ox;<a name="line.5783"></a>
<span class="sourceLineNo">5784</span> ox = toLong(iax * ibx);<a name="line.5784"></a>
<span class="sourceLineNo">5785</span> oai64data[it.oIndex] = ox;<a name="line.5785"></a>
<span class="sourceLineNo">5786</span> for (int j = 1; j &lt; is; j++) {<a name="line.5786"></a>
<span class="sourceLineNo">5787</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.5787"></a>
<span class="sourceLineNo">5788</span> ox = toLong(iax * ibx);<a name="line.5788"></a>
<span class="sourceLineNo">5789</span> oai64data[it.oIndex + j] = ox;<a name="line.5789"></a>
<span class="sourceLineNo">5790</span> }<a name="line.5790"></a>
<span class="sourceLineNo">5791</span> }<a name="line.5791"></a>
<span class="sourceLineNo">5792</span> } else {<a name="line.5792"></a>
<span class="sourceLineNo">5793</span> while (it.hasNext()) {<a name="line.5793"></a>
<span class="sourceLineNo">5794</span> final long iax = it.aLong;<a name="line.5794"></a>
<span class="sourceLineNo">5795</span> long ibx = it.bLong;<a name="line.5795"></a>
<span class="sourceLineNo">5796</span> long ox;<a name="line.5796"></a>
<span class="sourceLineNo">5797</span> ox = (iax * ibx);<a name="line.5797"></a>
<span class="sourceLineNo">5798</span> oai64data[it.oIndex] = ox;<a name="line.5798"></a>
<span class="sourceLineNo">5799</span> for (int j = 1; j &lt; is; j++) {<a name="line.5799"></a>
<span class="sourceLineNo">5800</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.5800"></a>
<span class="sourceLineNo">5801</span> ox = (iax * ibx);<a name="line.5801"></a>
<span class="sourceLineNo">5802</span> oai64data[it.oIndex + j] = ox;<a name="line.5802"></a>
<span class="sourceLineNo">5803</span> }<a name="line.5803"></a>
<span class="sourceLineNo">5804</span> }<a name="line.5804"></a>
<span class="sourceLineNo">5805</span> }<a name="line.5805"></a>
<span class="sourceLineNo">5806</span> } else if (as &gt; bs) {<a name="line.5806"></a>
<span class="sourceLineNo">5807</span> if (it.isOutputDouble()) {<a name="line.5807"></a>
<span class="sourceLineNo">5808</span> while (it.hasNext()) {<a name="line.5808"></a>
<span class="sourceLineNo">5809</span> double iax = it.aDouble;<a name="line.5809"></a>
<span class="sourceLineNo">5810</span> final double ibx = it.bDouble;<a name="line.5810"></a>
<span class="sourceLineNo">5811</span> long ox;<a name="line.5811"></a>
<span class="sourceLineNo">5812</span> ox = toLong(iax * ibx);<a name="line.5812"></a>
<span class="sourceLineNo">5813</span> oai64data[it.oIndex] = ox;<a name="line.5813"></a>
<span class="sourceLineNo">5814</span> for (int j = 1; j &lt; is; j++) {<a name="line.5814"></a>
<span class="sourceLineNo">5815</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.5815"></a>
<span class="sourceLineNo">5816</span> ox = toLong(iax * ibx);<a name="line.5816"></a>
<span class="sourceLineNo">5817</span> oai64data[it.oIndex + j] = ox;<a name="line.5817"></a>
<span class="sourceLineNo">5818</span> }<a name="line.5818"></a>
<span class="sourceLineNo">5819</span> }<a name="line.5819"></a>
<span class="sourceLineNo">5820</span> } else {<a name="line.5820"></a>
<span class="sourceLineNo">5821</span> while (it.hasNext()) {<a name="line.5821"></a>
<span class="sourceLineNo">5822</span> long iax = it.aLong;<a name="line.5822"></a>
<span class="sourceLineNo">5823</span> final long ibx = it.bLong;<a name="line.5823"></a>
<span class="sourceLineNo">5824</span> long ox;<a name="line.5824"></a>
<span class="sourceLineNo">5825</span> ox = (iax * ibx);<a name="line.5825"></a>
<span class="sourceLineNo">5826</span> oai64data[it.oIndex] = ox;<a name="line.5826"></a>
<span class="sourceLineNo">5827</span> for (int j = 1; j &lt; is; j++) {<a name="line.5827"></a>
<span class="sourceLineNo">5828</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.5828"></a>
<span class="sourceLineNo">5829</span> ox = (iax * ibx);<a name="line.5829"></a>
<span class="sourceLineNo">5830</span> oai64data[it.oIndex + j] = ox;<a name="line.5830"></a>
<span class="sourceLineNo">5831</span> }<a name="line.5831"></a>
<span class="sourceLineNo">5832</span> }<a name="line.5832"></a>
<span class="sourceLineNo">5833</span> }<a name="line.5833"></a>
<span class="sourceLineNo">5834</span> } else if (as == 1) {<a name="line.5834"></a>
<span class="sourceLineNo">5835</span> if (it.isOutputDouble()) {<a name="line.5835"></a>
<span class="sourceLineNo">5836</span> while (it.hasNext()) {<a name="line.5836"></a>
<span class="sourceLineNo">5837</span> final double iax = it.aDouble;<a name="line.5837"></a>
<span class="sourceLineNo">5838</span> final double ibx = it.bDouble;<a name="line.5838"></a>
<span class="sourceLineNo">5839</span> long ox;<a name="line.5839"></a>
<span class="sourceLineNo">5840</span> ox = toLong(iax * ibx);<a name="line.5840"></a>
<span class="sourceLineNo">5841</span> for (int j = 0; j &lt; is; j++) {<a name="line.5841"></a>
<span class="sourceLineNo">5842</span> oai64data[it.oIndex + j] = ox;<a name="line.5842"></a>
<span class="sourceLineNo">5843</span> }<a name="line.5843"></a>
<span class="sourceLineNo">5844</span> }<a name="line.5844"></a>
<span class="sourceLineNo">5845</span> } else {<a name="line.5845"></a>
<span class="sourceLineNo">5846</span> while (it.hasNext()) {<a name="line.5846"></a>
<span class="sourceLineNo">5847</span> final long iax = it.aLong;<a name="line.5847"></a>
<span class="sourceLineNo">5848</span> final long ibx = it.bLong;<a name="line.5848"></a>
<span class="sourceLineNo">5849</span> long ox;<a name="line.5849"></a>
<span class="sourceLineNo">5850</span> ox = (iax * ibx);<a name="line.5850"></a>
<span class="sourceLineNo">5851</span> for (int j = 0; j &lt; is; j++) {<a name="line.5851"></a>
<span class="sourceLineNo">5852</span> oai64data[it.oIndex + j] = ox;<a name="line.5852"></a>
<span class="sourceLineNo">5853</span> }<a name="line.5853"></a>
<span class="sourceLineNo">5854</span> }<a name="line.5854"></a>
<span class="sourceLineNo">5855</span> }<a name="line.5855"></a>
<span class="sourceLineNo">5856</span> } else {<a name="line.5856"></a>
<span class="sourceLineNo">5857</span> if (it.isOutputDouble()) {<a name="line.5857"></a>
<span class="sourceLineNo">5858</span> while (it.hasNext()) {<a name="line.5858"></a>
<span class="sourceLineNo">5859</span> double iax = it.aDouble;<a name="line.5859"></a>
<span class="sourceLineNo">5860</span> double ibx = it.bDouble;<a name="line.5860"></a>
<span class="sourceLineNo">5861</span> long ox;<a name="line.5861"></a>
<span class="sourceLineNo">5862</span> ox = toLong(iax * ibx);<a name="line.5862"></a>
<span class="sourceLineNo">5863</span> oai64data[it.oIndex] = ox;<a name="line.5863"></a>
<span class="sourceLineNo">5864</span> for (int j = 1; j &lt; is; j++) {<a name="line.5864"></a>
<span class="sourceLineNo">5865</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.5865"></a>
<span class="sourceLineNo">5866</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.5866"></a>
<span class="sourceLineNo">5867</span> ox = toLong(iax * ibx);<a name="line.5867"></a>
<span class="sourceLineNo">5868</span> oai64data[it.oIndex + j] = ox;<a name="line.5868"></a>
<span class="sourceLineNo">5869</span> }<a name="line.5869"></a>
<span class="sourceLineNo">5870</span> }<a name="line.5870"></a>
<span class="sourceLineNo">5871</span> } else {<a name="line.5871"></a>
<span class="sourceLineNo">5872</span> while (it.hasNext()) {<a name="line.5872"></a>
<span class="sourceLineNo">5873</span> long iax = it.aLong;<a name="line.5873"></a>
<span class="sourceLineNo">5874</span> long ibx = it.bLong;<a name="line.5874"></a>
<span class="sourceLineNo">5875</span> long ox;<a name="line.5875"></a>
<span class="sourceLineNo">5876</span> ox = (iax * ibx);<a name="line.5876"></a>
<span class="sourceLineNo">5877</span> oai64data[it.oIndex] = ox;<a name="line.5877"></a>
<span class="sourceLineNo">5878</span> for (int j = 1; j &lt; is; j++) {<a name="line.5878"></a>
<span class="sourceLineNo">5879</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.5879"></a>
<span class="sourceLineNo">5880</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.5880"></a>
<span class="sourceLineNo">5881</span> ox = (iax * ibx);<a name="line.5881"></a>
<span class="sourceLineNo">5882</span> oai64data[it.oIndex + j] = ox;<a name="line.5882"></a>
<span class="sourceLineNo">5883</span> }<a name="line.5883"></a>
<span class="sourceLineNo">5884</span> }<a name="line.5884"></a>
<span class="sourceLineNo">5885</span> }<a name="line.5885"></a>
<span class="sourceLineNo">5886</span> }<a name="line.5886"></a>
<span class="sourceLineNo">5887</span> break;<a name="line.5887"></a>
<span class="sourceLineNo">5888</span> case Dataset.ARRAYINT32:<a name="line.5888"></a>
<span class="sourceLineNo">5889</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.5889"></a>
<span class="sourceLineNo">5890</span> if (is == 1) {<a name="line.5890"></a>
<span class="sourceLineNo">5891</span> if (it.isOutputDouble()) {<a name="line.5891"></a>
<span class="sourceLineNo">5892</span> while (it.hasNext()) {<a name="line.5892"></a>
<span class="sourceLineNo">5893</span> final double iax = it.aDouble;<a name="line.5893"></a>
<span class="sourceLineNo">5894</span> final double ibx = it.bDouble;<a name="line.5894"></a>
<span class="sourceLineNo">5895</span> int ox;<a name="line.5895"></a>
<span class="sourceLineNo">5896</span> ox = (int) toLong(iax * ibx);<a name="line.5896"></a>
<span class="sourceLineNo">5897</span> oai32data[it.oIndex] = ox;<a name="line.5897"></a>
<span class="sourceLineNo">5898</span> }<a name="line.5898"></a>
<span class="sourceLineNo">5899</span> } else {<a name="line.5899"></a>
<span class="sourceLineNo">5900</span> while (it.hasNext()) {<a name="line.5900"></a>
<span class="sourceLineNo">5901</span> final long iax = it.aLong;<a name="line.5901"></a>
<span class="sourceLineNo">5902</span> final long ibx = it.bLong;<a name="line.5902"></a>
<span class="sourceLineNo">5903</span> int ox;<a name="line.5903"></a>
<span class="sourceLineNo">5904</span> ox = (int) (iax * ibx);<a name="line.5904"></a>
<span class="sourceLineNo">5905</span> oai32data[it.oIndex] = ox;<a name="line.5905"></a>
<span class="sourceLineNo">5906</span> }<a name="line.5906"></a>
<span class="sourceLineNo">5907</span> }<a name="line.5907"></a>
<span class="sourceLineNo">5908</span> } else if (as &lt; bs) {<a name="line.5908"></a>
<span class="sourceLineNo">5909</span> if (it.isOutputDouble()) {<a name="line.5909"></a>
<span class="sourceLineNo">5910</span> while (it.hasNext()) {<a name="line.5910"></a>
<span class="sourceLineNo">5911</span> final double iax = it.aDouble;<a name="line.5911"></a>
<span class="sourceLineNo">5912</span> double ibx = it.bDouble;<a name="line.5912"></a>
<span class="sourceLineNo">5913</span> int ox;<a name="line.5913"></a>
<span class="sourceLineNo">5914</span> ox = (int) toLong(iax * ibx);<a name="line.5914"></a>
<span class="sourceLineNo">5915</span> oai32data[it.oIndex] = ox;<a name="line.5915"></a>
<span class="sourceLineNo">5916</span> for (int j = 1; j &lt; is; j++) {<a name="line.5916"></a>
<span class="sourceLineNo">5917</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.5917"></a>
<span class="sourceLineNo">5918</span> ox = (int) toLong(iax * ibx);<a name="line.5918"></a>
<span class="sourceLineNo">5919</span> oai32data[it.oIndex + j] = ox;<a name="line.5919"></a>
<span class="sourceLineNo">5920</span> }<a name="line.5920"></a>
<span class="sourceLineNo">5921</span> }<a name="line.5921"></a>
<span class="sourceLineNo">5922</span> } else {<a name="line.5922"></a>
<span class="sourceLineNo">5923</span> while (it.hasNext()) {<a name="line.5923"></a>
<span class="sourceLineNo">5924</span> final long iax = it.aLong;<a name="line.5924"></a>
<span class="sourceLineNo">5925</span> long ibx = it.bLong;<a name="line.5925"></a>
<span class="sourceLineNo">5926</span> int ox;<a name="line.5926"></a>
<span class="sourceLineNo">5927</span> ox = (int) (iax * ibx);<a name="line.5927"></a>
<span class="sourceLineNo">5928</span> oai32data[it.oIndex] = ox;<a name="line.5928"></a>
<span class="sourceLineNo">5929</span> for (int j = 1; j &lt; is; j++) {<a name="line.5929"></a>
<span class="sourceLineNo">5930</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.5930"></a>
<span class="sourceLineNo">5931</span> ox = (int) (iax * ibx);<a name="line.5931"></a>
<span class="sourceLineNo">5932</span> oai32data[it.oIndex + j] = ox;<a name="line.5932"></a>
<span class="sourceLineNo">5933</span> }<a name="line.5933"></a>
<span class="sourceLineNo">5934</span> }<a name="line.5934"></a>
<span class="sourceLineNo">5935</span> }<a name="line.5935"></a>
<span class="sourceLineNo">5936</span> } else if (as &gt; bs) {<a name="line.5936"></a>
<span class="sourceLineNo">5937</span> if (it.isOutputDouble()) {<a name="line.5937"></a>
<span class="sourceLineNo">5938</span> while (it.hasNext()) {<a name="line.5938"></a>
<span class="sourceLineNo">5939</span> double iax = it.aDouble;<a name="line.5939"></a>
<span class="sourceLineNo">5940</span> final double ibx = it.bDouble;<a name="line.5940"></a>
<span class="sourceLineNo">5941</span> int ox;<a name="line.5941"></a>
<span class="sourceLineNo">5942</span> ox = (int) toLong(iax * ibx);<a name="line.5942"></a>
<span class="sourceLineNo">5943</span> oai32data[it.oIndex] = ox;<a name="line.5943"></a>
<span class="sourceLineNo">5944</span> for (int j = 1; j &lt; is; j++) {<a name="line.5944"></a>
<span class="sourceLineNo">5945</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.5945"></a>
<span class="sourceLineNo">5946</span> ox = (int) toLong(iax * ibx);<a name="line.5946"></a>
<span class="sourceLineNo">5947</span> oai32data[it.oIndex + j] = ox;<a name="line.5947"></a>
<span class="sourceLineNo">5948</span> }<a name="line.5948"></a>
<span class="sourceLineNo">5949</span> }<a name="line.5949"></a>
<span class="sourceLineNo">5950</span> } else {<a name="line.5950"></a>
<span class="sourceLineNo">5951</span> while (it.hasNext()) {<a name="line.5951"></a>
<span class="sourceLineNo">5952</span> long iax = it.aLong;<a name="line.5952"></a>
<span class="sourceLineNo">5953</span> final long ibx = it.bLong;<a name="line.5953"></a>
<span class="sourceLineNo">5954</span> int ox;<a name="line.5954"></a>
<span class="sourceLineNo">5955</span> ox = (int) (iax * ibx);<a name="line.5955"></a>
<span class="sourceLineNo">5956</span> oai32data[it.oIndex] = ox;<a name="line.5956"></a>
<span class="sourceLineNo">5957</span> for (int j = 1; j &lt; is; j++) {<a name="line.5957"></a>
<span class="sourceLineNo">5958</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.5958"></a>
<span class="sourceLineNo">5959</span> ox = (int) (iax * ibx);<a name="line.5959"></a>
<span class="sourceLineNo">5960</span> oai32data[it.oIndex + j] = ox;<a name="line.5960"></a>
<span class="sourceLineNo">5961</span> }<a name="line.5961"></a>
<span class="sourceLineNo">5962</span> }<a name="line.5962"></a>
<span class="sourceLineNo">5963</span> }<a name="line.5963"></a>
<span class="sourceLineNo">5964</span> } else if (as == 1) {<a name="line.5964"></a>
<span class="sourceLineNo">5965</span> if (it.isOutputDouble()) {<a name="line.5965"></a>
<span class="sourceLineNo">5966</span> while (it.hasNext()) {<a name="line.5966"></a>
<span class="sourceLineNo">5967</span> final double iax = it.aDouble;<a name="line.5967"></a>
<span class="sourceLineNo">5968</span> final double ibx = it.bDouble;<a name="line.5968"></a>
<span class="sourceLineNo">5969</span> int ox;<a name="line.5969"></a>
<span class="sourceLineNo">5970</span> ox = (int) toLong(iax * ibx);<a name="line.5970"></a>
<span class="sourceLineNo">5971</span> for (int j = 0; j &lt; is; j++) {<a name="line.5971"></a>
<span class="sourceLineNo">5972</span> oai32data[it.oIndex + j] = ox;<a name="line.5972"></a>
<span class="sourceLineNo">5973</span> }<a name="line.5973"></a>
<span class="sourceLineNo">5974</span> }<a name="line.5974"></a>
<span class="sourceLineNo">5975</span> } else {<a name="line.5975"></a>
<span class="sourceLineNo">5976</span> while (it.hasNext()) {<a name="line.5976"></a>
<span class="sourceLineNo">5977</span> final long iax = it.aLong;<a name="line.5977"></a>
<span class="sourceLineNo">5978</span> final long ibx = it.bLong;<a name="line.5978"></a>
<span class="sourceLineNo">5979</span> int ox;<a name="line.5979"></a>
<span class="sourceLineNo">5980</span> ox = (int) (iax * ibx);<a name="line.5980"></a>
<span class="sourceLineNo">5981</span> for (int j = 0; j &lt; is; j++) {<a name="line.5981"></a>
<span class="sourceLineNo">5982</span> oai32data[it.oIndex + j] = ox;<a name="line.5982"></a>
<span class="sourceLineNo">5983</span> }<a name="line.5983"></a>
<span class="sourceLineNo">5984</span> }<a name="line.5984"></a>
<span class="sourceLineNo">5985</span> }<a name="line.5985"></a>
<span class="sourceLineNo">5986</span> } else {<a name="line.5986"></a>
<span class="sourceLineNo">5987</span> if (it.isOutputDouble()) {<a name="line.5987"></a>
<span class="sourceLineNo">5988</span> while (it.hasNext()) {<a name="line.5988"></a>
<span class="sourceLineNo">5989</span> double iax = it.aDouble;<a name="line.5989"></a>
<span class="sourceLineNo">5990</span> double ibx = it.bDouble;<a name="line.5990"></a>
<span class="sourceLineNo">5991</span> int ox;<a name="line.5991"></a>
<span class="sourceLineNo">5992</span> ox = (int) toLong(iax * ibx);<a name="line.5992"></a>
<span class="sourceLineNo">5993</span> oai32data[it.oIndex] = ox;<a name="line.5993"></a>
<span class="sourceLineNo">5994</span> for (int j = 1; j &lt; is; j++) {<a name="line.5994"></a>
<span class="sourceLineNo">5995</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.5995"></a>
<span class="sourceLineNo">5996</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.5996"></a>
<span class="sourceLineNo">5997</span> ox = (int) toLong(iax * ibx);<a name="line.5997"></a>
<span class="sourceLineNo">5998</span> oai32data[it.oIndex + j] = ox;<a name="line.5998"></a>
<span class="sourceLineNo">5999</span> }<a name="line.5999"></a>
<span class="sourceLineNo">6000</span> }<a name="line.6000"></a>
<span class="sourceLineNo">6001</span> } else {<a name="line.6001"></a>
<span class="sourceLineNo">6002</span> while (it.hasNext()) {<a name="line.6002"></a>
<span class="sourceLineNo">6003</span> long iax = it.aLong;<a name="line.6003"></a>
<span class="sourceLineNo">6004</span> long ibx = it.bLong;<a name="line.6004"></a>
<span class="sourceLineNo">6005</span> int ox;<a name="line.6005"></a>
<span class="sourceLineNo">6006</span> ox = (int) (iax * ibx);<a name="line.6006"></a>
<span class="sourceLineNo">6007</span> oai32data[it.oIndex] = ox;<a name="line.6007"></a>
<span class="sourceLineNo">6008</span> for (int j = 1; j &lt; is; j++) {<a name="line.6008"></a>
<span class="sourceLineNo">6009</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.6009"></a>
<span class="sourceLineNo">6010</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.6010"></a>
<span class="sourceLineNo">6011</span> ox = (int) (iax * ibx);<a name="line.6011"></a>
<span class="sourceLineNo">6012</span> oai32data[it.oIndex + j] = ox;<a name="line.6012"></a>
<span class="sourceLineNo">6013</span> }<a name="line.6013"></a>
<span class="sourceLineNo">6014</span> }<a name="line.6014"></a>
<span class="sourceLineNo">6015</span> }<a name="line.6015"></a>
<span class="sourceLineNo">6016</span> }<a name="line.6016"></a>
<span class="sourceLineNo">6017</span> break;<a name="line.6017"></a>
<span class="sourceLineNo">6018</span> case Dataset.FLOAT32:<a name="line.6018"></a>
<span class="sourceLineNo">6019</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.6019"></a>
<span class="sourceLineNo">6020</span> if (it.isOutputDouble()) {<a name="line.6020"></a>
<span class="sourceLineNo">6021</span> while (it.hasNext()) {<a name="line.6021"></a>
<span class="sourceLineNo">6022</span> final double iax = it.aDouble;<a name="line.6022"></a>
<span class="sourceLineNo">6023</span> final double ibx = it.bDouble;<a name="line.6023"></a>
<span class="sourceLineNo">6024</span> float ox;<a name="line.6024"></a>
<span class="sourceLineNo">6025</span> ox = (float) (iax * ibx);<a name="line.6025"></a>
<span class="sourceLineNo">6026</span> of32data[it.oIndex] = ox;<a name="line.6026"></a>
<span class="sourceLineNo">6027</span> }<a name="line.6027"></a>
<span class="sourceLineNo">6028</span> } else {<a name="line.6028"></a>
<span class="sourceLineNo">6029</span> while (it.hasNext()) {<a name="line.6029"></a>
<span class="sourceLineNo">6030</span> final long iax = it.aLong;<a name="line.6030"></a>
<span class="sourceLineNo">6031</span> final long ibx = it.bLong;<a name="line.6031"></a>
<span class="sourceLineNo">6032</span> float ox;<a name="line.6032"></a>
<span class="sourceLineNo">6033</span> ox = (iax * ibx);<a name="line.6033"></a>
<span class="sourceLineNo">6034</span> of32data[it.oIndex] = ox;<a name="line.6034"></a>
<span class="sourceLineNo">6035</span> }<a name="line.6035"></a>
<span class="sourceLineNo">6036</span> }<a name="line.6036"></a>
<span class="sourceLineNo">6037</span> break;<a name="line.6037"></a>
<span class="sourceLineNo">6038</span> case Dataset.FLOAT64:<a name="line.6038"></a>
<span class="sourceLineNo">6039</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.6039"></a>
<span class="sourceLineNo">6040</span> if (it.isOutputDouble()) {<a name="line.6040"></a>
<span class="sourceLineNo">6041</span> while (it.hasNext()) {<a name="line.6041"></a>
<span class="sourceLineNo">6042</span> final double iax = it.aDouble;<a name="line.6042"></a>
<span class="sourceLineNo">6043</span> final double ibx = it.bDouble;<a name="line.6043"></a>
<span class="sourceLineNo">6044</span> double ox;<a name="line.6044"></a>
<span class="sourceLineNo">6045</span> ox = (iax * ibx);<a name="line.6045"></a>
<span class="sourceLineNo">6046</span> of64data[it.oIndex] = ox;<a name="line.6046"></a>
<span class="sourceLineNo">6047</span> }<a name="line.6047"></a>
<span class="sourceLineNo">6048</span> } else {<a name="line.6048"></a>
<span class="sourceLineNo">6049</span> while (it.hasNext()) {<a name="line.6049"></a>
<span class="sourceLineNo">6050</span> final long iax = it.aLong;<a name="line.6050"></a>
<span class="sourceLineNo">6051</span> final long ibx = it.bLong;<a name="line.6051"></a>
<span class="sourceLineNo">6052</span> double ox;<a name="line.6052"></a>
<span class="sourceLineNo">6053</span> ox = (iax * ibx);<a name="line.6053"></a>
<span class="sourceLineNo">6054</span> of64data[it.oIndex] = ox;<a name="line.6054"></a>
<span class="sourceLineNo">6055</span> }<a name="line.6055"></a>
<span class="sourceLineNo">6056</span> }<a name="line.6056"></a>
<span class="sourceLineNo">6057</span> break;<a name="line.6057"></a>
<span class="sourceLineNo">6058</span> case Dataset.ARRAYFLOAT32:<a name="line.6058"></a>
<span class="sourceLineNo">6059</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.6059"></a>
<span class="sourceLineNo">6060</span> if (is == 1) {<a name="line.6060"></a>
<span class="sourceLineNo">6061</span> if (it.isOutputDouble()) {<a name="line.6061"></a>
<span class="sourceLineNo">6062</span> while (it.hasNext()) {<a name="line.6062"></a>
<span class="sourceLineNo">6063</span> final double iax = it.aDouble;<a name="line.6063"></a>
<span class="sourceLineNo">6064</span> final double ibx = it.bDouble;<a name="line.6064"></a>
<span class="sourceLineNo">6065</span> float ox;<a name="line.6065"></a>
<span class="sourceLineNo">6066</span> ox = (float) (iax * ibx);<a name="line.6066"></a>
<span class="sourceLineNo">6067</span> oaf32data[it.oIndex] = ox;<a name="line.6067"></a>
<span class="sourceLineNo">6068</span> }<a name="line.6068"></a>
<span class="sourceLineNo">6069</span> } else {<a name="line.6069"></a>
<span class="sourceLineNo">6070</span> while (it.hasNext()) {<a name="line.6070"></a>
<span class="sourceLineNo">6071</span> final long iax = it.aLong;<a name="line.6071"></a>
<span class="sourceLineNo">6072</span> final long ibx = it.bLong;<a name="line.6072"></a>
<span class="sourceLineNo">6073</span> float ox;<a name="line.6073"></a>
<span class="sourceLineNo">6074</span> ox = (iax * ibx);<a name="line.6074"></a>
<span class="sourceLineNo">6075</span> oaf32data[it.oIndex] = ox;<a name="line.6075"></a>
<span class="sourceLineNo">6076</span> }<a name="line.6076"></a>
<span class="sourceLineNo">6077</span> }<a name="line.6077"></a>
<span class="sourceLineNo">6078</span> } else if (as &lt; bs) {<a name="line.6078"></a>
<span class="sourceLineNo">6079</span> if (it.isOutputDouble()) {<a name="line.6079"></a>
<span class="sourceLineNo">6080</span> while (it.hasNext()) {<a name="line.6080"></a>
<span class="sourceLineNo">6081</span> final double iax = it.aDouble;<a name="line.6081"></a>
<span class="sourceLineNo">6082</span> double ibx = it.bDouble;<a name="line.6082"></a>
<span class="sourceLineNo">6083</span> float ox;<a name="line.6083"></a>
<span class="sourceLineNo">6084</span> ox = (float) (iax * ibx);<a name="line.6084"></a>
<span class="sourceLineNo">6085</span> oaf32data[it.oIndex] = ox;<a name="line.6085"></a>
<span class="sourceLineNo">6086</span> for (int j = 1; j &lt; is; j++) {<a name="line.6086"></a>
<span class="sourceLineNo">6087</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.6087"></a>
<span class="sourceLineNo">6088</span> ox = (float) (iax * ibx);<a name="line.6088"></a>
<span class="sourceLineNo">6089</span> oaf32data[it.oIndex + j] = ox;<a name="line.6089"></a>
<span class="sourceLineNo">6090</span> }<a name="line.6090"></a>
<span class="sourceLineNo">6091</span> }<a name="line.6091"></a>
<span class="sourceLineNo">6092</span> } else {<a name="line.6092"></a>
<span class="sourceLineNo">6093</span> while (it.hasNext()) {<a name="line.6093"></a>
<span class="sourceLineNo">6094</span> final long iax = it.aLong;<a name="line.6094"></a>
<span class="sourceLineNo">6095</span> long ibx = it.bLong;<a name="line.6095"></a>
<span class="sourceLineNo">6096</span> float ox;<a name="line.6096"></a>
<span class="sourceLineNo">6097</span> ox = (iax * ibx);<a name="line.6097"></a>
<span class="sourceLineNo">6098</span> oaf32data[it.oIndex] = ox;<a name="line.6098"></a>
<span class="sourceLineNo">6099</span> for (int j = 1; j &lt; is; j++) {<a name="line.6099"></a>
<span class="sourceLineNo">6100</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.6100"></a>
<span class="sourceLineNo">6101</span> ox = (iax * ibx);<a name="line.6101"></a>
<span class="sourceLineNo">6102</span> oaf32data[it.oIndex + j] = ox;<a name="line.6102"></a>
<span class="sourceLineNo">6103</span> }<a name="line.6103"></a>
<span class="sourceLineNo">6104</span> }<a name="line.6104"></a>
<span class="sourceLineNo">6105</span> }<a name="line.6105"></a>
<span class="sourceLineNo">6106</span> } else if (as &gt; bs) {<a name="line.6106"></a>
<span class="sourceLineNo">6107</span> if (it.isOutputDouble()) {<a name="line.6107"></a>
<span class="sourceLineNo">6108</span> while (it.hasNext()) {<a name="line.6108"></a>
<span class="sourceLineNo">6109</span> double iax = it.aDouble;<a name="line.6109"></a>
<span class="sourceLineNo">6110</span> final double ibx = it.bDouble;<a name="line.6110"></a>
<span class="sourceLineNo">6111</span> float ox;<a name="line.6111"></a>
<span class="sourceLineNo">6112</span> ox = (float) (iax * ibx);<a name="line.6112"></a>
<span class="sourceLineNo">6113</span> oaf32data[it.oIndex] = ox;<a name="line.6113"></a>
<span class="sourceLineNo">6114</span> for (int j = 1; j &lt; is; j++) {<a name="line.6114"></a>
<span class="sourceLineNo">6115</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.6115"></a>
<span class="sourceLineNo">6116</span> ox = (float) (iax * ibx);<a name="line.6116"></a>
<span class="sourceLineNo">6117</span> oaf32data[it.oIndex + j] = ox;<a name="line.6117"></a>
<span class="sourceLineNo">6118</span> }<a name="line.6118"></a>
<span class="sourceLineNo">6119</span> }<a name="line.6119"></a>
<span class="sourceLineNo">6120</span> } else {<a name="line.6120"></a>
<span class="sourceLineNo">6121</span> while (it.hasNext()) {<a name="line.6121"></a>
<span class="sourceLineNo">6122</span> long iax = it.aLong;<a name="line.6122"></a>
<span class="sourceLineNo">6123</span> final long ibx = it.bLong;<a name="line.6123"></a>
<span class="sourceLineNo">6124</span> float ox;<a name="line.6124"></a>
<span class="sourceLineNo">6125</span> ox = (iax * ibx);<a name="line.6125"></a>
<span class="sourceLineNo">6126</span> oaf32data[it.oIndex] = ox;<a name="line.6126"></a>
<span class="sourceLineNo">6127</span> for (int j = 1; j &lt; is; j++) {<a name="line.6127"></a>
<span class="sourceLineNo">6128</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.6128"></a>
<span class="sourceLineNo">6129</span> ox = (iax * ibx);<a name="line.6129"></a>
<span class="sourceLineNo">6130</span> oaf32data[it.oIndex + j] = ox;<a name="line.6130"></a>
<span class="sourceLineNo">6131</span> }<a name="line.6131"></a>
<span class="sourceLineNo">6132</span> }<a name="line.6132"></a>
<span class="sourceLineNo">6133</span> }<a name="line.6133"></a>
<span class="sourceLineNo">6134</span> } else if (as == 1) {<a name="line.6134"></a>
<span class="sourceLineNo">6135</span> if (it.isOutputDouble()) {<a name="line.6135"></a>
<span class="sourceLineNo">6136</span> while (it.hasNext()) {<a name="line.6136"></a>
<span class="sourceLineNo">6137</span> final double iax = it.aDouble;<a name="line.6137"></a>
<span class="sourceLineNo">6138</span> final double ibx = it.bDouble;<a name="line.6138"></a>
<span class="sourceLineNo">6139</span> float ox;<a name="line.6139"></a>
<span class="sourceLineNo">6140</span> ox = (float) (iax * ibx);<a name="line.6140"></a>
<span class="sourceLineNo">6141</span> for (int j = 0; j &lt; is; j++) {<a name="line.6141"></a>
<span class="sourceLineNo">6142</span> oaf32data[it.oIndex + j] = ox;<a name="line.6142"></a>
<span class="sourceLineNo">6143</span> }<a name="line.6143"></a>
<span class="sourceLineNo">6144</span> }<a name="line.6144"></a>
<span class="sourceLineNo">6145</span> } else {<a name="line.6145"></a>
<span class="sourceLineNo">6146</span> while (it.hasNext()) {<a name="line.6146"></a>
<span class="sourceLineNo">6147</span> final long iax = it.aLong;<a name="line.6147"></a>
<span class="sourceLineNo">6148</span> final long ibx = it.bLong;<a name="line.6148"></a>
<span class="sourceLineNo">6149</span> float ox;<a name="line.6149"></a>
<span class="sourceLineNo">6150</span> ox = (iax * ibx);<a name="line.6150"></a>
<span class="sourceLineNo">6151</span> for (int j = 0; j &lt; is; j++) {<a name="line.6151"></a>
<span class="sourceLineNo">6152</span> oaf32data[it.oIndex + j] = ox;<a name="line.6152"></a>
<span class="sourceLineNo">6153</span> }<a name="line.6153"></a>
<span class="sourceLineNo">6154</span> }<a name="line.6154"></a>
<span class="sourceLineNo">6155</span> }<a name="line.6155"></a>
<span class="sourceLineNo">6156</span> } else {<a name="line.6156"></a>
<span class="sourceLineNo">6157</span> if (it.isOutputDouble()) {<a name="line.6157"></a>
<span class="sourceLineNo">6158</span> while (it.hasNext()) {<a name="line.6158"></a>
<span class="sourceLineNo">6159</span> double iax = it.aDouble;<a name="line.6159"></a>
<span class="sourceLineNo">6160</span> double ibx = it.bDouble;<a name="line.6160"></a>
<span class="sourceLineNo">6161</span> float ox;<a name="line.6161"></a>
<span class="sourceLineNo">6162</span> ox = (float) (iax * ibx);<a name="line.6162"></a>
<span class="sourceLineNo">6163</span> oaf32data[it.oIndex] = ox;<a name="line.6163"></a>
<span class="sourceLineNo">6164</span> for (int j = 1; j &lt; is; j++) {<a name="line.6164"></a>
<span class="sourceLineNo">6165</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.6165"></a>
<span class="sourceLineNo">6166</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.6166"></a>
<span class="sourceLineNo">6167</span> ox = (float) (iax * ibx);<a name="line.6167"></a>
<span class="sourceLineNo">6168</span> oaf32data[it.oIndex + j] = ox;<a name="line.6168"></a>
<span class="sourceLineNo">6169</span> }<a name="line.6169"></a>
<span class="sourceLineNo">6170</span> }<a name="line.6170"></a>
<span class="sourceLineNo">6171</span> } else {<a name="line.6171"></a>
<span class="sourceLineNo">6172</span> while (it.hasNext()) {<a name="line.6172"></a>
<span class="sourceLineNo">6173</span> long iax = it.aLong;<a name="line.6173"></a>
<span class="sourceLineNo">6174</span> long ibx = it.bLong;<a name="line.6174"></a>
<span class="sourceLineNo">6175</span> float ox;<a name="line.6175"></a>
<span class="sourceLineNo">6176</span> ox = (iax * ibx);<a name="line.6176"></a>
<span class="sourceLineNo">6177</span> oaf32data[it.oIndex] = ox;<a name="line.6177"></a>
<span class="sourceLineNo">6178</span> for (int j = 1; j &lt; is; j++) {<a name="line.6178"></a>
<span class="sourceLineNo">6179</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.6179"></a>
<span class="sourceLineNo">6180</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.6180"></a>
<span class="sourceLineNo">6181</span> ox = (iax * ibx);<a name="line.6181"></a>
<span class="sourceLineNo">6182</span> oaf32data[it.oIndex + j] = ox;<a name="line.6182"></a>
<span class="sourceLineNo">6183</span> }<a name="line.6183"></a>
<span class="sourceLineNo">6184</span> }<a name="line.6184"></a>
<span class="sourceLineNo">6185</span> }<a name="line.6185"></a>
<span class="sourceLineNo">6186</span> }<a name="line.6186"></a>
<span class="sourceLineNo">6187</span> break;<a name="line.6187"></a>
<span class="sourceLineNo">6188</span> case Dataset.ARRAYFLOAT64:<a name="line.6188"></a>
<span class="sourceLineNo">6189</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.6189"></a>
<span class="sourceLineNo">6190</span> if (is == 1) {<a name="line.6190"></a>
<span class="sourceLineNo">6191</span> if (it.isOutputDouble()) {<a name="line.6191"></a>
<span class="sourceLineNo">6192</span> while (it.hasNext()) {<a name="line.6192"></a>
<span class="sourceLineNo">6193</span> final double iax = it.aDouble;<a name="line.6193"></a>
<span class="sourceLineNo">6194</span> final double ibx = it.bDouble;<a name="line.6194"></a>
<span class="sourceLineNo">6195</span> double ox;<a name="line.6195"></a>
<span class="sourceLineNo">6196</span> ox = (iax * ibx);<a name="line.6196"></a>
<span class="sourceLineNo">6197</span> oaf64data[it.oIndex] = ox;<a name="line.6197"></a>
<span class="sourceLineNo">6198</span> }<a name="line.6198"></a>
<span class="sourceLineNo">6199</span> } else {<a name="line.6199"></a>
<span class="sourceLineNo">6200</span> while (it.hasNext()) {<a name="line.6200"></a>
<span class="sourceLineNo">6201</span> final long iax = it.aLong;<a name="line.6201"></a>
<span class="sourceLineNo">6202</span> final long ibx = it.bLong;<a name="line.6202"></a>
<span class="sourceLineNo">6203</span> double ox;<a name="line.6203"></a>
<span class="sourceLineNo">6204</span> ox = (iax * ibx);<a name="line.6204"></a>
<span class="sourceLineNo">6205</span> oaf64data[it.oIndex] = ox;<a name="line.6205"></a>
<span class="sourceLineNo">6206</span> }<a name="line.6206"></a>
<span class="sourceLineNo">6207</span> }<a name="line.6207"></a>
<span class="sourceLineNo">6208</span> } else if (as &lt; bs) {<a name="line.6208"></a>
<span class="sourceLineNo">6209</span> if (it.isOutputDouble()) {<a name="line.6209"></a>
<span class="sourceLineNo">6210</span> while (it.hasNext()) {<a name="line.6210"></a>
<span class="sourceLineNo">6211</span> final double iax = it.aDouble;<a name="line.6211"></a>
<span class="sourceLineNo">6212</span> double ibx = it.bDouble;<a name="line.6212"></a>
<span class="sourceLineNo">6213</span> double ox;<a name="line.6213"></a>
<span class="sourceLineNo">6214</span> ox = (iax * ibx);<a name="line.6214"></a>
<span class="sourceLineNo">6215</span> oaf64data[it.oIndex] = ox;<a name="line.6215"></a>
<span class="sourceLineNo">6216</span> for (int j = 1; j &lt; is; j++) {<a name="line.6216"></a>
<span class="sourceLineNo">6217</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.6217"></a>
<span class="sourceLineNo">6218</span> ox = (iax * ibx);<a name="line.6218"></a>
<span class="sourceLineNo">6219</span> oaf64data[it.oIndex + j] = ox;<a name="line.6219"></a>
<span class="sourceLineNo">6220</span> }<a name="line.6220"></a>
<span class="sourceLineNo">6221</span> }<a name="line.6221"></a>
<span class="sourceLineNo">6222</span> } else {<a name="line.6222"></a>
<span class="sourceLineNo">6223</span> while (it.hasNext()) {<a name="line.6223"></a>
<span class="sourceLineNo">6224</span> final long iax = it.aLong;<a name="line.6224"></a>
<span class="sourceLineNo">6225</span> long ibx = it.bLong;<a name="line.6225"></a>
<span class="sourceLineNo">6226</span> double ox;<a name="line.6226"></a>
<span class="sourceLineNo">6227</span> ox = (iax * ibx);<a name="line.6227"></a>
<span class="sourceLineNo">6228</span> oaf64data[it.oIndex] = ox;<a name="line.6228"></a>
<span class="sourceLineNo">6229</span> for (int j = 1; j &lt; is; j++) {<a name="line.6229"></a>
<span class="sourceLineNo">6230</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.6230"></a>
<span class="sourceLineNo">6231</span> ox = (iax * ibx);<a name="line.6231"></a>
<span class="sourceLineNo">6232</span> oaf64data[it.oIndex + j] = ox;<a name="line.6232"></a>
<span class="sourceLineNo">6233</span> }<a name="line.6233"></a>
<span class="sourceLineNo">6234</span> }<a name="line.6234"></a>
<span class="sourceLineNo">6235</span> }<a name="line.6235"></a>
<span class="sourceLineNo">6236</span> } else if (as &gt; bs) {<a name="line.6236"></a>
<span class="sourceLineNo">6237</span> if (it.isOutputDouble()) {<a name="line.6237"></a>
<span class="sourceLineNo">6238</span> while (it.hasNext()) {<a name="line.6238"></a>
<span class="sourceLineNo">6239</span> double iax = it.aDouble;<a name="line.6239"></a>
<span class="sourceLineNo">6240</span> final double ibx = it.bDouble;<a name="line.6240"></a>
<span class="sourceLineNo">6241</span> double ox;<a name="line.6241"></a>
<span class="sourceLineNo">6242</span> ox = (iax * ibx);<a name="line.6242"></a>
<span class="sourceLineNo">6243</span> oaf64data[it.oIndex] = ox;<a name="line.6243"></a>
<span class="sourceLineNo">6244</span> for (int j = 1; j &lt; is; j++) {<a name="line.6244"></a>
<span class="sourceLineNo">6245</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.6245"></a>
<span class="sourceLineNo">6246</span> ox = (iax * ibx);<a name="line.6246"></a>
<span class="sourceLineNo">6247</span> oaf64data[it.oIndex + j] = ox;<a name="line.6247"></a>
<span class="sourceLineNo">6248</span> }<a name="line.6248"></a>
<span class="sourceLineNo">6249</span> }<a name="line.6249"></a>
<span class="sourceLineNo">6250</span> } else {<a name="line.6250"></a>
<span class="sourceLineNo">6251</span> while (it.hasNext()) {<a name="line.6251"></a>
<span class="sourceLineNo">6252</span> long iax = it.aLong;<a name="line.6252"></a>
<span class="sourceLineNo">6253</span> final long ibx = it.bLong;<a name="line.6253"></a>
<span class="sourceLineNo">6254</span> double ox;<a name="line.6254"></a>
<span class="sourceLineNo">6255</span> ox = (iax * ibx);<a name="line.6255"></a>
<span class="sourceLineNo">6256</span> oaf64data[it.oIndex] = ox;<a name="line.6256"></a>
<span class="sourceLineNo">6257</span> for (int j = 1; j &lt; is; j++) {<a name="line.6257"></a>
<span class="sourceLineNo">6258</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.6258"></a>
<span class="sourceLineNo">6259</span> ox = (iax * ibx);<a name="line.6259"></a>
<span class="sourceLineNo">6260</span> oaf64data[it.oIndex + j] = ox;<a name="line.6260"></a>
<span class="sourceLineNo">6261</span> }<a name="line.6261"></a>
<span class="sourceLineNo">6262</span> }<a name="line.6262"></a>
<span class="sourceLineNo">6263</span> }<a name="line.6263"></a>
<span class="sourceLineNo">6264</span> } else if (as == 1) {<a name="line.6264"></a>
<span class="sourceLineNo">6265</span> if (it.isOutputDouble()) {<a name="line.6265"></a>
<span class="sourceLineNo">6266</span> while (it.hasNext()) {<a name="line.6266"></a>
<span class="sourceLineNo">6267</span> final double iax = it.aDouble;<a name="line.6267"></a>
<span class="sourceLineNo">6268</span> final double ibx = it.bDouble;<a name="line.6268"></a>
<span class="sourceLineNo">6269</span> double ox;<a name="line.6269"></a>
<span class="sourceLineNo">6270</span> ox = (iax * ibx);<a name="line.6270"></a>
<span class="sourceLineNo">6271</span> for (int j = 0; j &lt; is; j++) {<a name="line.6271"></a>
<span class="sourceLineNo">6272</span> oaf64data[it.oIndex + j] = ox;<a name="line.6272"></a>
<span class="sourceLineNo">6273</span> }<a name="line.6273"></a>
<span class="sourceLineNo">6274</span> }<a name="line.6274"></a>
<span class="sourceLineNo">6275</span> } else {<a name="line.6275"></a>
<span class="sourceLineNo">6276</span> while (it.hasNext()) {<a name="line.6276"></a>
<span class="sourceLineNo">6277</span> final long iax = it.aLong;<a name="line.6277"></a>
<span class="sourceLineNo">6278</span> final long ibx = it.bLong;<a name="line.6278"></a>
<span class="sourceLineNo">6279</span> double ox;<a name="line.6279"></a>
<span class="sourceLineNo">6280</span> ox = (iax * ibx);<a name="line.6280"></a>
<span class="sourceLineNo">6281</span> for (int j = 0; j &lt; is; j++) {<a name="line.6281"></a>
<span class="sourceLineNo">6282</span> oaf64data[it.oIndex + j] = ox;<a name="line.6282"></a>
<span class="sourceLineNo">6283</span> }<a name="line.6283"></a>
<span class="sourceLineNo">6284</span> }<a name="line.6284"></a>
<span class="sourceLineNo">6285</span> }<a name="line.6285"></a>
<span class="sourceLineNo">6286</span> } else {<a name="line.6286"></a>
<span class="sourceLineNo">6287</span> if (it.isOutputDouble()) {<a name="line.6287"></a>
<span class="sourceLineNo">6288</span> while (it.hasNext()) {<a name="line.6288"></a>
<span class="sourceLineNo">6289</span> double iax = it.aDouble;<a name="line.6289"></a>
<span class="sourceLineNo">6290</span> double ibx = it.bDouble;<a name="line.6290"></a>
<span class="sourceLineNo">6291</span> double ox;<a name="line.6291"></a>
<span class="sourceLineNo">6292</span> ox = (iax * ibx);<a name="line.6292"></a>
<span class="sourceLineNo">6293</span> oaf64data[it.oIndex] = ox;<a name="line.6293"></a>
<span class="sourceLineNo">6294</span> for (int j = 1; j &lt; is; j++) {<a name="line.6294"></a>
<span class="sourceLineNo">6295</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.6295"></a>
<span class="sourceLineNo">6296</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.6296"></a>
<span class="sourceLineNo">6297</span> ox = (iax * ibx);<a name="line.6297"></a>
<span class="sourceLineNo">6298</span> oaf64data[it.oIndex + j] = ox;<a name="line.6298"></a>
<span class="sourceLineNo">6299</span> }<a name="line.6299"></a>
<span class="sourceLineNo">6300</span> }<a name="line.6300"></a>
<span class="sourceLineNo">6301</span> } else {<a name="line.6301"></a>
<span class="sourceLineNo">6302</span> while (it.hasNext()) {<a name="line.6302"></a>
<span class="sourceLineNo">6303</span> long iax = it.aLong;<a name="line.6303"></a>
<span class="sourceLineNo">6304</span> long ibx = it.bLong;<a name="line.6304"></a>
<span class="sourceLineNo">6305</span> double ox;<a name="line.6305"></a>
<span class="sourceLineNo">6306</span> ox = (iax * ibx);<a name="line.6306"></a>
<span class="sourceLineNo">6307</span> oaf64data[it.oIndex] = ox;<a name="line.6307"></a>
<span class="sourceLineNo">6308</span> for (int j = 1; j &lt; is; j++) {<a name="line.6308"></a>
<span class="sourceLineNo">6309</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.6309"></a>
<span class="sourceLineNo">6310</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.6310"></a>
<span class="sourceLineNo">6311</span> ox = (iax * ibx);<a name="line.6311"></a>
<span class="sourceLineNo">6312</span> oaf64data[it.oIndex + j] = ox;<a name="line.6312"></a>
<span class="sourceLineNo">6313</span> }<a name="line.6313"></a>
<span class="sourceLineNo">6314</span> }<a name="line.6314"></a>
<span class="sourceLineNo">6315</span> }<a name="line.6315"></a>
<span class="sourceLineNo">6316</span> }<a name="line.6316"></a>
<span class="sourceLineNo">6317</span> break;<a name="line.6317"></a>
<span class="sourceLineNo">6318</span> case Dataset.COMPLEX64:<a name="line.6318"></a>
<span class="sourceLineNo">6319</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.6319"></a>
<span class="sourceLineNo">6320</span> if (!da.isComplex()) {<a name="line.6320"></a>
<span class="sourceLineNo">6321</span> if (it.isOutputDouble()) {<a name="line.6321"></a>
<span class="sourceLineNo">6322</span> final double iay = 0;<a name="line.6322"></a>
<span class="sourceLineNo">6323</span> if (db.isComplex()) {<a name="line.6323"></a>
<span class="sourceLineNo">6324</span> while (it.hasNext()) {<a name="line.6324"></a>
<span class="sourceLineNo">6325</span> final double iax = it.aDouble;<a name="line.6325"></a>
<span class="sourceLineNo">6326</span> final double ibx = it.bDouble;<a name="line.6326"></a>
<span class="sourceLineNo">6327</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.6327"></a>
<span class="sourceLineNo">6328</span> float ox;<a name="line.6328"></a>
<span class="sourceLineNo">6329</span> float oy;<a name="line.6329"></a>
<span class="sourceLineNo">6330</span> ox = (float) (iax * ibx - iay * iby);<a name="line.6330"></a>
<span class="sourceLineNo">6331</span> oy = (float) (iax * iby + iay * ibx);<a name="line.6331"></a>
<span class="sourceLineNo">6332</span> oc64data[it.oIndex] = ox;<a name="line.6332"></a>
<span class="sourceLineNo">6333</span> oc64data[it.oIndex + 1] = oy;<a name="line.6333"></a>
<span class="sourceLineNo">6334</span> }<a name="line.6334"></a>
<span class="sourceLineNo">6335</span> } else {<a name="line.6335"></a>
<span class="sourceLineNo">6336</span> while (it.hasNext()) {<a name="line.6336"></a>
<span class="sourceLineNo">6337</span> final double iax = it.aDouble;<a name="line.6337"></a>
<span class="sourceLineNo">6338</span> final double ibx = it.bDouble;<a name="line.6338"></a>
<span class="sourceLineNo">6339</span> final double iby = 0;<a name="line.6339"></a>
<span class="sourceLineNo">6340</span> float ox;<a name="line.6340"></a>
<span class="sourceLineNo">6341</span> float oy;<a name="line.6341"></a>
<span class="sourceLineNo">6342</span> ox = (float) (iax * ibx - iay * iby);<a name="line.6342"></a>
<span class="sourceLineNo">6343</span> oy = (float) (iax * iby + iay * ibx);<a name="line.6343"></a>
<span class="sourceLineNo">6344</span> oc64data[it.oIndex] = ox;<a name="line.6344"></a>
<span class="sourceLineNo">6345</span> oc64data[it.oIndex + 1] = oy;<a name="line.6345"></a>
<span class="sourceLineNo">6346</span> }<a name="line.6346"></a>
<span class="sourceLineNo">6347</span> }<a name="line.6347"></a>
<span class="sourceLineNo">6348</span> } else {<a name="line.6348"></a>
<span class="sourceLineNo">6349</span> final long iay = 0;<a name="line.6349"></a>
<span class="sourceLineNo">6350</span> while (it.hasNext()) {<a name="line.6350"></a>
<span class="sourceLineNo">6351</span> final long iax = it.aLong;<a name="line.6351"></a>
<span class="sourceLineNo">6352</span> final long ibx = it.bLong;<a name="line.6352"></a>
<span class="sourceLineNo">6353</span> final long iby = 0;<a name="line.6353"></a>
<span class="sourceLineNo">6354</span> float ox;<a name="line.6354"></a>
<span class="sourceLineNo">6355</span> float oy;<a name="line.6355"></a>
<span class="sourceLineNo">6356</span> ox = (float) (iax * ibx - iay * iby);<a name="line.6356"></a>
<span class="sourceLineNo">6357</span> oy = (float) (iax * iby + iay * ibx);<a name="line.6357"></a>
<span class="sourceLineNo">6358</span> oc64data[it.oIndex] = ox;<a name="line.6358"></a>
<span class="sourceLineNo">6359</span> oc64data[it.oIndex + 1] = oy;<a name="line.6359"></a>
<span class="sourceLineNo">6360</span> }<a name="line.6360"></a>
<span class="sourceLineNo">6361</span> }<a name="line.6361"></a>
<span class="sourceLineNo">6362</span> } else if (!db.isComplex()) {<a name="line.6362"></a>
<span class="sourceLineNo">6363</span> final double iby = 0;<a name="line.6363"></a>
<span class="sourceLineNo">6364</span> while (it.hasNext()) {<a name="line.6364"></a>
<span class="sourceLineNo">6365</span> final double iax = it.aDouble;<a name="line.6365"></a>
<span class="sourceLineNo">6366</span> final double ibx = it.bDouble;<a name="line.6366"></a>
<span class="sourceLineNo">6367</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.6367"></a>
<span class="sourceLineNo">6368</span> float ox;<a name="line.6368"></a>
<span class="sourceLineNo">6369</span> float oy;<a name="line.6369"></a>
<span class="sourceLineNo">6370</span> ox = (float) (iax * ibx - iay * iby);<a name="line.6370"></a>
<span class="sourceLineNo">6371</span> oy = (float) (iax * iby + iay * ibx);<a name="line.6371"></a>
<span class="sourceLineNo">6372</span> oc64data[it.oIndex] = ox;<a name="line.6372"></a>
<span class="sourceLineNo">6373</span> oc64data[it.oIndex + 1] = oy;<a name="line.6373"></a>
<span class="sourceLineNo">6374</span> }<a name="line.6374"></a>
<span class="sourceLineNo">6375</span> } else {<a name="line.6375"></a>
<span class="sourceLineNo">6376</span> while (it.hasNext()) {<a name="line.6376"></a>
<span class="sourceLineNo">6377</span> final double iax = it.aDouble;<a name="line.6377"></a>
<span class="sourceLineNo">6378</span> final double ibx = it.bDouble;<a name="line.6378"></a>
<span class="sourceLineNo">6379</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.6379"></a>
<span class="sourceLineNo">6380</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.6380"></a>
<span class="sourceLineNo">6381</span> float ox;<a name="line.6381"></a>
<span class="sourceLineNo">6382</span> float oy;<a name="line.6382"></a>
<span class="sourceLineNo">6383</span> ox = (float) (iax * ibx - iay * iby);<a name="line.6383"></a>
<span class="sourceLineNo">6384</span> oy = (float) (iax * iby + iay * ibx);<a name="line.6384"></a>
<span class="sourceLineNo">6385</span> oc64data[it.oIndex] = ox;<a name="line.6385"></a>
<span class="sourceLineNo">6386</span> oc64data[it.oIndex + 1] = oy;<a name="line.6386"></a>
<span class="sourceLineNo">6387</span> }<a name="line.6387"></a>
<span class="sourceLineNo">6388</span> }<a name="line.6388"></a>
<span class="sourceLineNo">6389</span> break;<a name="line.6389"></a>
<span class="sourceLineNo">6390</span> case Dataset.COMPLEX128:<a name="line.6390"></a>
<span class="sourceLineNo">6391</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.6391"></a>
<span class="sourceLineNo">6392</span> if (!da.isComplex()) {<a name="line.6392"></a>
<span class="sourceLineNo">6393</span> if (it.isOutputDouble()) {<a name="line.6393"></a>
<span class="sourceLineNo">6394</span> final double iay = 0;<a name="line.6394"></a>
<span class="sourceLineNo">6395</span> if (db.isComplex()) {<a name="line.6395"></a>
<span class="sourceLineNo">6396</span> while (it.hasNext()) {<a name="line.6396"></a>
<span class="sourceLineNo">6397</span> final double iax = it.aDouble;<a name="line.6397"></a>
<span class="sourceLineNo">6398</span> final double ibx = it.bDouble;<a name="line.6398"></a>
<span class="sourceLineNo">6399</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.6399"></a>
<span class="sourceLineNo">6400</span> double ox;<a name="line.6400"></a>
<span class="sourceLineNo">6401</span> double oy;<a name="line.6401"></a>
<span class="sourceLineNo">6402</span> ox = (iax * ibx - iay * iby);<a name="line.6402"></a>
<span class="sourceLineNo">6403</span> oy = (iax * iby + iay * ibx);<a name="line.6403"></a>
<span class="sourceLineNo">6404</span> oc128data[it.oIndex] = ox;<a name="line.6404"></a>
<span class="sourceLineNo">6405</span> oc128data[it.oIndex + 1] = oy;<a name="line.6405"></a>
<span class="sourceLineNo">6406</span> }<a name="line.6406"></a>
<span class="sourceLineNo">6407</span> } else {<a name="line.6407"></a>
<span class="sourceLineNo">6408</span> while (it.hasNext()) {<a name="line.6408"></a>
<span class="sourceLineNo">6409</span> final double iax = it.aDouble;<a name="line.6409"></a>
<span class="sourceLineNo">6410</span> final double ibx = it.bDouble;<a name="line.6410"></a>
<span class="sourceLineNo">6411</span> final double iby = 0;<a name="line.6411"></a>
<span class="sourceLineNo">6412</span> double ox;<a name="line.6412"></a>
<span class="sourceLineNo">6413</span> double oy;<a name="line.6413"></a>
<span class="sourceLineNo">6414</span> ox = (iax * ibx - iay * iby);<a name="line.6414"></a>
<span class="sourceLineNo">6415</span> oy = (iax * iby + iay * ibx);<a name="line.6415"></a>
<span class="sourceLineNo">6416</span> oc128data[it.oIndex] = ox;<a name="line.6416"></a>
<span class="sourceLineNo">6417</span> oc128data[it.oIndex + 1] = oy;<a name="line.6417"></a>
<span class="sourceLineNo">6418</span> }<a name="line.6418"></a>
<span class="sourceLineNo">6419</span> }<a name="line.6419"></a>
<span class="sourceLineNo">6420</span> } else {<a name="line.6420"></a>
<span class="sourceLineNo">6421</span> final long iay = 0;<a name="line.6421"></a>
<span class="sourceLineNo">6422</span> while (it.hasNext()) {<a name="line.6422"></a>
<span class="sourceLineNo">6423</span> final long iax = it.aLong;<a name="line.6423"></a>
<span class="sourceLineNo">6424</span> final long ibx = it.bLong;<a name="line.6424"></a>
<span class="sourceLineNo">6425</span> final long iby = 0;<a name="line.6425"></a>
<span class="sourceLineNo">6426</span> double ox;<a name="line.6426"></a>
<span class="sourceLineNo">6427</span> double oy;<a name="line.6427"></a>
<span class="sourceLineNo">6428</span> ox = (iax * ibx - iay * iby);<a name="line.6428"></a>
<span class="sourceLineNo">6429</span> oy = (iax * iby + iay * ibx);<a name="line.6429"></a>
<span class="sourceLineNo">6430</span> oc128data[it.oIndex] = ox;<a name="line.6430"></a>
<span class="sourceLineNo">6431</span> oc128data[it.oIndex + 1] = oy;<a name="line.6431"></a>
<span class="sourceLineNo">6432</span> }<a name="line.6432"></a>
<span class="sourceLineNo">6433</span> }<a name="line.6433"></a>
<span class="sourceLineNo">6434</span> } else if (!db.isComplex()) {<a name="line.6434"></a>
<span class="sourceLineNo">6435</span> final double iby = 0;<a name="line.6435"></a>
<span class="sourceLineNo">6436</span> while (it.hasNext()) {<a name="line.6436"></a>
<span class="sourceLineNo">6437</span> final double iax = it.aDouble;<a name="line.6437"></a>
<span class="sourceLineNo">6438</span> final double ibx = it.bDouble;<a name="line.6438"></a>
<span class="sourceLineNo">6439</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.6439"></a>
<span class="sourceLineNo">6440</span> double ox;<a name="line.6440"></a>
<span class="sourceLineNo">6441</span> double oy;<a name="line.6441"></a>
<span class="sourceLineNo">6442</span> ox = (iax * ibx - iay * iby);<a name="line.6442"></a>
<span class="sourceLineNo">6443</span> oy = (iax * iby + iay * ibx);<a name="line.6443"></a>
<span class="sourceLineNo">6444</span> oc128data[it.oIndex] = ox;<a name="line.6444"></a>
<span class="sourceLineNo">6445</span> oc128data[it.oIndex + 1] = oy;<a name="line.6445"></a>
<span class="sourceLineNo">6446</span> }<a name="line.6446"></a>
<span class="sourceLineNo">6447</span> } else {<a name="line.6447"></a>
<span class="sourceLineNo">6448</span> while (it.hasNext()) {<a name="line.6448"></a>
<span class="sourceLineNo">6449</span> final double iax = it.aDouble;<a name="line.6449"></a>
<span class="sourceLineNo">6450</span> final double ibx = it.bDouble;<a name="line.6450"></a>
<span class="sourceLineNo">6451</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.6451"></a>
<span class="sourceLineNo">6452</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.6452"></a>
<span class="sourceLineNo">6453</span> double ox;<a name="line.6453"></a>
<span class="sourceLineNo">6454</span> double oy;<a name="line.6454"></a>
<span class="sourceLineNo">6455</span> ox = (iax * ibx - iay * iby);<a name="line.6455"></a>
<span class="sourceLineNo">6456</span> oy = (iax * iby + iay * ibx);<a name="line.6456"></a>
<span class="sourceLineNo">6457</span> oc128data[it.oIndex] = ox;<a name="line.6457"></a>
<span class="sourceLineNo">6458</span> oc128data[it.oIndex + 1] = oy;<a name="line.6458"></a>
<span class="sourceLineNo">6459</span> }<a name="line.6459"></a>
<span class="sourceLineNo">6460</span> }<a name="line.6460"></a>
<span class="sourceLineNo">6461</span> break;<a name="line.6461"></a>
<span class="sourceLineNo">6462</span> default:<a name="line.6462"></a>
<span class="sourceLineNo">6463</span> throw new IllegalArgumentException("multiply supports integer, compound integer, real, compound real, complex datasets only");<a name="line.6463"></a>
<span class="sourceLineNo">6464</span> }<a name="line.6464"></a>
<span class="sourceLineNo">6465</span><a name="line.6465"></a>
<span class="sourceLineNo">6466</span> addBinaryOperatorName(da, db, result, "*");<a name="line.6466"></a>
<span class="sourceLineNo">6467</span> return result;<a name="line.6467"></a>
<span class="sourceLineNo">6468</span> }<a name="line.6468"></a>
<span class="sourceLineNo">6469</span><a name="line.6469"></a>
<span class="sourceLineNo">6470</span> /**<a name="line.6470"></a>
<span class="sourceLineNo">6471</span> * divide operator<a name="line.6471"></a>
<span class="sourceLineNo">6472</span> * @param a<a name="line.6472"></a>
<span class="sourceLineNo">6473</span> * @param b<a name="line.6473"></a>
<span class="sourceLineNo">6474</span> * @return {@code a / b}, division of a by b<a name="line.6474"></a>
<span class="sourceLineNo">6475</span> */<a name="line.6475"></a>
<span class="sourceLineNo">6476</span> public static Dataset divide(final Object a, final Object b) {<a name="line.6476"></a>
<span class="sourceLineNo">6477</span> return divide(a, b, null);<a name="line.6477"></a>
<span class="sourceLineNo">6478</span> }<a name="line.6478"></a>
<span class="sourceLineNo">6479</span><a name="line.6479"></a>
<span class="sourceLineNo">6480</span> /**<a name="line.6480"></a>
<span class="sourceLineNo">6481</span> * divide operator<a name="line.6481"></a>
<span class="sourceLineNo">6482</span> * @param a<a name="line.6482"></a>
<span class="sourceLineNo">6483</span> * @param b<a name="line.6483"></a>
<span class="sourceLineNo">6484</span> * @param o output can be null - in which case, a new dataset is created<a name="line.6484"></a>
<span class="sourceLineNo">6485</span> * @return {@code a / b}, division of a by b<a name="line.6485"></a>
<span class="sourceLineNo">6486</span> */<a name="line.6486"></a>
<span class="sourceLineNo">6487</span> public static Dataset divide(final Object a, final Object b, final Dataset o) {<a name="line.6487"></a>
<span class="sourceLineNo">6488</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.6488"></a>
<span class="sourceLineNo">6489</span> Dataset db = b instanceof Dataset ? (Dataset) b : DatasetFactory.createFromObject(b);<a name="line.6489"></a>
<span class="sourceLineNo">6490</span> BroadcastIterator it = BroadcastIterator.createIterator(da, db, o, true);<a name="line.6490"></a>
<span class="sourceLineNo">6491</span> final Dataset result = it.getOutput();<a name="line.6491"></a>
<span class="sourceLineNo">6492</span> if (!result.isComplex()) {<a name="line.6492"></a>
<span class="sourceLineNo">6493</span> boolean change = false;<a name="line.6493"></a>
<span class="sourceLineNo">6494</span> if (da.isComplex()) {<a name="line.6494"></a>
<span class="sourceLineNo">6495</span> da = da.getRealView();<a name="line.6495"></a>
<span class="sourceLineNo">6496</span> change = true;<a name="line.6496"></a>
<span class="sourceLineNo">6497</span> }<a name="line.6497"></a>
<span class="sourceLineNo">6498</span> if (db.isComplex()) {<a name="line.6498"></a>
<span class="sourceLineNo">6499</span> db = db.getRealView();<a name="line.6499"></a>
<span class="sourceLineNo">6500</span> change = true;<a name="line.6500"></a>
<span class="sourceLineNo">6501</span> }<a name="line.6501"></a>
<span class="sourceLineNo">6502</span> if (change) {<a name="line.6502"></a>
<span class="sourceLineNo">6503</span> it = BroadcastIterator.createIterator(da, db, result, true);<a name="line.6503"></a>
<span class="sourceLineNo">6504</span> }<a name="line.6504"></a>
<span class="sourceLineNo">6505</span> }<a name="line.6505"></a>
<span class="sourceLineNo">6506</span> final int is = result.getElementsPerItem();<a name="line.6506"></a>
<span class="sourceLineNo">6507</span> final int as = da.getElementsPerItem();<a name="line.6507"></a>
<span class="sourceLineNo">6508</span> final int bs = db.getElementsPerItem();<a name="line.6508"></a>
<span class="sourceLineNo">6509</span> final int dt = result.getDType();<a name="line.6509"></a>
<span class="sourceLineNo">6510</span><a name="line.6510"></a>
<span class="sourceLineNo">6511</span> switch(dt) {<a name="line.6511"></a>
<span class="sourceLineNo">6512</span> case Dataset.INT8:<a name="line.6512"></a>
<span class="sourceLineNo">6513</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.6513"></a>
<span class="sourceLineNo">6514</span> if (it.isOutputDouble()) {<a name="line.6514"></a>
<span class="sourceLineNo">6515</span> while (it.hasNext()) {<a name="line.6515"></a>
<span class="sourceLineNo">6516</span> final double iax = it.aDouble;<a name="line.6516"></a>
<span class="sourceLineNo">6517</span> final double ibx = it.bDouble;<a name="line.6517"></a>
<span class="sourceLineNo">6518</span> byte ox;<a name="line.6518"></a>
<span class="sourceLineNo">6519</span> ox = (byte) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.6519"></a>
<span class="sourceLineNo">6520</span> oi8data[it.oIndex] = ox;<a name="line.6520"></a>
<span class="sourceLineNo">6521</span> }<a name="line.6521"></a>
<span class="sourceLineNo">6522</span> } else {<a name="line.6522"></a>
<span class="sourceLineNo">6523</span> while (it.hasNext()) {<a name="line.6523"></a>
<span class="sourceLineNo">6524</span> final long iax = it.aLong;<a name="line.6524"></a>
<span class="sourceLineNo">6525</span> final long ibx = it.bLong;<a name="line.6525"></a>
<span class="sourceLineNo">6526</span> byte ox;<a name="line.6526"></a>
<span class="sourceLineNo">6527</span> ox = (byte) (ibx == 0 ? 0 : iax / ibx);<a name="line.6527"></a>
<span class="sourceLineNo">6528</span> oi8data[it.oIndex] = ox;<a name="line.6528"></a>
<span class="sourceLineNo">6529</span> }<a name="line.6529"></a>
<span class="sourceLineNo">6530</span> }<a name="line.6530"></a>
<span class="sourceLineNo">6531</span> break;<a name="line.6531"></a>
<span class="sourceLineNo">6532</span> case Dataset.INT16:<a name="line.6532"></a>
<span class="sourceLineNo">6533</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.6533"></a>
<span class="sourceLineNo">6534</span> if (it.isOutputDouble()) {<a name="line.6534"></a>
<span class="sourceLineNo">6535</span> while (it.hasNext()) {<a name="line.6535"></a>
<span class="sourceLineNo">6536</span> final double iax = it.aDouble;<a name="line.6536"></a>
<span class="sourceLineNo">6537</span> final double ibx = it.bDouble;<a name="line.6537"></a>
<span class="sourceLineNo">6538</span> short ox;<a name="line.6538"></a>
<span class="sourceLineNo">6539</span> ox = (short) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.6539"></a>
<span class="sourceLineNo">6540</span> oi16data[it.oIndex] = ox;<a name="line.6540"></a>
<span class="sourceLineNo">6541</span> }<a name="line.6541"></a>
<span class="sourceLineNo">6542</span> } else {<a name="line.6542"></a>
<span class="sourceLineNo">6543</span> while (it.hasNext()) {<a name="line.6543"></a>
<span class="sourceLineNo">6544</span> final long iax = it.aLong;<a name="line.6544"></a>
<span class="sourceLineNo">6545</span> final long ibx = it.bLong;<a name="line.6545"></a>
<span class="sourceLineNo">6546</span> short ox;<a name="line.6546"></a>
<span class="sourceLineNo">6547</span> ox = (short) (ibx == 0 ? 0 : iax / ibx);<a name="line.6547"></a>
<span class="sourceLineNo">6548</span> oi16data[it.oIndex] = ox;<a name="line.6548"></a>
<span class="sourceLineNo">6549</span> }<a name="line.6549"></a>
<span class="sourceLineNo">6550</span> }<a name="line.6550"></a>
<span class="sourceLineNo">6551</span> break;<a name="line.6551"></a>
<span class="sourceLineNo">6552</span> case Dataset.INT64:<a name="line.6552"></a>
<span class="sourceLineNo">6553</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.6553"></a>
<span class="sourceLineNo">6554</span> if (it.isOutputDouble()) {<a name="line.6554"></a>
<span class="sourceLineNo">6555</span> while (it.hasNext()) {<a name="line.6555"></a>
<span class="sourceLineNo">6556</span> final double iax = it.aDouble;<a name="line.6556"></a>
<span class="sourceLineNo">6557</span> final double ibx = it.bDouble;<a name="line.6557"></a>
<span class="sourceLineNo">6558</span> long ox;<a name="line.6558"></a>
<span class="sourceLineNo">6559</span> ox = toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.6559"></a>
<span class="sourceLineNo">6560</span> oi64data[it.oIndex] = ox;<a name="line.6560"></a>
<span class="sourceLineNo">6561</span> }<a name="line.6561"></a>
<span class="sourceLineNo">6562</span> } else {<a name="line.6562"></a>
<span class="sourceLineNo">6563</span> while (it.hasNext()) {<a name="line.6563"></a>
<span class="sourceLineNo">6564</span> final long iax = it.aLong;<a name="line.6564"></a>
<span class="sourceLineNo">6565</span> final long ibx = it.bLong;<a name="line.6565"></a>
<span class="sourceLineNo">6566</span> long ox;<a name="line.6566"></a>
<span class="sourceLineNo">6567</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.6567"></a>
<span class="sourceLineNo">6568</span> oi64data[it.oIndex] = ox;<a name="line.6568"></a>
<span class="sourceLineNo">6569</span> }<a name="line.6569"></a>
<span class="sourceLineNo">6570</span> }<a name="line.6570"></a>
<span class="sourceLineNo">6571</span> break;<a name="line.6571"></a>
<span class="sourceLineNo">6572</span> case Dataset.INT32:<a name="line.6572"></a>
<span class="sourceLineNo">6573</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.6573"></a>
<span class="sourceLineNo">6574</span> if (it.isOutputDouble()) {<a name="line.6574"></a>
<span class="sourceLineNo">6575</span> while (it.hasNext()) {<a name="line.6575"></a>
<span class="sourceLineNo">6576</span> final double iax = it.aDouble;<a name="line.6576"></a>
<span class="sourceLineNo">6577</span> final double ibx = it.bDouble;<a name="line.6577"></a>
<span class="sourceLineNo">6578</span> int ox;<a name="line.6578"></a>
<span class="sourceLineNo">6579</span> ox = (int) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.6579"></a>
<span class="sourceLineNo">6580</span> oi32data[it.oIndex] = ox;<a name="line.6580"></a>
<span class="sourceLineNo">6581</span> }<a name="line.6581"></a>
<span class="sourceLineNo">6582</span> } else {<a name="line.6582"></a>
<span class="sourceLineNo">6583</span> while (it.hasNext()) {<a name="line.6583"></a>
<span class="sourceLineNo">6584</span> final long iax = it.aLong;<a name="line.6584"></a>
<span class="sourceLineNo">6585</span> final long ibx = it.bLong;<a name="line.6585"></a>
<span class="sourceLineNo">6586</span> int ox;<a name="line.6586"></a>
<span class="sourceLineNo">6587</span> ox = (int) (ibx == 0 ? 0 : iax / ibx);<a name="line.6587"></a>
<span class="sourceLineNo">6588</span> oi32data[it.oIndex] = ox;<a name="line.6588"></a>
<span class="sourceLineNo">6589</span> }<a name="line.6589"></a>
<span class="sourceLineNo">6590</span> }<a name="line.6590"></a>
<span class="sourceLineNo">6591</span> break;<a name="line.6591"></a>
<span class="sourceLineNo">6592</span> case Dataset.ARRAYINT8:<a name="line.6592"></a>
<span class="sourceLineNo">6593</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.6593"></a>
<span class="sourceLineNo">6594</span> if (is == 1) {<a name="line.6594"></a>
<span class="sourceLineNo">6595</span> if (it.isOutputDouble()) {<a name="line.6595"></a>
<span class="sourceLineNo">6596</span> while (it.hasNext()) {<a name="line.6596"></a>
<span class="sourceLineNo">6597</span> final double iax = it.aDouble;<a name="line.6597"></a>
<span class="sourceLineNo">6598</span> final double ibx = it.bDouble;<a name="line.6598"></a>
<span class="sourceLineNo">6599</span> byte ox;<a name="line.6599"></a>
<span class="sourceLineNo">6600</span> ox = (byte) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.6600"></a>
<span class="sourceLineNo">6601</span> oai8data[it.oIndex] = ox;<a name="line.6601"></a>
<span class="sourceLineNo">6602</span> }<a name="line.6602"></a>
<span class="sourceLineNo">6603</span> } else {<a name="line.6603"></a>
<span class="sourceLineNo">6604</span> while (it.hasNext()) {<a name="line.6604"></a>
<span class="sourceLineNo">6605</span> final long iax = it.aLong;<a name="line.6605"></a>
<span class="sourceLineNo">6606</span> final long ibx = it.bLong;<a name="line.6606"></a>
<span class="sourceLineNo">6607</span> byte ox;<a name="line.6607"></a>
<span class="sourceLineNo">6608</span> ox = (byte) (ibx == 0 ? 0 : iax / ibx);<a name="line.6608"></a>
<span class="sourceLineNo">6609</span> oai8data[it.oIndex] = ox;<a name="line.6609"></a>
<span class="sourceLineNo">6610</span> }<a name="line.6610"></a>
<span class="sourceLineNo">6611</span> }<a name="line.6611"></a>
<span class="sourceLineNo">6612</span> } else if (as &lt; bs) {<a name="line.6612"></a>
<span class="sourceLineNo">6613</span> if (it.isOutputDouble()) {<a name="line.6613"></a>
<span class="sourceLineNo">6614</span> while (it.hasNext()) {<a name="line.6614"></a>
<span class="sourceLineNo">6615</span> final double iax = it.aDouble;<a name="line.6615"></a>
<span class="sourceLineNo">6616</span> double ibx = it.bDouble;<a name="line.6616"></a>
<span class="sourceLineNo">6617</span> byte ox;<a name="line.6617"></a>
<span class="sourceLineNo">6618</span> ox = (byte) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.6618"></a>
<span class="sourceLineNo">6619</span> oai8data[it.oIndex] = ox;<a name="line.6619"></a>
<span class="sourceLineNo">6620</span> for (int j = 1; j &lt; is; j++) {<a name="line.6620"></a>
<span class="sourceLineNo">6621</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.6621"></a>
<span class="sourceLineNo">6622</span> ox = (byte) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.6622"></a>
<span class="sourceLineNo">6623</span> oai8data[it.oIndex + j] = ox;<a name="line.6623"></a>
<span class="sourceLineNo">6624</span> }<a name="line.6624"></a>
<span class="sourceLineNo">6625</span> }<a name="line.6625"></a>
<span class="sourceLineNo">6626</span> } else {<a name="line.6626"></a>
<span class="sourceLineNo">6627</span> while (it.hasNext()) {<a name="line.6627"></a>
<span class="sourceLineNo">6628</span> final long iax = it.aLong;<a name="line.6628"></a>
<span class="sourceLineNo">6629</span> long ibx = it.bLong;<a name="line.6629"></a>
<span class="sourceLineNo">6630</span> byte ox;<a name="line.6630"></a>
<span class="sourceLineNo">6631</span> ox = (byte) (ibx == 0 ? 0 : iax / ibx);<a name="line.6631"></a>
<span class="sourceLineNo">6632</span> oai8data[it.oIndex] = ox;<a name="line.6632"></a>
<span class="sourceLineNo">6633</span> for (int j = 1; j &lt; is; j++) {<a name="line.6633"></a>
<span class="sourceLineNo">6634</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.6634"></a>
<span class="sourceLineNo">6635</span> ox = (byte) (ibx == 0 ? 0 : iax / ibx);<a name="line.6635"></a>
<span class="sourceLineNo">6636</span> oai8data[it.oIndex + j] = ox;<a name="line.6636"></a>
<span class="sourceLineNo">6637</span> }<a name="line.6637"></a>
<span class="sourceLineNo">6638</span> }<a name="line.6638"></a>
<span class="sourceLineNo">6639</span> }<a name="line.6639"></a>
<span class="sourceLineNo">6640</span> } else if (as &gt; bs) {<a name="line.6640"></a>
<span class="sourceLineNo">6641</span> if (it.isOutputDouble()) {<a name="line.6641"></a>
<span class="sourceLineNo">6642</span> while (it.hasNext()) {<a name="line.6642"></a>
<span class="sourceLineNo">6643</span> double iax = it.aDouble;<a name="line.6643"></a>
<span class="sourceLineNo">6644</span> final double ibx = it.bDouble;<a name="line.6644"></a>
<span class="sourceLineNo">6645</span> byte ox;<a name="line.6645"></a>
<span class="sourceLineNo">6646</span> ox = (byte) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.6646"></a>
<span class="sourceLineNo">6647</span> oai8data[it.oIndex] = ox;<a name="line.6647"></a>
<span class="sourceLineNo">6648</span> for (int j = 1; j &lt; is; j++) {<a name="line.6648"></a>
<span class="sourceLineNo">6649</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.6649"></a>
<span class="sourceLineNo">6650</span> ox = (byte) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.6650"></a>
<span class="sourceLineNo">6651</span> oai8data[it.oIndex + j] = ox;<a name="line.6651"></a>
<span class="sourceLineNo">6652</span> }<a name="line.6652"></a>
<span class="sourceLineNo">6653</span> }<a name="line.6653"></a>
<span class="sourceLineNo">6654</span> } else {<a name="line.6654"></a>
<span class="sourceLineNo">6655</span> while (it.hasNext()) {<a name="line.6655"></a>
<span class="sourceLineNo">6656</span> long iax = it.aLong;<a name="line.6656"></a>
<span class="sourceLineNo">6657</span> final long ibx = it.bLong;<a name="line.6657"></a>
<span class="sourceLineNo">6658</span> byte ox;<a name="line.6658"></a>
<span class="sourceLineNo">6659</span> ox = (byte) (ibx == 0 ? 0 : iax / ibx);<a name="line.6659"></a>
<span class="sourceLineNo">6660</span> oai8data[it.oIndex] = ox;<a name="line.6660"></a>
<span class="sourceLineNo">6661</span> for (int j = 1; j &lt; is; j++) {<a name="line.6661"></a>
<span class="sourceLineNo">6662</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.6662"></a>
<span class="sourceLineNo">6663</span> ox = (byte) (ibx == 0 ? 0 : iax / ibx);<a name="line.6663"></a>
<span class="sourceLineNo">6664</span> oai8data[it.oIndex + j] = ox;<a name="line.6664"></a>
<span class="sourceLineNo">6665</span> }<a name="line.6665"></a>
<span class="sourceLineNo">6666</span> }<a name="line.6666"></a>
<span class="sourceLineNo">6667</span> }<a name="line.6667"></a>
<span class="sourceLineNo">6668</span> } else if (as == 1) {<a name="line.6668"></a>
<span class="sourceLineNo">6669</span> if (it.isOutputDouble()) {<a name="line.6669"></a>
<span class="sourceLineNo">6670</span> while (it.hasNext()) {<a name="line.6670"></a>
<span class="sourceLineNo">6671</span> final double iax = it.aDouble;<a name="line.6671"></a>
<span class="sourceLineNo">6672</span> final double ibx = it.bDouble;<a name="line.6672"></a>
<span class="sourceLineNo">6673</span> byte ox;<a name="line.6673"></a>
<span class="sourceLineNo">6674</span> ox = (byte) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.6674"></a>
<span class="sourceLineNo">6675</span> for (int j = 0; j &lt; is; j++) {<a name="line.6675"></a>
<span class="sourceLineNo">6676</span> oai8data[it.oIndex + j] = ox;<a name="line.6676"></a>
<span class="sourceLineNo">6677</span> }<a name="line.6677"></a>
<span class="sourceLineNo">6678</span> }<a name="line.6678"></a>
<span class="sourceLineNo">6679</span> } else {<a name="line.6679"></a>
<span class="sourceLineNo">6680</span> while (it.hasNext()) {<a name="line.6680"></a>
<span class="sourceLineNo">6681</span> final long iax = it.aLong;<a name="line.6681"></a>
<span class="sourceLineNo">6682</span> final long ibx = it.bLong;<a name="line.6682"></a>
<span class="sourceLineNo">6683</span> byte ox;<a name="line.6683"></a>
<span class="sourceLineNo">6684</span> ox = (byte) (ibx == 0 ? 0 : iax / ibx);<a name="line.6684"></a>
<span class="sourceLineNo">6685</span> for (int j = 0; j &lt; is; j++) {<a name="line.6685"></a>
<span class="sourceLineNo">6686</span> oai8data[it.oIndex + j] = ox;<a name="line.6686"></a>
<span class="sourceLineNo">6687</span> }<a name="line.6687"></a>
<span class="sourceLineNo">6688</span> }<a name="line.6688"></a>
<span class="sourceLineNo">6689</span> }<a name="line.6689"></a>
<span class="sourceLineNo">6690</span> } else {<a name="line.6690"></a>
<span class="sourceLineNo">6691</span> if (it.isOutputDouble()) {<a name="line.6691"></a>
<span class="sourceLineNo">6692</span> while (it.hasNext()) {<a name="line.6692"></a>
<span class="sourceLineNo">6693</span> double iax = it.aDouble;<a name="line.6693"></a>
<span class="sourceLineNo">6694</span> double ibx = it.bDouble;<a name="line.6694"></a>
<span class="sourceLineNo">6695</span> byte ox;<a name="line.6695"></a>
<span class="sourceLineNo">6696</span> ox = (byte) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.6696"></a>
<span class="sourceLineNo">6697</span> oai8data[it.oIndex] = ox;<a name="line.6697"></a>
<span class="sourceLineNo">6698</span> for (int j = 1; j &lt; is; j++) {<a name="line.6698"></a>
<span class="sourceLineNo">6699</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.6699"></a>
<span class="sourceLineNo">6700</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.6700"></a>
<span class="sourceLineNo">6701</span> ox = (byte) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.6701"></a>
<span class="sourceLineNo">6702</span> oai8data[it.oIndex + j] = ox;<a name="line.6702"></a>
<span class="sourceLineNo">6703</span> }<a name="line.6703"></a>
<span class="sourceLineNo">6704</span> }<a name="line.6704"></a>
<span class="sourceLineNo">6705</span> } else {<a name="line.6705"></a>
<span class="sourceLineNo">6706</span> while (it.hasNext()) {<a name="line.6706"></a>
<span class="sourceLineNo">6707</span> long iax = it.aLong;<a name="line.6707"></a>
<span class="sourceLineNo">6708</span> long ibx = it.bLong;<a name="line.6708"></a>
<span class="sourceLineNo">6709</span> byte ox;<a name="line.6709"></a>
<span class="sourceLineNo">6710</span> ox = (byte) (ibx == 0 ? 0 : iax / ibx);<a name="line.6710"></a>
<span class="sourceLineNo">6711</span> oai8data[it.oIndex] = ox;<a name="line.6711"></a>
<span class="sourceLineNo">6712</span> for (int j = 1; j &lt; is; j++) {<a name="line.6712"></a>
<span class="sourceLineNo">6713</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.6713"></a>
<span class="sourceLineNo">6714</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.6714"></a>
<span class="sourceLineNo">6715</span> ox = (byte) (ibx == 0 ? 0 : iax / ibx);<a name="line.6715"></a>
<span class="sourceLineNo">6716</span> oai8data[it.oIndex + j] = ox;<a name="line.6716"></a>
<span class="sourceLineNo">6717</span> }<a name="line.6717"></a>
<span class="sourceLineNo">6718</span> }<a name="line.6718"></a>
<span class="sourceLineNo">6719</span> }<a name="line.6719"></a>
<span class="sourceLineNo">6720</span> }<a name="line.6720"></a>
<span class="sourceLineNo">6721</span> break;<a name="line.6721"></a>
<span class="sourceLineNo">6722</span> case Dataset.ARRAYINT16:<a name="line.6722"></a>
<span class="sourceLineNo">6723</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.6723"></a>
<span class="sourceLineNo">6724</span> if (is == 1) {<a name="line.6724"></a>
<span class="sourceLineNo">6725</span> if (it.isOutputDouble()) {<a name="line.6725"></a>
<span class="sourceLineNo">6726</span> while (it.hasNext()) {<a name="line.6726"></a>
<span class="sourceLineNo">6727</span> final double iax = it.aDouble;<a name="line.6727"></a>
<span class="sourceLineNo">6728</span> final double ibx = it.bDouble;<a name="line.6728"></a>
<span class="sourceLineNo">6729</span> short ox;<a name="line.6729"></a>
<span class="sourceLineNo">6730</span> ox = (short) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.6730"></a>
<span class="sourceLineNo">6731</span> oai16data[it.oIndex] = ox;<a name="line.6731"></a>
<span class="sourceLineNo">6732</span> }<a name="line.6732"></a>
<span class="sourceLineNo">6733</span> } else {<a name="line.6733"></a>
<span class="sourceLineNo">6734</span> while (it.hasNext()) {<a name="line.6734"></a>
<span class="sourceLineNo">6735</span> final long iax = it.aLong;<a name="line.6735"></a>
<span class="sourceLineNo">6736</span> final long ibx = it.bLong;<a name="line.6736"></a>
<span class="sourceLineNo">6737</span> short ox;<a name="line.6737"></a>
<span class="sourceLineNo">6738</span> ox = (short) (ibx == 0 ? 0 : iax / ibx);<a name="line.6738"></a>
<span class="sourceLineNo">6739</span> oai16data[it.oIndex] = ox;<a name="line.6739"></a>
<span class="sourceLineNo">6740</span> }<a name="line.6740"></a>
<span class="sourceLineNo">6741</span> }<a name="line.6741"></a>
<span class="sourceLineNo">6742</span> } else if (as &lt; bs) {<a name="line.6742"></a>
<span class="sourceLineNo">6743</span> if (it.isOutputDouble()) {<a name="line.6743"></a>
<span class="sourceLineNo">6744</span> while (it.hasNext()) {<a name="line.6744"></a>
<span class="sourceLineNo">6745</span> final double iax = it.aDouble;<a name="line.6745"></a>
<span class="sourceLineNo">6746</span> double ibx = it.bDouble;<a name="line.6746"></a>
<span class="sourceLineNo">6747</span> short ox;<a name="line.6747"></a>
<span class="sourceLineNo">6748</span> ox = (short) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.6748"></a>
<span class="sourceLineNo">6749</span> oai16data[it.oIndex] = ox;<a name="line.6749"></a>
<span class="sourceLineNo">6750</span> for (int j = 1; j &lt; is; j++) {<a name="line.6750"></a>
<span class="sourceLineNo">6751</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.6751"></a>
<span class="sourceLineNo">6752</span> ox = (short) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.6752"></a>
<span class="sourceLineNo">6753</span> oai16data[it.oIndex + j] = ox;<a name="line.6753"></a>
<span class="sourceLineNo">6754</span> }<a name="line.6754"></a>
<span class="sourceLineNo">6755</span> }<a name="line.6755"></a>
<span class="sourceLineNo">6756</span> } else {<a name="line.6756"></a>
<span class="sourceLineNo">6757</span> while (it.hasNext()) {<a name="line.6757"></a>
<span class="sourceLineNo">6758</span> final long iax = it.aLong;<a name="line.6758"></a>
<span class="sourceLineNo">6759</span> long ibx = it.bLong;<a name="line.6759"></a>
<span class="sourceLineNo">6760</span> short ox;<a name="line.6760"></a>
<span class="sourceLineNo">6761</span> ox = (short) (ibx == 0 ? 0 : iax / ibx);<a name="line.6761"></a>
<span class="sourceLineNo">6762</span> oai16data[it.oIndex] = ox;<a name="line.6762"></a>
<span class="sourceLineNo">6763</span> for (int j = 1; j &lt; is; j++) {<a name="line.6763"></a>
<span class="sourceLineNo">6764</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.6764"></a>
<span class="sourceLineNo">6765</span> ox = (short) (ibx == 0 ? 0 : iax / ibx);<a name="line.6765"></a>
<span class="sourceLineNo">6766</span> oai16data[it.oIndex + j] = ox;<a name="line.6766"></a>
<span class="sourceLineNo">6767</span> }<a name="line.6767"></a>
<span class="sourceLineNo">6768</span> }<a name="line.6768"></a>
<span class="sourceLineNo">6769</span> }<a name="line.6769"></a>
<span class="sourceLineNo">6770</span> } else if (as &gt; bs) {<a name="line.6770"></a>
<span class="sourceLineNo">6771</span> if (it.isOutputDouble()) {<a name="line.6771"></a>
<span class="sourceLineNo">6772</span> while (it.hasNext()) {<a name="line.6772"></a>
<span class="sourceLineNo">6773</span> double iax = it.aDouble;<a name="line.6773"></a>
<span class="sourceLineNo">6774</span> final double ibx = it.bDouble;<a name="line.6774"></a>
<span class="sourceLineNo">6775</span> short ox;<a name="line.6775"></a>
<span class="sourceLineNo">6776</span> ox = (short) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.6776"></a>
<span class="sourceLineNo">6777</span> oai16data[it.oIndex] = ox;<a name="line.6777"></a>
<span class="sourceLineNo">6778</span> for (int j = 1; j &lt; is; j++) {<a name="line.6778"></a>
<span class="sourceLineNo">6779</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.6779"></a>
<span class="sourceLineNo">6780</span> ox = (short) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.6780"></a>
<span class="sourceLineNo">6781</span> oai16data[it.oIndex + j] = ox;<a name="line.6781"></a>
<span class="sourceLineNo">6782</span> }<a name="line.6782"></a>
<span class="sourceLineNo">6783</span> }<a name="line.6783"></a>
<span class="sourceLineNo">6784</span> } else {<a name="line.6784"></a>
<span class="sourceLineNo">6785</span> while (it.hasNext()) {<a name="line.6785"></a>
<span class="sourceLineNo">6786</span> long iax = it.aLong;<a name="line.6786"></a>
<span class="sourceLineNo">6787</span> final long ibx = it.bLong;<a name="line.6787"></a>
<span class="sourceLineNo">6788</span> short ox;<a name="line.6788"></a>
<span class="sourceLineNo">6789</span> ox = (short) (ibx == 0 ? 0 : iax / ibx);<a name="line.6789"></a>
<span class="sourceLineNo">6790</span> oai16data[it.oIndex] = ox;<a name="line.6790"></a>
<span class="sourceLineNo">6791</span> for (int j = 1; j &lt; is; j++) {<a name="line.6791"></a>
<span class="sourceLineNo">6792</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.6792"></a>
<span class="sourceLineNo">6793</span> ox = (short) (ibx == 0 ? 0 : iax / ibx);<a name="line.6793"></a>
<span class="sourceLineNo">6794</span> oai16data[it.oIndex + j] = ox;<a name="line.6794"></a>
<span class="sourceLineNo">6795</span> }<a name="line.6795"></a>
<span class="sourceLineNo">6796</span> }<a name="line.6796"></a>
<span class="sourceLineNo">6797</span> }<a name="line.6797"></a>
<span class="sourceLineNo">6798</span> } else if (as == 1) {<a name="line.6798"></a>
<span class="sourceLineNo">6799</span> if (it.isOutputDouble()) {<a name="line.6799"></a>
<span class="sourceLineNo">6800</span> while (it.hasNext()) {<a name="line.6800"></a>
<span class="sourceLineNo">6801</span> final double iax = it.aDouble;<a name="line.6801"></a>
<span class="sourceLineNo">6802</span> final double ibx = it.bDouble;<a name="line.6802"></a>
<span class="sourceLineNo">6803</span> short ox;<a name="line.6803"></a>
<span class="sourceLineNo">6804</span> ox = (short) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.6804"></a>
<span class="sourceLineNo">6805</span> for (int j = 0; j &lt; is; j++) {<a name="line.6805"></a>
<span class="sourceLineNo">6806</span> oai16data[it.oIndex + j] = ox;<a name="line.6806"></a>
<span class="sourceLineNo">6807</span> }<a name="line.6807"></a>
<span class="sourceLineNo">6808</span> }<a name="line.6808"></a>
<span class="sourceLineNo">6809</span> } else {<a name="line.6809"></a>
<span class="sourceLineNo">6810</span> while (it.hasNext()) {<a name="line.6810"></a>
<span class="sourceLineNo">6811</span> final long iax = it.aLong;<a name="line.6811"></a>
<span class="sourceLineNo">6812</span> final long ibx = it.bLong;<a name="line.6812"></a>
<span class="sourceLineNo">6813</span> short ox;<a name="line.6813"></a>
<span class="sourceLineNo">6814</span> ox = (short) (ibx == 0 ? 0 : iax / ibx);<a name="line.6814"></a>
<span class="sourceLineNo">6815</span> for (int j = 0; j &lt; is; j++) {<a name="line.6815"></a>
<span class="sourceLineNo">6816</span> oai16data[it.oIndex + j] = ox;<a name="line.6816"></a>
<span class="sourceLineNo">6817</span> }<a name="line.6817"></a>
<span class="sourceLineNo">6818</span> }<a name="line.6818"></a>
<span class="sourceLineNo">6819</span> }<a name="line.6819"></a>
<span class="sourceLineNo">6820</span> } else {<a name="line.6820"></a>
<span class="sourceLineNo">6821</span> if (it.isOutputDouble()) {<a name="line.6821"></a>
<span class="sourceLineNo">6822</span> while (it.hasNext()) {<a name="line.6822"></a>
<span class="sourceLineNo">6823</span> double iax = it.aDouble;<a name="line.6823"></a>
<span class="sourceLineNo">6824</span> double ibx = it.bDouble;<a name="line.6824"></a>
<span class="sourceLineNo">6825</span> short ox;<a name="line.6825"></a>
<span class="sourceLineNo">6826</span> ox = (short) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.6826"></a>
<span class="sourceLineNo">6827</span> oai16data[it.oIndex] = ox;<a name="line.6827"></a>
<span class="sourceLineNo">6828</span> for (int j = 1; j &lt; is; j++) {<a name="line.6828"></a>
<span class="sourceLineNo">6829</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.6829"></a>
<span class="sourceLineNo">6830</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.6830"></a>
<span class="sourceLineNo">6831</span> ox = (short) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.6831"></a>
<span class="sourceLineNo">6832</span> oai16data[it.oIndex + j] = ox;<a name="line.6832"></a>
<span class="sourceLineNo">6833</span> }<a name="line.6833"></a>
<span class="sourceLineNo">6834</span> }<a name="line.6834"></a>
<span class="sourceLineNo">6835</span> } else {<a name="line.6835"></a>
<span class="sourceLineNo">6836</span> while (it.hasNext()) {<a name="line.6836"></a>
<span class="sourceLineNo">6837</span> long iax = it.aLong;<a name="line.6837"></a>
<span class="sourceLineNo">6838</span> long ibx = it.bLong;<a name="line.6838"></a>
<span class="sourceLineNo">6839</span> short ox;<a name="line.6839"></a>
<span class="sourceLineNo">6840</span> ox = (short) (ibx == 0 ? 0 : iax / ibx);<a name="line.6840"></a>
<span class="sourceLineNo">6841</span> oai16data[it.oIndex] = ox;<a name="line.6841"></a>
<span class="sourceLineNo">6842</span> for (int j = 1; j &lt; is; j++) {<a name="line.6842"></a>
<span class="sourceLineNo">6843</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.6843"></a>
<span class="sourceLineNo">6844</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.6844"></a>
<span class="sourceLineNo">6845</span> ox = (short) (ibx == 0 ? 0 : iax / ibx);<a name="line.6845"></a>
<span class="sourceLineNo">6846</span> oai16data[it.oIndex + j] = ox;<a name="line.6846"></a>
<span class="sourceLineNo">6847</span> }<a name="line.6847"></a>
<span class="sourceLineNo">6848</span> }<a name="line.6848"></a>
<span class="sourceLineNo">6849</span> }<a name="line.6849"></a>
<span class="sourceLineNo">6850</span> }<a name="line.6850"></a>
<span class="sourceLineNo">6851</span> break;<a name="line.6851"></a>
<span class="sourceLineNo">6852</span> case Dataset.ARRAYINT64:<a name="line.6852"></a>
<span class="sourceLineNo">6853</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.6853"></a>
<span class="sourceLineNo">6854</span> if (is == 1) {<a name="line.6854"></a>
<span class="sourceLineNo">6855</span> if (it.isOutputDouble()) {<a name="line.6855"></a>
<span class="sourceLineNo">6856</span> while (it.hasNext()) {<a name="line.6856"></a>
<span class="sourceLineNo">6857</span> final double iax = it.aDouble;<a name="line.6857"></a>
<span class="sourceLineNo">6858</span> final double ibx = it.bDouble;<a name="line.6858"></a>
<span class="sourceLineNo">6859</span> long ox;<a name="line.6859"></a>
<span class="sourceLineNo">6860</span> ox = toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.6860"></a>
<span class="sourceLineNo">6861</span> oai64data[it.oIndex] = ox;<a name="line.6861"></a>
<span class="sourceLineNo">6862</span> }<a name="line.6862"></a>
<span class="sourceLineNo">6863</span> } else {<a name="line.6863"></a>
<span class="sourceLineNo">6864</span> while (it.hasNext()) {<a name="line.6864"></a>
<span class="sourceLineNo">6865</span> final long iax = it.aLong;<a name="line.6865"></a>
<span class="sourceLineNo">6866</span> final long ibx = it.bLong;<a name="line.6866"></a>
<span class="sourceLineNo">6867</span> long ox;<a name="line.6867"></a>
<span class="sourceLineNo">6868</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.6868"></a>
<span class="sourceLineNo">6869</span> oai64data[it.oIndex] = ox;<a name="line.6869"></a>
<span class="sourceLineNo">6870</span> }<a name="line.6870"></a>
<span class="sourceLineNo">6871</span> }<a name="line.6871"></a>
<span class="sourceLineNo">6872</span> } else if (as &lt; bs) {<a name="line.6872"></a>
<span class="sourceLineNo">6873</span> if (it.isOutputDouble()) {<a name="line.6873"></a>
<span class="sourceLineNo">6874</span> while (it.hasNext()) {<a name="line.6874"></a>
<span class="sourceLineNo">6875</span> final double iax = it.aDouble;<a name="line.6875"></a>
<span class="sourceLineNo">6876</span> double ibx = it.bDouble;<a name="line.6876"></a>
<span class="sourceLineNo">6877</span> long ox;<a name="line.6877"></a>
<span class="sourceLineNo">6878</span> ox = toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.6878"></a>
<span class="sourceLineNo">6879</span> oai64data[it.oIndex] = ox;<a name="line.6879"></a>
<span class="sourceLineNo">6880</span> for (int j = 1; j &lt; is; j++) {<a name="line.6880"></a>
<span class="sourceLineNo">6881</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.6881"></a>
<span class="sourceLineNo">6882</span> ox = toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.6882"></a>
<span class="sourceLineNo">6883</span> oai64data[it.oIndex + j] = ox;<a name="line.6883"></a>
<span class="sourceLineNo">6884</span> }<a name="line.6884"></a>
<span class="sourceLineNo">6885</span> }<a name="line.6885"></a>
<span class="sourceLineNo">6886</span> } else {<a name="line.6886"></a>
<span class="sourceLineNo">6887</span> while (it.hasNext()) {<a name="line.6887"></a>
<span class="sourceLineNo">6888</span> final long iax = it.aLong;<a name="line.6888"></a>
<span class="sourceLineNo">6889</span> long ibx = it.bLong;<a name="line.6889"></a>
<span class="sourceLineNo">6890</span> long ox;<a name="line.6890"></a>
<span class="sourceLineNo">6891</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.6891"></a>
<span class="sourceLineNo">6892</span> oai64data[it.oIndex] = ox;<a name="line.6892"></a>
<span class="sourceLineNo">6893</span> for (int j = 1; j &lt; is; j++) {<a name="line.6893"></a>
<span class="sourceLineNo">6894</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.6894"></a>
<span class="sourceLineNo">6895</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.6895"></a>
<span class="sourceLineNo">6896</span> oai64data[it.oIndex + j] = ox;<a name="line.6896"></a>
<span class="sourceLineNo">6897</span> }<a name="line.6897"></a>
<span class="sourceLineNo">6898</span> }<a name="line.6898"></a>
<span class="sourceLineNo">6899</span> }<a name="line.6899"></a>
<span class="sourceLineNo">6900</span> } else if (as &gt; bs) {<a name="line.6900"></a>
<span class="sourceLineNo">6901</span> if (it.isOutputDouble()) {<a name="line.6901"></a>
<span class="sourceLineNo">6902</span> while (it.hasNext()) {<a name="line.6902"></a>
<span class="sourceLineNo">6903</span> double iax = it.aDouble;<a name="line.6903"></a>
<span class="sourceLineNo">6904</span> final double ibx = it.bDouble;<a name="line.6904"></a>
<span class="sourceLineNo">6905</span> long ox;<a name="line.6905"></a>
<span class="sourceLineNo">6906</span> ox = toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.6906"></a>
<span class="sourceLineNo">6907</span> oai64data[it.oIndex] = ox;<a name="line.6907"></a>
<span class="sourceLineNo">6908</span> for (int j = 1; j &lt; is; j++) {<a name="line.6908"></a>
<span class="sourceLineNo">6909</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.6909"></a>
<span class="sourceLineNo">6910</span> ox = toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.6910"></a>
<span class="sourceLineNo">6911</span> oai64data[it.oIndex + j] = ox;<a name="line.6911"></a>
<span class="sourceLineNo">6912</span> }<a name="line.6912"></a>
<span class="sourceLineNo">6913</span> }<a name="line.6913"></a>
<span class="sourceLineNo">6914</span> } else {<a name="line.6914"></a>
<span class="sourceLineNo">6915</span> while (it.hasNext()) {<a name="line.6915"></a>
<span class="sourceLineNo">6916</span> long iax = it.aLong;<a name="line.6916"></a>
<span class="sourceLineNo">6917</span> final long ibx = it.bLong;<a name="line.6917"></a>
<span class="sourceLineNo">6918</span> long ox;<a name="line.6918"></a>
<span class="sourceLineNo">6919</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.6919"></a>
<span class="sourceLineNo">6920</span> oai64data[it.oIndex] = ox;<a name="line.6920"></a>
<span class="sourceLineNo">6921</span> for (int j = 1; j &lt; is; j++) {<a name="line.6921"></a>
<span class="sourceLineNo">6922</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.6922"></a>
<span class="sourceLineNo">6923</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.6923"></a>
<span class="sourceLineNo">6924</span> oai64data[it.oIndex + j] = ox;<a name="line.6924"></a>
<span class="sourceLineNo">6925</span> }<a name="line.6925"></a>
<span class="sourceLineNo">6926</span> }<a name="line.6926"></a>
<span class="sourceLineNo">6927</span> }<a name="line.6927"></a>
<span class="sourceLineNo">6928</span> } else if (as == 1) {<a name="line.6928"></a>
<span class="sourceLineNo">6929</span> if (it.isOutputDouble()) {<a name="line.6929"></a>
<span class="sourceLineNo">6930</span> while (it.hasNext()) {<a name="line.6930"></a>
<span class="sourceLineNo">6931</span> final double iax = it.aDouble;<a name="line.6931"></a>
<span class="sourceLineNo">6932</span> final double ibx = it.bDouble;<a name="line.6932"></a>
<span class="sourceLineNo">6933</span> long ox;<a name="line.6933"></a>
<span class="sourceLineNo">6934</span> ox = toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.6934"></a>
<span class="sourceLineNo">6935</span> for (int j = 0; j &lt; is; j++) {<a name="line.6935"></a>
<span class="sourceLineNo">6936</span> oai64data[it.oIndex + j] = ox;<a name="line.6936"></a>
<span class="sourceLineNo">6937</span> }<a name="line.6937"></a>
<span class="sourceLineNo">6938</span> }<a name="line.6938"></a>
<span class="sourceLineNo">6939</span> } else {<a name="line.6939"></a>
<span class="sourceLineNo">6940</span> while (it.hasNext()) {<a name="line.6940"></a>
<span class="sourceLineNo">6941</span> final long iax = it.aLong;<a name="line.6941"></a>
<span class="sourceLineNo">6942</span> final long ibx = it.bLong;<a name="line.6942"></a>
<span class="sourceLineNo">6943</span> long ox;<a name="line.6943"></a>
<span class="sourceLineNo">6944</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.6944"></a>
<span class="sourceLineNo">6945</span> for (int j = 0; j &lt; is; j++) {<a name="line.6945"></a>
<span class="sourceLineNo">6946</span> oai64data[it.oIndex + j] = ox;<a name="line.6946"></a>
<span class="sourceLineNo">6947</span> }<a name="line.6947"></a>
<span class="sourceLineNo">6948</span> }<a name="line.6948"></a>
<span class="sourceLineNo">6949</span> }<a name="line.6949"></a>
<span class="sourceLineNo">6950</span> } else {<a name="line.6950"></a>
<span class="sourceLineNo">6951</span> if (it.isOutputDouble()) {<a name="line.6951"></a>
<span class="sourceLineNo">6952</span> while (it.hasNext()) {<a name="line.6952"></a>
<span class="sourceLineNo">6953</span> double iax = it.aDouble;<a name="line.6953"></a>
<span class="sourceLineNo">6954</span> double ibx = it.bDouble;<a name="line.6954"></a>
<span class="sourceLineNo">6955</span> long ox;<a name="line.6955"></a>
<span class="sourceLineNo">6956</span> ox = toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.6956"></a>
<span class="sourceLineNo">6957</span> oai64data[it.oIndex] = ox;<a name="line.6957"></a>
<span class="sourceLineNo">6958</span> for (int j = 1; j &lt; is; j++) {<a name="line.6958"></a>
<span class="sourceLineNo">6959</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.6959"></a>
<span class="sourceLineNo">6960</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.6960"></a>
<span class="sourceLineNo">6961</span> ox = toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.6961"></a>
<span class="sourceLineNo">6962</span> oai64data[it.oIndex + j] = ox;<a name="line.6962"></a>
<span class="sourceLineNo">6963</span> }<a name="line.6963"></a>
<span class="sourceLineNo">6964</span> }<a name="line.6964"></a>
<span class="sourceLineNo">6965</span> } else {<a name="line.6965"></a>
<span class="sourceLineNo">6966</span> while (it.hasNext()) {<a name="line.6966"></a>
<span class="sourceLineNo">6967</span> long iax = it.aLong;<a name="line.6967"></a>
<span class="sourceLineNo">6968</span> long ibx = it.bLong;<a name="line.6968"></a>
<span class="sourceLineNo">6969</span> long ox;<a name="line.6969"></a>
<span class="sourceLineNo">6970</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.6970"></a>
<span class="sourceLineNo">6971</span> oai64data[it.oIndex] = ox;<a name="line.6971"></a>
<span class="sourceLineNo">6972</span> for (int j = 1; j &lt; is; j++) {<a name="line.6972"></a>
<span class="sourceLineNo">6973</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.6973"></a>
<span class="sourceLineNo">6974</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.6974"></a>
<span class="sourceLineNo">6975</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.6975"></a>
<span class="sourceLineNo">6976</span> oai64data[it.oIndex + j] = ox;<a name="line.6976"></a>
<span class="sourceLineNo">6977</span> }<a name="line.6977"></a>
<span class="sourceLineNo">6978</span> }<a name="line.6978"></a>
<span class="sourceLineNo">6979</span> }<a name="line.6979"></a>
<span class="sourceLineNo">6980</span> }<a name="line.6980"></a>
<span class="sourceLineNo">6981</span> break;<a name="line.6981"></a>
<span class="sourceLineNo">6982</span> case Dataset.ARRAYINT32:<a name="line.6982"></a>
<span class="sourceLineNo">6983</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.6983"></a>
<span class="sourceLineNo">6984</span> if (is == 1) {<a name="line.6984"></a>
<span class="sourceLineNo">6985</span> if (it.isOutputDouble()) {<a name="line.6985"></a>
<span class="sourceLineNo">6986</span> while (it.hasNext()) {<a name="line.6986"></a>
<span class="sourceLineNo">6987</span> final double iax = it.aDouble;<a name="line.6987"></a>
<span class="sourceLineNo">6988</span> final double ibx = it.bDouble;<a name="line.6988"></a>
<span class="sourceLineNo">6989</span> int ox;<a name="line.6989"></a>
<span class="sourceLineNo">6990</span> ox = (int) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.6990"></a>
<span class="sourceLineNo">6991</span> oai32data[it.oIndex] = ox;<a name="line.6991"></a>
<span class="sourceLineNo">6992</span> }<a name="line.6992"></a>
<span class="sourceLineNo">6993</span> } else {<a name="line.6993"></a>
<span class="sourceLineNo">6994</span> while (it.hasNext()) {<a name="line.6994"></a>
<span class="sourceLineNo">6995</span> final long iax = it.aLong;<a name="line.6995"></a>
<span class="sourceLineNo">6996</span> final long ibx = it.bLong;<a name="line.6996"></a>
<span class="sourceLineNo">6997</span> int ox;<a name="line.6997"></a>
<span class="sourceLineNo">6998</span> ox = (int) (ibx == 0 ? 0 : iax / ibx);<a name="line.6998"></a>
<span class="sourceLineNo">6999</span> oai32data[it.oIndex] = ox;<a name="line.6999"></a>
<span class="sourceLineNo">7000</span> }<a name="line.7000"></a>
<span class="sourceLineNo">7001</span> }<a name="line.7001"></a>
<span class="sourceLineNo">7002</span> } else if (as &lt; bs) {<a name="line.7002"></a>
<span class="sourceLineNo">7003</span> if (it.isOutputDouble()) {<a name="line.7003"></a>
<span class="sourceLineNo">7004</span> while (it.hasNext()) {<a name="line.7004"></a>
<span class="sourceLineNo">7005</span> final double iax = it.aDouble;<a name="line.7005"></a>
<span class="sourceLineNo">7006</span> double ibx = it.bDouble;<a name="line.7006"></a>
<span class="sourceLineNo">7007</span> int ox;<a name="line.7007"></a>
<span class="sourceLineNo">7008</span> ox = (int) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.7008"></a>
<span class="sourceLineNo">7009</span> oai32data[it.oIndex] = ox;<a name="line.7009"></a>
<span class="sourceLineNo">7010</span> for (int j = 1; j &lt; is; j++) {<a name="line.7010"></a>
<span class="sourceLineNo">7011</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.7011"></a>
<span class="sourceLineNo">7012</span> ox = (int) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.7012"></a>
<span class="sourceLineNo">7013</span> oai32data[it.oIndex + j] = ox;<a name="line.7013"></a>
<span class="sourceLineNo">7014</span> }<a name="line.7014"></a>
<span class="sourceLineNo">7015</span> }<a name="line.7015"></a>
<span class="sourceLineNo">7016</span> } else {<a name="line.7016"></a>
<span class="sourceLineNo">7017</span> while (it.hasNext()) {<a name="line.7017"></a>
<span class="sourceLineNo">7018</span> final long iax = it.aLong;<a name="line.7018"></a>
<span class="sourceLineNo">7019</span> long ibx = it.bLong;<a name="line.7019"></a>
<span class="sourceLineNo">7020</span> int ox;<a name="line.7020"></a>
<span class="sourceLineNo">7021</span> ox = (int) (ibx == 0 ? 0 : iax / ibx);<a name="line.7021"></a>
<span class="sourceLineNo">7022</span> oai32data[it.oIndex] = ox;<a name="line.7022"></a>
<span class="sourceLineNo">7023</span> for (int j = 1; j &lt; is; j++) {<a name="line.7023"></a>
<span class="sourceLineNo">7024</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.7024"></a>
<span class="sourceLineNo">7025</span> ox = (int) (ibx == 0 ? 0 : iax / ibx);<a name="line.7025"></a>
<span class="sourceLineNo">7026</span> oai32data[it.oIndex + j] = ox;<a name="line.7026"></a>
<span class="sourceLineNo">7027</span> }<a name="line.7027"></a>
<span class="sourceLineNo">7028</span> }<a name="line.7028"></a>
<span class="sourceLineNo">7029</span> }<a name="line.7029"></a>
<span class="sourceLineNo">7030</span> } else if (as &gt; bs) {<a name="line.7030"></a>
<span class="sourceLineNo">7031</span> if (it.isOutputDouble()) {<a name="line.7031"></a>
<span class="sourceLineNo">7032</span> while (it.hasNext()) {<a name="line.7032"></a>
<span class="sourceLineNo">7033</span> double iax = it.aDouble;<a name="line.7033"></a>
<span class="sourceLineNo">7034</span> final double ibx = it.bDouble;<a name="line.7034"></a>
<span class="sourceLineNo">7035</span> int ox;<a name="line.7035"></a>
<span class="sourceLineNo">7036</span> ox = (int) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.7036"></a>
<span class="sourceLineNo">7037</span> oai32data[it.oIndex] = ox;<a name="line.7037"></a>
<span class="sourceLineNo">7038</span> for (int j = 1; j &lt; is; j++) {<a name="line.7038"></a>
<span class="sourceLineNo">7039</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.7039"></a>
<span class="sourceLineNo">7040</span> ox = (int) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.7040"></a>
<span class="sourceLineNo">7041</span> oai32data[it.oIndex + j] = ox;<a name="line.7041"></a>
<span class="sourceLineNo">7042</span> }<a name="line.7042"></a>
<span class="sourceLineNo">7043</span> }<a name="line.7043"></a>
<span class="sourceLineNo">7044</span> } else {<a name="line.7044"></a>
<span class="sourceLineNo">7045</span> while (it.hasNext()) {<a name="line.7045"></a>
<span class="sourceLineNo">7046</span> long iax = it.aLong;<a name="line.7046"></a>
<span class="sourceLineNo">7047</span> final long ibx = it.bLong;<a name="line.7047"></a>
<span class="sourceLineNo">7048</span> int ox;<a name="line.7048"></a>
<span class="sourceLineNo">7049</span> ox = (int) (ibx == 0 ? 0 : iax / ibx);<a name="line.7049"></a>
<span class="sourceLineNo">7050</span> oai32data[it.oIndex] = ox;<a name="line.7050"></a>
<span class="sourceLineNo">7051</span> for (int j = 1; j &lt; is; j++) {<a name="line.7051"></a>
<span class="sourceLineNo">7052</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.7052"></a>
<span class="sourceLineNo">7053</span> ox = (int) (ibx == 0 ? 0 : iax / ibx);<a name="line.7053"></a>
<span class="sourceLineNo">7054</span> oai32data[it.oIndex + j] = ox;<a name="line.7054"></a>
<span class="sourceLineNo">7055</span> }<a name="line.7055"></a>
<span class="sourceLineNo">7056</span> }<a name="line.7056"></a>
<span class="sourceLineNo">7057</span> }<a name="line.7057"></a>
<span class="sourceLineNo">7058</span> } else if (as == 1) {<a name="line.7058"></a>
<span class="sourceLineNo">7059</span> if (it.isOutputDouble()) {<a name="line.7059"></a>
<span class="sourceLineNo">7060</span> while (it.hasNext()) {<a name="line.7060"></a>
<span class="sourceLineNo">7061</span> final double iax = it.aDouble;<a name="line.7061"></a>
<span class="sourceLineNo">7062</span> final double ibx = it.bDouble;<a name="line.7062"></a>
<span class="sourceLineNo">7063</span> int ox;<a name="line.7063"></a>
<span class="sourceLineNo">7064</span> ox = (int) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.7064"></a>
<span class="sourceLineNo">7065</span> for (int j = 0; j &lt; is; j++) {<a name="line.7065"></a>
<span class="sourceLineNo">7066</span> oai32data[it.oIndex + j] = ox;<a name="line.7066"></a>
<span class="sourceLineNo">7067</span> }<a name="line.7067"></a>
<span class="sourceLineNo">7068</span> }<a name="line.7068"></a>
<span class="sourceLineNo">7069</span> } else {<a name="line.7069"></a>
<span class="sourceLineNo">7070</span> while (it.hasNext()) {<a name="line.7070"></a>
<span class="sourceLineNo">7071</span> final long iax = it.aLong;<a name="line.7071"></a>
<span class="sourceLineNo">7072</span> final long ibx = it.bLong;<a name="line.7072"></a>
<span class="sourceLineNo">7073</span> int ox;<a name="line.7073"></a>
<span class="sourceLineNo">7074</span> ox = (int) (ibx == 0 ? 0 : iax / ibx);<a name="line.7074"></a>
<span class="sourceLineNo">7075</span> for (int j = 0; j &lt; is; j++) {<a name="line.7075"></a>
<span class="sourceLineNo">7076</span> oai32data[it.oIndex + j] = ox;<a name="line.7076"></a>
<span class="sourceLineNo">7077</span> }<a name="line.7077"></a>
<span class="sourceLineNo">7078</span> }<a name="line.7078"></a>
<span class="sourceLineNo">7079</span> }<a name="line.7079"></a>
<span class="sourceLineNo">7080</span> } else {<a name="line.7080"></a>
<span class="sourceLineNo">7081</span> if (it.isOutputDouble()) {<a name="line.7081"></a>
<span class="sourceLineNo">7082</span> while (it.hasNext()) {<a name="line.7082"></a>
<span class="sourceLineNo">7083</span> double iax = it.aDouble;<a name="line.7083"></a>
<span class="sourceLineNo">7084</span> double ibx = it.bDouble;<a name="line.7084"></a>
<span class="sourceLineNo">7085</span> int ox;<a name="line.7085"></a>
<span class="sourceLineNo">7086</span> ox = (int) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.7086"></a>
<span class="sourceLineNo">7087</span> oai32data[it.oIndex] = ox;<a name="line.7087"></a>
<span class="sourceLineNo">7088</span> for (int j = 1; j &lt; is; j++) {<a name="line.7088"></a>
<span class="sourceLineNo">7089</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.7089"></a>
<span class="sourceLineNo">7090</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.7090"></a>
<span class="sourceLineNo">7091</span> ox = (int) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.7091"></a>
<span class="sourceLineNo">7092</span> oai32data[it.oIndex + j] = ox;<a name="line.7092"></a>
<span class="sourceLineNo">7093</span> }<a name="line.7093"></a>
<span class="sourceLineNo">7094</span> }<a name="line.7094"></a>
<span class="sourceLineNo">7095</span> } else {<a name="line.7095"></a>
<span class="sourceLineNo">7096</span> while (it.hasNext()) {<a name="line.7096"></a>
<span class="sourceLineNo">7097</span> long iax = it.aLong;<a name="line.7097"></a>
<span class="sourceLineNo">7098</span> long ibx = it.bLong;<a name="line.7098"></a>
<span class="sourceLineNo">7099</span> int ox;<a name="line.7099"></a>
<span class="sourceLineNo">7100</span> ox = (int) (ibx == 0 ? 0 : iax / ibx);<a name="line.7100"></a>
<span class="sourceLineNo">7101</span> oai32data[it.oIndex] = ox;<a name="line.7101"></a>
<span class="sourceLineNo">7102</span> for (int j = 1; j &lt; is; j++) {<a name="line.7102"></a>
<span class="sourceLineNo">7103</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.7103"></a>
<span class="sourceLineNo">7104</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.7104"></a>
<span class="sourceLineNo">7105</span> ox = (int) (ibx == 0 ? 0 : iax / ibx);<a name="line.7105"></a>
<span class="sourceLineNo">7106</span> oai32data[it.oIndex + j] = ox;<a name="line.7106"></a>
<span class="sourceLineNo">7107</span> }<a name="line.7107"></a>
<span class="sourceLineNo">7108</span> }<a name="line.7108"></a>
<span class="sourceLineNo">7109</span> }<a name="line.7109"></a>
<span class="sourceLineNo">7110</span> }<a name="line.7110"></a>
<span class="sourceLineNo">7111</span> break;<a name="line.7111"></a>
<span class="sourceLineNo">7112</span> case Dataset.FLOAT32:<a name="line.7112"></a>
<span class="sourceLineNo">7113</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.7113"></a>
<span class="sourceLineNo">7114</span> if (it.isOutputDouble()) {<a name="line.7114"></a>
<span class="sourceLineNo">7115</span> while (it.hasNext()) {<a name="line.7115"></a>
<span class="sourceLineNo">7116</span> final double iax = it.aDouble;<a name="line.7116"></a>
<span class="sourceLineNo">7117</span> final double ibx = it.bDouble;<a name="line.7117"></a>
<span class="sourceLineNo">7118</span> float ox;<a name="line.7118"></a>
<span class="sourceLineNo">7119</span> ox = (float) (iax / ibx);<a name="line.7119"></a>
<span class="sourceLineNo">7120</span> of32data[it.oIndex] = ox;<a name="line.7120"></a>
<span class="sourceLineNo">7121</span> }<a name="line.7121"></a>
<span class="sourceLineNo">7122</span> } else {<a name="line.7122"></a>
<span class="sourceLineNo">7123</span> while (it.hasNext()) {<a name="line.7123"></a>
<span class="sourceLineNo">7124</span> final long iax = it.aLong;<a name="line.7124"></a>
<span class="sourceLineNo">7125</span> final long ibx = it.bLong;<a name="line.7125"></a>
<span class="sourceLineNo">7126</span> float ox;<a name="line.7126"></a>
<span class="sourceLineNo">7127</span> ox = (iax / ibx);<a name="line.7127"></a>
<span class="sourceLineNo">7128</span> of32data[it.oIndex] = ox;<a name="line.7128"></a>
<span class="sourceLineNo">7129</span> }<a name="line.7129"></a>
<span class="sourceLineNo">7130</span> }<a name="line.7130"></a>
<span class="sourceLineNo">7131</span> break;<a name="line.7131"></a>
<span class="sourceLineNo">7132</span> case Dataset.FLOAT64:<a name="line.7132"></a>
<span class="sourceLineNo">7133</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.7133"></a>
<span class="sourceLineNo">7134</span> if (it.isOutputDouble()) {<a name="line.7134"></a>
<span class="sourceLineNo">7135</span> while (it.hasNext()) {<a name="line.7135"></a>
<span class="sourceLineNo">7136</span> final double iax = it.aDouble;<a name="line.7136"></a>
<span class="sourceLineNo">7137</span> final double ibx = it.bDouble;<a name="line.7137"></a>
<span class="sourceLineNo">7138</span> double ox;<a name="line.7138"></a>
<span class="sourceLineNo">7139</span> ox = (iax / ibx);<a name="line.7139"></a>
<span class="sourceLineNo">7140</span> of64data[it.oIndex] = ox;<a name="line.7140"></a>
<span class="sourceLineNo">7141</span> }<a name="line.7141"></a>
<span class="sourceLineNo">7142</span> } else {<a name="line.7142"></a>
<span class="sourceLineNo">7143</span> while (it.hasNext()) {<a name="line.7143"></a>
<span class="sourceLineNo">7144</span> final long iax = it.aLong;<a name="line.7144"></a>
<span class="sourceLineNo">7145</span> final long ibx = it.bLong;<a name="line.7145"></a>
<span class="sourceLineNo">7146</span> double ox;<a name="line.7146"></a>
<span class="sourceLineNo">7147</span> ox = (iax / ibx);<a name="line.7147"></a>
<span class="sourceLineNo">7148</span> of64data[it.oIndex] = ox;<a name="line.7148"></a>
<span class="sourceLineNo">7149</span> }<a name="line.7149"></a>
<span class="sourceLineNo">7150</span> }<a name="line.7150"></a>
<span class="sourceLineNo">7151</span> break;<a name="line.7151"></a>
<span class="sourceLineNo">7152</span> case Dataset.ARRAYFLOAT32:<a name="line.7152"></a>
<span class="sourceLineNo">7153</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.7153"></a>
<span class="sourceLineNo">7154</span> if (is == 1) {<a name="line.7154"></a>
<span class="sourceLineNo">7155</span> if (it.isOutputDouble()) {<a name="line.7155"></a>
<span class="sourceLineNo">7156</span> while (it.hasNext()) {<a name="line.7156"></a>
<span class="sourceLineNo">7157</span> final double iax = it.aDouble;<a name="line.7157"></a>
<span class="sourceLineNo">7158</span> final double ibx = it.bDouble;<a name="line.7158"></a>
<span class="sourceLineNo">7159</span> float ox;<a name="line.7159"></a>
<span class="sourceLineNo">7160</span> ox = (float) (iax / ibx);<a name="line.7160"></a>
<span class="sourceLineNo">7161</span> oaf32data[it.oIndex] = ox;<a name="line.7161"></a>
<span class="sourceLineNo">7162</span> }<a name="line.7162"></a>
<span class="sourceLineNo">7163</span> } else {<a name="line.7163"></a>
<span class="sourceLineNo">7164</span> while (it.hasNext()) {<a name="line.7164"></a>
<span class="sourceLineNo">7165</span> final long iax = it.aLong;<a name="line.7165"></a>
<span class="sourceLineNo">7166</span> final long ibx = it.bLong;<a name="line.7166"></a>
<span class="sourceLineNo">7167</span> float ox;<a name="line.7167"></a>
<span class="sourceLineNo">7168</span> ox = (iax / ibx);<a name="line.7168"></a>
<span class="sourceLineNo">7169</span> oaf32data[it.oIndex] = ox;<a name="line.7169"></a>
<span class="sourceLineNo">7170</span> }<a name="line.7170"></a>
<span class="sourceLineNo">7171</span> }<a name="line.7171"></a>
<span class="sourceLineNo">7172</span> } else if (as &lt; bs) {<a name="line.7172"></a>
<span class="sourceLineNo">7173</span> if (it.isOutputDouble()) {<a name="line.7173"></a>
<span class="sourceLineNo">7174</span> while (it.hasNext()) {<a name="line.7174"></a>
<span class="sourceLineNo">7175</span> final double iax = it.aDouble;<a name="line.7175"></a>
<span class="sourceLineNo">7176</span> double ibx = it.bDouble;<a name="line.7176"></a>
<span class="sourceLineNo">7177</span> float ox;<a name="line.7177"></a>
<span class="sourceLineNo">7178</span> ox = (float) (iax / ibx);<a name="line.7178"></a>
<span class="sourceLineNo">7179</span> oaf32data[it.oIndex] = ox;<a name="line.7179"></a>
<span class="sourceLineNo">7180</span> for (int j = 1; j &lt; is; j++) {<a name="line.7180"></a>
<span class="sourceLineNo">7181</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.7181"></a>
<span class="sourceLineNo">7182</span> ox = (float) (iax / ibx);<a name="line.7182"></a>
<span class="sourceLineNo">7183</span> oaf32data[it.oIndex + j] = ox;<a name="line.7183"></a>
<span class="sourceLineNo">7184</span> }<a name="line.7184"></a>
<span class="sourceLineNo">7185</span> }<a name="line.7185"></a>
<span class="sourceLineNo">7186</span> } else {<a name="line.7186"></a>
<span class="sourceLineNo">7187</span> while (it.hasNext()) {<a name="line.7187"></a>
<span class="sourceLineNo">7188</span> final long iax = it.aLong;<a name="line.7188"></a>
<span class="sourceLineNo">7189</span> long ibx = it.bLong;<a name="line.7189"></a>
<span class="sourceLineNo">7190</span> float ox;<a name="line.7190"></a>
<span class="sourceLineNo">7191</span> ox = (iax / ibx);<a name="line.7191"></a>
<span class="sourceLineNo">7192</span> oaf32data[it.oIndex] = ox;<a name="line.7192"></a>
<span class="sourceLineNo">7193</span> for (int j = 1; j &lt; is; j++) {<a name="line.7193"></a>
<span class="sourceLineNo">7194</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.7194"></a>
<span class="sourceLineNo">7195</span> ox = (iax / ibx);<a name="line.7195"></a>
<span class="sourceLineNo">7196</span> oaf32data[it.oIndex + j] = ox;<a name="line.7196"></a>
<span class="sourceLineNo">7197</span> }<a name="line.7197"></a>
<span class="sourceLineNo">7198</span> }<a name="line.7198"></a>
<span class="sourceLineNo">7199</span> }<a name="line.7199"></a>
<span class="sourceLineNo">7200</span> } else if (as &gt; bs) {<a name="line.7200"></a>
<span class="sourceLineNo">7201</span> if (it.isOutputDouble()) {<a name="line.7201"></a>
<span class="sourceLineNo">7202</span> while (it.hasNext()) {<a name="line.7202"></a>
<span class="sourceLineNo">7203</span> double iax = it.aDouble;<a name="line.7203"></a>
<span class="sourceLineNo">7204</span> final double ibx = it.bDouble;<a name="line.7204"></a>
<span class="sourceLineNo">7205</span> float ox;<a name="line.7205"></a>
<span class="sourceLineNo">7206</span> ox = (float) (iax / ibx);<a name="line.7206"></a>
<span class="sourceLineNo">7207</span> oaf32data[it.oIndex] = ox;<a name="line.7207"></a>
<span class="sourceLineNo">7208</span> for (int j = 1; j &lt; is; j++) {<a name="line.7208"></a>
<span class="sourceLineNo">7209</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.7209"></a>
<span class="sourceLineNo">7210</span> ox = (float) (iax / ibx);<a name="line.7210"></a>
<span class="sourceLineNo">7211</span> oaf32data[it.oIndex + j] = ox;<a name="line.7211"></a>
<span class="sourceLineNo">7212</span> }<a name="line.7212"></a>
<span class="sourceLineNo">7213</span> }<a name="line.7213"></a>
<span class="sourceLineNo">7214</span> } else {<a name="line.7214"></a>
<span class="sourceLineNo">7215</span> while (it.hasNext()) {<a name="line.7215"></a>
<span class="sourceLineNo">7216</span> long iax = it.aLong;<a name="line.7216"></a>
<span class="sourceLineNo">7217</span> final long ibx = it.bLong;<a name="line.7217"></a>
<span class="sourceLineNo">7218</span> float ox;<a name="line.7218"></a>
<span class="sourceLineNo">7219</span> ox = (iax / ibx);<a name="line.7219"></a>
<span class="sourceLineNo">7220</span> oaf32data[it.oIndex] = ox;<a name="line.7220"></a>
<span class="sourceLineNo">7221</span> for (int j = 1; j &lt; is; j++) {<a name="line.7221"></a>
<span class="sourceLineNo">7222</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.7222"></a>
<span class="sourceLineNo">7223</span> ox = (iax / ibx);<a name="line.7223"></a>
<span class="sourceLineNo">7224</span> oaf32data[it.oIndex + j] = ox;<a name="line.7224"></a>
<span class="sourceLineNo">7225</span> }<a name="line.7225"></a>
<span class="sourceLineNo">7226</span> }<a name="line.7226"></a>
<span class="sourceLineNo">7227</span> }<a name="line.7227"></a>
<span class="sourceLineNo">7228</span> } else if (as == 1) {<a name="line.7228"></a>
<span class="sourceLineNo">7229</span> if (it.isOutputDouble()) {<a name="line.7229"></a>
<span class="sourceLineNo">7230</span> while (it.hasNext()) {<a name="line.7230"></a>
<span class="sourceLineNo">7231</span> final double iax = it.aDouble;<a name="line.7231"></a>
<span class="sourceLineNo">7232</span> final double ibx = it.bDouble;<a name="line.7232"></a>
<span class="sourceLineNo">7233</span> float ox;<a name="line.7233"></a>
<span class="sourceLineNo">7234</span> ox = (float) (iax / ibx);<a name="line.7234"></a>
<span class="sourceLineNo">7235</span> for (int j = 0; j &lt; is; j++) {<a name="line.7235"></a>
<span class="sourceLineNo">7236</span> oaf32data[it.oIndex + j] = ox;<a name="line.7236"></a>
<span class="sourceLineNo">7237</span> }<a name="line.7237"></a>
<span class="sourceLineNo">7238</span> }<a name="line.7238"></a>
<span class="sourceLineNo">7239</span> } else {<a name="line.7239"></a>
<span class="sourceLineNo">7240</span> while (it.hasNext()) {<a name="line.7240"></a>
<span class="sourceLineNo">7241</span> final long iax = it.aLong;<a name="line.7241"></a>
<span class="sourceLineNo">7242</span> final long ibx = it.bLong;<a name="line.7242"></a>
<span class="sourceLineNo">7243</span> float ox;<a name="line.7243"></a>
<span class="sourceLineNo">7244</span> ox = (iax / ibx);<a name="line.7244"></a>
<span class="sourceLineNo">7245</span> for (int j = 0; j &lt; is; j++) {<a name="line.7245"></a>
<span class="sourceLineNo">7246</span> oaf32data[it.oIndex + j] = ox;<a name="line.7246"></a>
<span class="sourceLineNo">7247</span> }<a name="line.7247"></a>
<span class="sourceLineNo">7248</span> }<a name="line.7248"></a>
<span class="sourceLineNo">7249</span> }<a name="line.7249"></a>
<span class="sourceLineNo">7250</span> } else {<a name="line.7250"></a>
<span class="sourceLineNo">7251</span> if (it.isOutputDouble()) {<a name="line.7251"></a>
<span class="sourceLineNo">7252</span> while (it.hasNext()) {<a name="line.7252"></a>
<span class="sourceLineNo">7253</span> double iax = it.aDouble;<a name="line.7253"></a>
<span class="sourceLineNo">7254</span> double ibx = it.bDouble;<a name="line.7254"></a>
<span class="sourceLineNo">7255</span> float ox;<a name="line.7255"></a>
<span class="sourceLineNo">7256</span> ox = (float) (iax / ibx);<a name="line.7256"></a>
<span class="sourceLineNo">7257</span> oaf32data[it.oIndex] = ox;<a name="line.7257"></a>
<span class="sourceLineNo">7258</span> for (int j = 1; j &lt; is; j++) {<a name="line.7258"></a>
<span class="sourceLineNo">7259</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.7259"></a>
<span class="sourceLineNo">7260</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.7260"></a>
<span class="sourceLineNo">7261</span> ox = (float) (iax / ibx);<a name="line.7261"></a>
<span class="sourceLineNo">7262</span> oaf32data[it.oIndex + j] = ox;<a name="line.7262"></a>
<span class="sourceLineNo">7263</span> }<a name="line.7263"></a>
<span class="sourceLineNo">7264</span> }<a name="line.7264"></a>
<span class="sourceLineNo">7265</span> } else {<a name="line.7265"></a>
<span class="sourceLineNo">7266</span> while (it.hasNext()) {<a name="line.7266"></a>
<span class="sourceLineNo">7267</span> long iax = it.aLong;<a name="line.7267"></a>
<span class="sourceLineNo">7268</span> long ibx = it.bLong;<a name="line.7268"></a>
<span class="sourceLineNo">7269</span> float ox;<a name="line.7269"></a>
<span class="sourceLineNo">7270</span> ox = (iax / ibx);<a name="line.7270"></a>
<span class="sourceLineNo">7271</span> oaf32data[it.oIndex] = ox;<a name="line.7271"></a>
<span class="sourceLineNo">7272</span> for (int j = 1; j &lt; is; j++) {<a name="line.7272"></a>
<span class="sourceLineNo">7273</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.7273"></a>
<span class="sourceLineNo">7274</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.7274"></a>
<span class="sourceLineNo">7275</span> ox = (iax / ibx);<a name="line.7275"></a>
<span class="sourceLineNo">7276</span> oaf32data[it.oIndex + j] = ox;<a name="line.7276"></a>
<span class="sourceLineNo">7277</span> }<a name="line.7277"></a>
<span class="sourceLineNo">7278</span> }<a name="line.7278"></a>
<span class="sourceLineNo">7279</span> }<a name="line.7279"></a>
<span class="sourceLineNo">7280</span> }<a name="line.7280"></a>
<span class="sourceLineNo">7281</span> break;<a name="line.7281"></a>
<span class="sourceLineNo">7282</span> case Dataset.ARRAYFLOAT64:<a name="line.7282"></a>
<span class="sourceLineNo">7283</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.7283"></a>
<span class="sourceLineNo">7284</span> if (is == 1) {<a name="line.7284"></a>
<span class="sourceLineNo">7285</span> if (it.isOutputDouble()) {<a name="line.7285"></a>
<span class="sourceLineNo">7286</span> while (it.hasNext()) {<a name="line.7286"></a>
<span class="sourceLineNo">7287</span> final double iax = it.aDouble;<a name="line.7287"></a>
<span class="sourceLineNo">7288</span> final double ibx = it.bDouble;<a name="line.7288"></a>
<span class="sourceLineNo">7289</span> double ox;<a name="line.7289"></a>
<span class="sourceLineNo">7290</span> ox = (iax / ibx);<a name="line.7290"></a>
<span class="sourceLineNo">7291</span> oaf64data[it.oIndex] = ox;<a name="line.7291"></a>
<span class="sourceLineNo">7292</span> }<a name="line.7292"></a>
<span class="sourceLineNo">7293</span> } else {<a name="line.7293"></a>
<span class="sourceLineNo">7294</span> while (it.hasNext()) {<a name="line.7294"></a>
<span class="sourceLineNo">7295</span> final long iax = it.aLong;<a name="line.7295"></a>
<span class="sourceLineNo">7296</span> final long ibx = it.bLong;<a name="line.7296"></a>
<span class="sourceLineNo">7297</span> double ox;<a name="line.7297"></a>
<span class="sourceLineNo">7298</span> ox = (iax / ibx);<a name="line.7298"></a>
<span class="sourceLineNo">7299</span> oaf64data[it.oIndex] = ox;<a name="line.7299"></a>
<span class="sourceLineNo">7300</span> }<a name="line.7300"></a>
<span class="sourceLineNo">7301</span> }<a name="line.7301"></a>
<span class="sourceLineNo">7302</span> } else if (as &lt; bs) {<a name="line.7302"></a>
<span class="sourceLineNo">7303</span> if (it.isOutputDouble()) {<a name="line.7303"></a>
<span class="sourceLineNo">7304</span> while (it.hasNext()) {<a name="line.7304"></a>
<span class="sourceLineNo">7305</span> final double iax = it.aDouble;<a name="line.7305"></a>
<span class="sourceLineNo">7306</span> double ibx = it.bDouble;<a name="line.7306"></a>
<span class="sourceLineNo">7307</span> double ox;<a name="line.7307"></a>
<span class="sourceLineNo">7308</span> ox = (iax / ibx);<a name="line.7308"></a>
<span class="sourceLineNo">7309</span> oaf64data[it.oIndex] = ox;<a name="line.7309"></a>
<span class="sourceLineNo">7310</span> for (int j = 1; j &lt; is; j++) {<a name="line.7310"></a>
<span class="sourceLineNo">7311</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.7311"></a>
<span class="sourceLineNo">7312</span> ox = (iax / ibx);<a name="line.7312"></a>
<span class="sourceLineNo">7313</span> oaf64data[it.oIndex + j] = ox;<a name="line.7313"></a>
<span class="sourceLineNo">7314</span> }<a name="line.7314"></a>
<span class="sourceLineNo">7315</span> }<a name="line.7315"></a>
<span class="sourceLineNo">7316</span> } else {<a name="line.7316"></a>
<span class="sourceLineNo">7317</span> while (it.hasNext()) {<a name="line.7317"></a>
<span class="sourceLineNo">7318</span> final long iax = it.aLong;<a name="line.7318"></a>
<span class="sourceLineNo">7319</span> long ibx = it.bLong;<a name="line.7319"></a>
<span class="sourceLineNo">7320</span> double ox;<a name="line.7320"></a>
<span class="sourceLineNo">7321</span> ox = (iax / ibx);<a name="line.7321"></a>
<span class="sourceLineNo">7322</span> oaf64data[it.oIndex] = ox;<a name="line.7322"></a>
<span class="sourceLineNo">7323</span> for (int j = 1; j &lt; is; j++) {<a name="line.7323"></a>
<span class="sourceLineNo">7324</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.7324"></a>
<span class="sourceLineNo">7325</span> ox = (iax / ibx);<a name="line.7325"></a>
<span class="sourceLineNo">7326</span> oaf64data[it.oIndex + j] = ox;<a name="line.7326"></a>
<span class="sourceLineNo">7327</span> }<a name="line.7327"></a>
<span class="sourceLineNo">7328</span> }<a name="line.7328"></a>
<span class="sourceLineNo">7329</span> }<a name="line.7329"></a>
<span class="sourceLineNo">7330</span> } else if (as &gt; bs) {<a name="line.7330"></a>
<span class="sourceLineNo">7331</span> if (it.isOutputDouble()) {<a name="line.7331"></a>
<span class="sourceLineNo">7332</span> while (it.hasNext()) {<a name="line.7332"></a>
<span class="sourceLineNo">7333</span> double iax = it.aDouble;<a name="line.7333"></a>
<span class="sourceLineNo">7334</span> final double ibx = it.bDouble;<a name="line.7334"></a>
<span class="sourceLineNo">7335</span> double ox;<a name="line.7335"></a>
<span class="sourceLineNo">7336</span> ox = (iax / ibx);<a name="line.7336"></a>
<span class="sourceLineNo">7337</span> oaf64data[it.oIndex] = ox;<a name="line.7337"></a>
<span class="sourceLineNo">7338</span> for (int j = 1; j &lt; is; j++) {<a name="line.7338"></a>
<span class="sourceLineNo">7339</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.7339"></a>
<span class="sourceLineNo">7340</span> ox = (iax / ibx);<a name="line.7340"></a>
<span class="sourceLineNo">7341</span> oaf64data[it.oIndex + j] = ox;<a name="line.7341"></a>
<span class="sourceLineNo">7342</span> }<a name="line.7342"></a>
<span class="sourceLineNo">7343</span> }<a name="line.7343"></a>
<span class="sourceLineNo">7344</span> } else {<a name="line.7344"></a>
<span class="sourceLineNo">7345</span> while (it.hasNext()) {<a name="line.7345"></a>
<span class="sourceLineNo">7346</span> long iax = it.aLong;<a name="line.7346"></a>
<span class="sourceLineNo">7347</span> final long ibx = it.bLong;<a name="line.7347"></a>
<span class="sourceLineNo">7348</span> double ox;<a name="line.7348"></a>
<span class="sourceLineNo">7349</span> ox = (iax / ibx);<a name="line.7349"></a>
<span class="sourceLineNo">7350</span> oaf64data[it.oIndex] = ox;<a name="line.7350"></a>
<span class="sourceLineNo">7351</span> for (int j = 1; j &lt; is; j++) {<a name="line.7351"></a>
<span class="sourceLineNo">7352</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.7352"></a>
<span class="sourceLineNo">7353</span> ox = (iax / ibx);<a name="line.7353"></a>
<span class="sourceLineNo">7354</span> oaf64data[it.oIndex + j] = ox;<a name="line.7354"></a>
<span class="sourceLineNo">7355</span> }<a name="line.7355"></a>
<span class="sourceLineNo">7356</span> }<a name="line.7356"></a>
<span class="sourceLineNo">7357</span> }<a name="line.7357"></a>
<span class="sourceLineNo">7358</span> } else if (as == 1) {<a name="line.7358"></a>
<span class="sourceLineNo">7359</span> if (it.isOutputDouble()) {<a name="line.7359"></a>
<span class="sourceLineNo">7360</span> while (it.hasNext()) {<a name="line.7360"></a>
<span class="sourceLineNo">7361</span> final double iax = it.aDouble;<a name="line.7361"></a>
<span class="sourceLineNo">7362</span> final double ibx = it.bDouble;<a name="line.7362"></a>
<span class="sourceLineNo">7363</span> double ox;<a name="line.7363"></a>
<span class="sourceLineNo">7364</span> ox = (iax / ibx);<a name="line.7364"></a>
<span class="sourceLineNo">7365</span> for (int j = 0; j &lt; is; j++) {<a name="line.7365"></a>
<span class="sourceLineNo">7366</span> oaf64data[it.oIndex + j] = ox;<a name="line.7366"></a>
<span class="sourceLineNo">7367</span> }<a name="line.7367"></a>
<span class="sourceLineNo">7368</span> }<a name="line.7368"></a>
<span class="sourceLineNo">7369</span> } else {<a name="line.7369"></a>
<span class="sourceLineNo">7370</span> while (it.hasNext()) {<a name="line.7370"></a>
<span class="sourceLineNo">7371</span> final long iax = it.aLong;<a name="line.7371"></a>
<span class="sourceLineNo">7372</span> final long ibx = it.bLong;<a name="line.7372"></a>
<span class="sourceLineNo">7373</span> double ox;<a name="line.7373"></a>
<span class="sourceLineNo">7374</span> ox = (iax / ibx);<a name="line.7374"></a>
<span class="sourceLineNo">7375</span> for (int j = 0; j &lt; is; j++) {<a name="line.7375"></a>
<span class="sourceLineNo">7376</span> oaf64data[it.oIndex + j] = ox;<a name="line.7376"></a>
<span class="sourceLineNo">7377</span> }<a name="line.7377"></a>
<span class="sourceLineNo">7378</span> }<a name="line.7378"></a>
<span class="sourceLineNo">7379</span> }<a name="line.7379"></a>
<span class="sourceLineNo">7380</span> } else {<a name="line.7380"></a>
<span class="sourceLineNo">7381</span> if (it.isOutputDouble()) {<a name="line.7381"></a>
<span class="sourceLineNo">7382</span> while (it.hasNext()) {<a name="line.7382"></a>
<span class="sourceLineNo">7383</span> double iax = it.aDouble;<a name="line.7383"></a>
<span class="sourceLineNo">7384</span> double ibx = it.bDouble;<a name="line.7384"></a>
<span class="sourceLineNo">7385</span> double ox;<a name="line.7385"></a>
<span class="sourceLineNo">7386</span> ox = (iax / ibx);<a name="line.7386"></a>
<span class="sourceLineNo">7387</span> oaf64data[it.oIndex] = ox;<a name="line.7387"></a>
<span class="sourceLineNo">7388</span> for (int j = 1; j &lt; is; j++) {<a name="line.7388"></a>
<span class="sourceLineNo">7389</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.7389"></a>
<span class="sourceLineNo">7390</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.7390"></a>
<span class="sourceLineNo">7391</span> ox = (iax / ibx);<a name="line.7391"></a>
<span class="sourceLineNo">7392</span> oaf64data[it.oIndex + j] = ox;<a name="line.7392"></a>
<span class="sourceLineNo">7393</span> }<a name="line.7393"></a>
<span class="sourceLineNo">7394</span> }<a name="line.7394"></a>
<span class="sourceLineNo">7395</span> } else {<a name="line.7395"></a>
<span class="sourceLineNo">7396</span> while (it.hasNext()) {<a name="line.7396"></a>
<span class="sourceLineNo">7397</span> long iax = it.aLong;<a name="line.7397"></a>
<span class="sourceLineNo">7398</span> long ibx = it.bLong;<a name="line.7398"></a>
<span class="sourceLineNo">7399</span> double ox;<a name="line.7399"></a>
<span class="sourceLineNo">7400</span> ox = (iax / ibx);<a name="line.7400"></a>
<span class="sourceLineNo">7401</span> oaf64data[it.oIndex] = ox;<a name="line.7401"></a>
<span class="sourceLineNo">7402</span> for (int j = 1; j &lt; is; j++) {<a name="line.7402"></a>
<span class="sourceLineNo">7403</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.7403"></a>
<span class="sourceLineNo">7404</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.7404"></a>
<span class="sourceLineNo">7405</span> ox = (iax / ibx);<a name="line.7405"></a>
<span class="sourceLineNo">7406</span> oaf64data[it.oIndex + j] = ox;<a name="line.7406"></a>
<span class="sourceLineNo">7407</span> }<a name="line.7407"></a>
<span class="sourceLineNo">7408</span> }<a name="line.7408"></a>
<span class="sourceLineNo">7409</span> }<a name="line.7409"></a>
<span class="sourceLineNo">7410</span> }<a name="line.7410"></a>
<span class="sourceLineNo">7411</span> break;<a name="line.7411"></a>
<span class="sourceLineNo">7412</span> case Dataset.COMPLEX64:<a name="line.7412"></a>
<span class="sourceLineNo">7413</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.7413"></a>
<span class="sourceLineNo">7414</span> if (!da.isComplex()) {<a name="line.7414"></a>
<span class="sourceLineNo">7415</span> if (it.isOutputDouble()) {<a name="line.7415"></a>
<span class="sourceLineNo">7416</span> final double iay = 0;<a name="line.7416"></a>
<span class="sourceLineNo">7417</span> if (db.isComplex()) {<a name="line.7417"></a>
<span class="sourceLineNo">7418</span> while (it.hasNext()) {<a name="line.7418"></a>
<span class="sourceLineNo">7419</span> final double iax = it.aDouble;<a name="line.7419"></a>
<span class="sourceLineNo">7420</span> final double ibx = it.bDouble;<a name="line.7420"></a>
<span class="sourceLineNo">7421</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.7421"></a>
<span class="sourceLineNo">7422</span> float ox;<a name="line.7422"></a>
<span class="sourceLineNo">7423</span> float oy;<a name="line.7423"></a>
<span class="sourceLineNo">7424</span> float q;<a name="line.7424"></a>
<span class="sourceLineNo">7425</span> float den;<a name="line.7425"></a>
<span class="sourceLineNo">7426</span> if (iby == 0) {<a name="line.7426"></a>
<span class="sourceLineNo">7427</span> ox = (float) (iax / ibx);<a name="line.7427"></a>
<span class="sourceLineNo">7428</span> oy = (float) (iay / ibx);<a name="line.7428"></a>
<span class="sourceLineNo">7429</span> } else if (ibx == 0) {<a name="line.7429"></a>
<span class="sourceLineNo">7430</span> ox = (float) (iay / iby);<a name="line.7430"></a>
<span class="sourceLineNo">7431</span> oy = (float) (-iax / iby);<a name="line.7431"></a>
<span class="sourceLineNo">7432</span> } else if (Math.abs(ibx) &lt; Math.abs(iby)) {<a name="line.7432"></a>
<span class="sourceLineNo">7433</span> q = (float) (ibx / iby);<a name="line.7433"></a>
<span class="sourceLineNo">7434</span> den = (float) (ibx * q + iby);<a name="line.7434"></a>
<span class="sourceLineNo">7435</span> ox = (float) ((iax * q + iay) / den);<a name="line.7435"></a>
<span class="sourceLineNo">7436</span> oy = (float) ((iay * q - ibx) / den);<a name="line.7436"></a>
<span class="sourceLineNo">7437</span> } else {<a name="line.7437"></a>
<span class="sourceLineNo">7438</span> q = (float) (iby / ibx);<a name="line.7438"></a>
<span class="sourceLineNo">7439</span> den = (float) (iby * q + ibx);<a name="line.7439"></a>
<span class="sourceLineNo">7440</span> ox = (float) ((iay * q + iax) / den);<a name="line.7440"></a>
<span class="sourceLineNo">7441</span> oy = (float) ((iay - iax * q) / den);<a name="line.7441"></a>
<span class="sourceLineNo">7442</span> }<a name="line.7442"></a>
<span class="sourceLineNo">7443</span> oc64data[it.oIndex] = ox;<a name="line.7443"></a>
<span class="sourceLineNo">7444</span> oc64data[it.oIndex + 1] = oy;<a name="line.7444"></a>
<span class="sourceLineNo">7445</span> }<a name="line.7445"></a>
<span class="sourceLineNo">7446</span> } else {<a name="line.7446"></a>
<span class="sourceLineNo">7447</span> while (it.hasNext()) {<a name="line.7447"></a>
<span class="sourceLineNo">7448</span> final double iax = it.aDouble;<a name="line.7448"></a>
<span class="sourceLineNo">7449</span> final double ibx = it.bDouble;<a name="line.7449"></a>
<span class="sourceLineNo">7450</span> final double iby = 0;<a name="line.7450"></a>
<span class="sourceLineNo">7451</span> float ox;<a name="line.7451"></a>
<span class="sourceLineNo">7452</span> float oy;<a name="line.7452"></a>
<span class="sourceLineNo">7453</span> float q;<a name="line.7453"></a>
<span class="sourceLineNo">7454</span> float den;<a name="line.7454"></a>
<span class="sourceLineNo">7455</span> if (iby == 0) {<a name="line.7455"></a>
<span class="sourceLineNo">7456</span> ox = (float) (iax / ibx);<a name="line.7456"></a>
<span class="sourceLineNo">7457</span> oy = (float) (iay / ibx);<a name="line.7457"></a>
<span class="sourceLineNo">7458</span> } else if (ibx == 0) {<a name="line.7458"></a>
<span class="sourceLineNo">7459</span> ox = (float) (iay / iby);<a name="line.7459"></a>
<span class="sourceLineNo">7460</span> oy = (float) (-iax / iby);<a name="line.7460"></a>
<span class="sourceLineNo">7461</span> } else if (Math.abs(ibx) &lt; Math.abs(iby)) {<a name="line.7461"></a>
<span class="sourceLineNo">7462</span> q = (float) (ibx / iby);<a name="line.7462"></a>
<span class="sourceLineNo">7463</span> den = (float) (ibx * q + iby);<a name="line.7463"></a>
<span class="sourceLineNo">7464</span> ox = (float) ((iax * q + iay) / den);<a name="line.7464"></a>
<span class="sourceLineNo">7465</span> oy = (float) ((iay * q - ibx) / den);<a name="line.7465"></a>
<span class="sourceLineNo">7466</span> } else {<a name="line.7466"></a>
<span class="sourceLineNo">7467</span> q = (float) (iby / ibx);<a name="line.7467"></a>
<span class="sourceLineNo">7468</span> den = (float) (iby * q + ibx);<a name="line.7468"></a>
<span class="sourceLineNo">7469</span> ox = (float) ((iay * q + iax) / den);<a name="line.7469"></a>
<span class="sourceLineNo">7470</span> oy = (float) ((iay - iax * q) / den);<a name="line.7470"></a>
<span class="sourceLineNo">7471</span> }<a name="line.7471"></a>
<span class="sourceLineNo">7472</span> oc64data[it.oIndex] = ox;<a name="line.7472"></a>
<span class="sourceLineNo">7473</span> oc64data[it.oIndex + 1] = oy;<a name="line.7473"></a>
<span class="sourceLineNo">7474</span> }<a name="line.7474"></a>
<span class="sourceLineNo">7475</span> }<a name="line.7475"></a>
<span class="sourceLineNo">7476</span> } else {<a name="line.7476"></a>
<span class="sourceLineNo">7477</span> final long iay = 0;<a name="line.7477"></a>
<span class="sourceLineNo">7478</span> while (it.hasNext()) {<a name="line.7478"></a>
<span class="sourceLineNo">7479</span> final long iax = it.aLong;<a name="line.7479"></a>
<span class="sourceLineNo">7480</span> final long ibx = it.bLong;<a name="line.7480"></a>
<span class="sourceLineNo">7481</span> final long iby = 0;<a name="line.7481"></a>
<span class="sourceLineNo">7482</span> float ox;<a name="line.7482"></a>
<span class="sourceLineNo">7483</span> float oy;<a name="line.7483"></a>
<span class="sourceLineNo">7484</span> float q;<a name="line.7484"></a>
<span class="sourceLineNo">7485</span> float den;<a name="line.7485"></a>
<span class="sourceLineNo">7486</span> if (iby == 0) {<a name="line.7486"></a>
<span class="sourceLineNo">7487</span> ox = (float) (iax / ibx);<a name="line.7487"></a>
<span class="sourceLineNo">7488</span> oy = (float) (iay / ibx);<a name="line.7488"></a>
<span class="sourceLineNo">7489</span> } else if (ibx == 0) {<a name="line.7489"></a>
<span class="sourceLineNo">7490</span> ox = (float) (iay / iby);<a name="line.7490"></a>
<span class="sourceLineNo">7491</span> oy = (float) (-iax / iby);<a name="line.7491"></a>
<span class="sourceLineNo">7492</span> } else if (Math.abs(ibx) &lt; Math.abs(iby)) {<a name="line.7492"></a>
<span class="sourceLineNo">7493</span> q = (float) (ibx / iby);<a name="line.7493"></a>
<span class="sourceLineNo">7494</span> den = (float) (ibx * q + iby);<a name="line.7494"></a>
<span class="sourceLineNo">7495</span> ox = (float) ((iax * q + iay) / den);<a name="line.7495"></a>
<span class="sourceLineNo">7496</span> oy = (float) ((iay * q - ibx) / den);<a name="line.7496"></a>
<span class="sourceLineNo">7497</span> } else {<a name="line.7497"></a>
<span class="sourceLineNo">7498</span> q = (float) (iby / ibx);<a name="line.7498"></a>
<span class="sourceLineNo">7499</span> den = (float) (iby * q + ibx);<a name="line.7499"></a>
<span class="sourceLineNo">7500</span> ox = (float) ((iay * q + iax) / den);<a name="line.7500"></a>
<span class="sourceLineNo">7501</span> oy = (float) ((iay - iax * q) / den);<a name="line.7501"></a>
<span class="sourceLineNo">7502</span> }<a name="line.7502"></a>
<span class="sourceLineNo">7503</span> oc64data[it.oIndex] = ox;<a name="line.7503"></a>
<span class="sourceLineNo">7504</span> oc64data[it.oIndex + 1] = oy;<a name="line.7504"></a>
<span class="sourceLineNo">7505</span> }<a name="line.7505"></a>
<span class="sourceLineNo">7506</span> }<a name="line.7506"></a>
<span class="sourceLineNo">7507</span> } else if (!db.isComplex()) {<a name="line.7507"></a>
<span class="sourceLineNo">7508</span> final double iby = 0;<a name="line.7508"></a>
<span class="sourceLineNo">7509</span> while (it.hasNext()) {<a name="line.7509"></a>
<span class="sourceLineNo">7510</span> final double iax = it.aDouble;<a name="line.7510"></a>
<span class="sourceLineNo">7511</span> final double ibx = it.bDouble;<a name="line.7511"></a>
<span class="sourceLineNo">7512</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.7512"></a>
<span class="sourceLineNo">7513</span> float ox;<a name="line.7513"></a>
<span class="sourceLineNo">7514</span> float oy;<a name="line.7514"></a>
<span class="sourceLineNo">7515</span> float q;<a name="line.7515"></a>
<span class="sourceLineNo">7516</span> float den;<a name="line.7516"></a>
<span class="sourceLineNo">7517</span> if (iby == 0) {<a name="line.7517"></a>
<span class="sourceLineNo">7518</span> ox = (float) (iax / ibx);<a name="line.7518"></a>
<span class="sourceLineNo">7519</span> oy = (float) (iay / ibx);<a name="line.7519"></a>
<span class="sourceLineNo">7520</span> } else if (ibx == 0) {<a name="line.7520"></a>
<span class="sourceLineNo">7521</span> ox = (float) (iay / iby);<a name="line.7521"></a>
<span class="sourceLineNo">7522</span> oy = (float) (-iax / iby);<a name="line.7522"></a>
<span class="sourceLineNo">7523</span> } else if (Math.abs(ibx) &lt; Math.abs(iby)) {<a name="line.7523"></a>
<span class="sourceLineNo">7524</span> q = (float) (ibx / iby);<a name="line.7524"></a>
<span class="sourceLineNo">7525</span> den = (float) (ibx * q + iby);<a name="line.7525"></a>
<span class="sourceLineNo">7526</span> ox = (float) ((iax * q + iay) / den);<a name="line.7526"></a>
<span class="sourceLineNo">7527</span> oy = (float) ((iay * q - ibx) / den);<a name="line.7527"></a>
<span class="sourceLineNo">7528</span> } else {<a name="line.7528"></a>
<span class="sourceLineNo">7529</span> q = (float) (iby / ibx);<a name="line.7529"></a>
<span class="sourceLineNo">7530</span> den = (float) (iby * q + ibx);<a name="line.7530"></a>
<span class="sourceLineNo">7531</span> ox = (float) ((iay * q + iax) / den);<a name="line.7531"></a>
<span class="sourceLineNo">7532</span> oy = (float) ((iay - iax * q) / den);<a name="line.7532"></a>
<span class="sourceLineNo">7533</span> }<a name="line.7533"></a>
<span class="sourceLineNo">7534</span> oc64data[it.oIndex] = ox;<a name="line.7534"></a>
<span class="sourceLineNo">7535</span> oc64data[it.oIndex + 1] = oy;<a name="line.7535"></a>
<span class="sourceLineNo">7536</span> }<a name="line.7536"></a>
<span class="sourceLineNo">7537</span> } else {<a name="line.7537"></a>
<span class="sourceLineNo">7538</span> while (it.hasNext()) {<a name="line.7538"></a>
<span class="sourceLineNo">7539</span> final double iax = it.aDouble;<a name="line.7539"></a>
<span class="sourceLineNo">7540</span> final double ibx = it.bDouble;<a name="line.7540"></a>
<span class="sourceLineNo">7541</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.7541"></a>
<span class="sourceLineNo">7542</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.7542"></a>
<span class="sourceLineNo">7543</span> float ox;<a name="line.7543"></a>
<span class="sourceLineNo">7544</span> float oy;<a name="line.7544"></a>
<span class="sourceLineNo">7545</span> float q;<a name="line.7545"></a>
<span class="sourceLineNo">7546</span> float den;<a name="line.7546"></a>
<span class="sourceLineNo">7547</span> if (iby == 0) {<a name="line.7547"></a>
<span class="sourceLineNo">7548</span> ox = (float) (iax / ibx);<a name="line.7548"></a>
<span class="sourceLineNo">7549</span> oy = (float) (iay / ibx);<a name="line.7549"></a>
<span class="sourceLineNo">7550</span> } else if (ibx == 0) {<a name="line.7550"></a>
<span class="sourceLineNo">7551</span> ox = (float) (iay / iby);<a name="line.7551"></a>
<span class="sourceLineNo">7552</span> oy = (float) (-iax / iby);<a name="line.7552"></a>
<span class="sourceLineNo">7553</span> } else if (Math.abs(ibx) &lt; Math.abs(iby)) {<a name="line.7553"></a>
<span class="sourceLineNo">7554</span> q = (float) (ibx / iby);<a name="line.7554"></a>
<span class="sourceLineNo">7555</span> den = (float) (ibx * q + iby);<a name="line.7555"></a>
<span class="sourceLineNo">7556</span> ox = (float) ((iax * q + iay) / den);<a name="line.7556"></a>
<span class="sourceLineNo">7557</span> oy = (float) ((iay * q - ibx) / den);<a name="line.7557"></a>
<span class="sourceLineNo">7558</span> } else {<a name="line.7558"></a>
<span class="sourceLineNo">7559</span> q = (float) (iby / ibx);<a name="line.7559"></a>
<span class="sourceLineNo">7560</span> den = (float) (iby * q + ibx);<a name="line.7560"></a>
<span class="sourceLineNo">7561</span> ox = (float) ((iay * q + iax) / den);<a name="line.7561"></a>
<span class="sourceLineNo">7562</span> oy = (float) ((iay - iax * q) / den);<a name="line.7562"></a>
<span class="sourceLineNo">7563</span> }<a name="line.7563"></a>
<span class="sourceLineNo">7564</span> oc64data[it.oIndex] = ox;<a name="line.7564"></a>
<span class="sourceLineNo">7565</span> oc64data[it.oIndex + 1] = oy;<a name="line.7565"></a>
<span class="sourceLineNo">7566</span> }<a name="line.7566"></a>
<span class="sourceLineNo">7567</span> }<a name="line.7567"></a>
<span class="sourceLineNo">7568</span> break;<a name="line.7568"></a>
<span class="sourceLineNo">7569</span> case Dataset.COMPLEX128:<a name="line.7569"></a>
<span class="sourceLineNo">7570</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.7570"></a>
<span class="sourceLineNo">7571</span> if (!da.isComplex()) {<a name="line.7571"></a>
<span class="sourceLineNo">7572</span> if (it.isOutputDouble()) {<a name="line.7572"></a>
<span class="sourceLineNo">7573</span> final double iay = 0;<a name="line.7573"></a>
<span class="sourceLineNo">7574</span> if (db.isComplex()) {<a name="line.7574"></a>
<span class="sourceLineNo">7575</span> while (it.hasNext()) {<a name="line.7575"></a>
<span class="sourceLineNo">7576</span> final double iax = it.aDouble;<a name="line.7576"></a>
<span class="sourceLineNo">7577</span> final double ibx = it.bDouble;<a name="line.7577"></a>
<span class="sourceLineNo">7578</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.7578"></a>
<span class="sourceLineNo">7579</span> double ox;<a name="line.7579"></a>
<span class="sourceLineNo">7580</span> double oy;<a name="line.7580"></a>
<span class="sourceLineNo">7581</span> double q;<a name="line.7581"></a>
<span class="sourceLineNo">7582</span> double den;<a name="line.7582"></a>
<span class="sourceLineNo">7583</span> if (iby == 0) {<a name="line.7583"></a>
<span class="sourceLineNo">7584</span> ox = (iax / ibx);<a name="line.7584"></a>
<span class="sourceLineNo">7585</span> oy = (iay / ibx);<a name="line.7585"></a>
<span class="sourceLineNo">7586</span> } else if (ibx == 0) {<a name="line.7586"></a>
<span class="sourceLineNo">7587</span> ox = (iay / iby);<a name="line.7587"></a>
<span class="sourceLineNo">7588</span> oy = (-iax / iby);<a name="line.7588"></a>
<span class="sourceLineNo">7589</span> } else if (Math.abs(ibx) &lt; Math.abs(iby)) {<a name="line.7589"></a>
<span class="sourceLineNo">7590</span> q = (ibx / iby);<a name="line.7590"></a>
<span class="sourceLineNo">7591</span> den = (ibx * q + iby);<a name="line.7591"></a>
<span class="sourceLineNo">7592</span> ox = ((iax * q + iay) / den);<a name="line.7592"></a>
<span class="sourceLineNo">7593</span> oy = ((iay * q - ibx) / den);<a name="line.7593"></a>
<span class="sourceLineNo">7594</span> } else {<a name="line.7594"></a>
<span class="sourceLineNo">7595</span> q = (iby / ibx);<a name="line.7595"></a>
<span class="sourceLineNo">7596</span> den = (iby * q + ibx);<a name="line.7596"></a>
<span class="sourceLineNo">7597</span> ox = ((iay * q + iax) / den);<a name="line.7597"></a>
<span class="sourceLineNo">7598</span> oy = ((iay - iax * q) / den);<a name="line.7598"></a>
<span class="sourceLineNo">7599</span> }<a name="line.7599"></a>
<span class="sourceLineNo">7600</span> oc128data[it.oIndex] = ox;<a name="line.7600"></a>
<span class="sourceLineNo">7601</span> oc128data[it.oIndex + 1] = oy;<a name="line.7601"></a>
<span class="sourceLineNo">7602</span> }<a name="line.7602"></a>
<span class="sourceLineNo">7603</span> } else {<a name="line.7603"></a>
<span class="sourceLineNo">7604</span> while (it.hasNext()) {<a name="line.7604"></a>
<span class="sourceLineNo">7605</span> final double iax = it.aDouble;<a name="line.7605"></a>
<span class="sourceLineNo">7606</span> final double ibx = it.bDouble;<a name="line.7606"></a>
<span class="sourceLineNo">7607</span> final double iby = 0;<a name="line.7607"></a>
<span class="sourceLineNo">7608</span> double ox;<a name="line.7608"></a>
<span class="sourceLineNo">7609</span> double oy;<a name="line.7609"></a>
<span class="sourceLineNo">7610</span> double q;<a name="line.7610"></a>
<span class="sourceLineNo">7611</span> double den;<a name="line.7611"></a>
<span class="sourceLineNo">7612</span> if (iby == 0) {<a name="line.7612"></a>
<span class="sourceLineNo">7613</span> ox = (iax / ibx);<a name="line.7613"></a>
<span class="sourceLineNo">7614</span> oy = (iay / ibx);<a name="line.7614"></a>
<span class="sourceLineNo">7615</span> } else if (ibx == 0) {<a name="line.7615"></a>
<span class="sourceLineNo">7616</span> ox = (iay / iby);<a name="line.7616"></a>
<span class="sourceLineNo">7617</span> oy = (-iax / iby);<a name="line.7617"></a>
<span class="sourceLineNo">7618</span> } else if (Math.abs(ibx) &lt; Math.abs(iby)) {<a name="line.7618"></a>
<span class="sourceLineNo">7619</span> q = (ibx / iby);<a name="line.7619"></a>
<span class="sourceLineNo">7620</span> den = (ibx * q + iby);<a name="line.7620"></a>
<span class="sourceLineNo">7621</span> ox = ((iax * q + iay) / den);<a name="line.7621"></a>
<span class="sourceLineNo">7622</span> oy = ((iay * q - ibx) / den);<a name="line.7622"></a>
<span class="sourceLineNo">7623</span> } else {<a name="line.7623"></a>
<span class="sourceLineNo">7624</span> q = (iby / ibx);<a name="line.7624"></a>
<span class="sourceLineNo">7625</span> den = (iby * q + ibx);<a name="line.7625"></a>
<span class="sourceLineNo">7626</span> ox = ((iay * q + iax) / den);<a name="line.7626"></a>
<span class="sourceLineNo">7627</span> oy = ((iay - iax * q) / den);<a name="line.7627"></a>
<span class="sourceLineNo">7628</span> }<a name="line.7628"></a>
<span class="sourceLineNo">7629</span> oc128data[it.oIndex] = ox;<a name="line.7629"></a>
<span class="sourceLineNo">7630</span> oc128data[it.oIndex + 1] = oy;<a name="line.7630"></a>
<span class="sourceLineNo">7631</span> }<a name="line.7631"></a>
<span class="sourceLineNo">7632</span> }<a name="line.7632"></a>
<span class="sourceLineNo">7633</span> } else {<a name="line.7633"></a>
<span class="sourceLineNo">7634</span> final long iay = 0;<a name="line.7634"></a>
<span class="sourceLineNo">7635</span> while (it.hasNext()) {<a name="line.7635"></a>
<span class="sourceLineNo">7636</span> final long iax = it.aLong;<a name="line.7636"></a>
<span class="sourceLineNo">7637</span> final long ibx = it.bLong;<a name="line.7637"></a>
<span class="sourceLineNo">7638</span> final long iby = 0;<a name="line.7638"></a>
<span class="sourceLineNo">7639</span> double ox;<a name="line.7639"></a>
<span class="sourceLineNo">7640</span> double oy;<a name="line.7640"></a>
<span class="sourceLineNo">7641</span> double q;<a name="line.7641"></a>
<span class="sourceLineNo">7642</span> double den;<a name="line.7642"></a>
<span class="sourceLineNo">7643</span> if (iby == 0) {<a name="line.7643"></a>
<span class="sourceLineNo">7644</span> ox = (iax / ibx);<a name="line.7644"></a>
<span class="sourceLineNo">7645</span> oy = (iay / ibx);<a name="line.7645"></a>
<span class="sourceLineNo">7646</span> } else if (ibx == 0) {<a name="line.7646"></a>
<span class="sourceLineNo">7647</span> ox = (iay / iby);<a name="line.7647"></a>
<span class="sourceLineNo">7648</span> oy = (-iax / iby);<a name="line.7648"></a>
<span class="sourceLineNo">7649</span> } else if (Math.abs(ibx) &lt; Math.abs(iby)) {<a name="line.7649"></a>
<span class="sourceLineNo">7650</span> q = (ibx / iby);<a name="line.7650"></a>
<span class="sourceLineNo">7651</span> den = (ibx * q + iby);<a name="line.7651"></a>
<span class="sourceLineNo">7652</span> ox = ((iax * q + iay) / den);<a name="line.7652"></a>
<span class="sourceLineNo">7653</span> oy = ((iay * q - ibx) / den);<a name="line.7653"></a>
<span class="sourceLineNo">7654</span> } else {<a name="line.7654"></a>
<span class="sourceLineNo">7655</span> q = (iby / ibx);<a name="line.7655"></a>
<span class="sourceLineNo">7656</span> den = (iby * q + ibx);<a name="line.7656"></a>
<span class="sourceLineNo">7657</span> ox = ((iay * q + iax) / den);<a name="line.7657"></a>
<span class="sourceLineNo">7658</span> oy = ((iay - iax * q) / den);<a name="line.7658"></a>
<span class="sourceLineNo">7659</span> }<a name="line.7659"></a>
<span class="sourceLineNo">7660</span> oc128data[it.oIndex] = ox;<a name="line.7660"></a>
<span class="sourceLineNo">7661</span> oc128data[it.oIndex + 1] = oy;<a name="line.7661"></a>
<span class="sourceLineNo">7662</span> }<a name="line.7662"></a>
<span class="sourceLineNo">7663</span> }<a name="line.7663"></a>
<span class="sourceLineNo">7664</span> } else if (!db.isComplex()) {<a name="line.7664"></a>
<span class="sourceLineNo">7665</span> final double iby = 0;<a name="line.7665"></a>
<span class="sourceLineNo">7666</span> while (it.hasNext()) {<a name="line.7666"></a>
<span class="sourceLineNo">7667</span> final double iax = it.aDouble;<a name="line.7667"></a>
<span class="sourceLineNo">7668</span> final double ibx = it.bDouble;<a name="line.7668"></a>
<span class="sourceLineNo">7669</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.7669"></a>
<span class="sourceLineNo">7670</span> double ox;<a name="line.7670"></a>
<span class="sourceLineNo">7671</span> double oy;<a name="line.7671"></a>
<span class="sourceLineNo">7672</span> double q;<a name="line.7672"></a>
<span class="sourceLineNo">7673</span> double den;<a name="line.7673"></a>
<span class="sourceLineNo">7674</span> if (iby == 0) {<a name="line.7674"></a>
<span class="sourceLineNo">7675</span> ox = (iax / ibx);<a name="line.7675"></a>
<span class="sourceLineNo">7676</span> oy = (iay / ibx);<a name="line.7676"></a>
<span class="sourceLineNo">7677</span> } else if (ibx == 0) {<a name="line.7677"></a>
<span class="sourceLineNo">7678</span> ox = (iay / iby);<a name="line.7678"></a>
<span class="sourceLineNo">7679</span> oy = (-iax / iby);<a name="line.7679"></a>
<span class="sourceLineNo">7680</span> } else if (Math.abs(ibx) &lt; Math.abs(iby)) {<a name="line.7680"></a>
<span class="sourceLineNo">7681</span> q = (ibx / iby);<a name="line.7681"></a>
<span class="sourceLineNo">7682</span> den = (ibx * q + iby);<a name="line.7682"></a>
<span class="sourceLineNo">7683</span> ox = ((iax * q + iay) / den);<a name="line.7683"></a>
<span class="sourceLineNo">7684</span> oy = ((iay * q - ibx) / den);<a name="line.7684"></a>
<span class="sourceLineNo">7685</span> } else {<a name="line.7685"></a>
<span class="sourceLineNo">7686</span> q = (iby / ibx);<a name="line.7686"></a>
<span class="sourceLineNo">7687</span> den = (iby * q + ibx);<a name="line.7687"></a>
<span class="sourceLineNo">7688</span> ox = ((iay * q + iax) / den);<a name="line.7688"></a>
<span class="sourceLineNo">7689</span> oy = ((iay - iax * q) / den);<a name="line.7689"></a>
<span class="sourceLineNo">7690</span> }<a name="line.7690"></a>
<span class="sourceLineNo">7691</span> oc128data[it.oIndex] = ox;<a name="line.7691"></a>
<span class="sourceLineNo">7692</span> oc128data[it.oIndex + 1] = oy;<a name="line.7692"></a>
<span class="sourceLineNo">7693</span> }<a name="line.7693"></a>
<span class="sourceLineNo">7694</span> } else {<a name="line.7694"></a>
<span class="sourceLineNo">7695</span> while (it.hasNext()) {<a name="line.7695"></a>
<span class="sourceLineNo">7696</span> final double iax = it.aDouble;<a name="line.7696"></a>
<span class="sourceLineNo">7697</span> final double ibx = it.bDouble;<a name="line.7697"></a>
<span class="sourceLineNo">7698</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.7698"></a>
<span class="sourceLineNo">7699</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.7699"></a>
<span class="sourceLineNo">7700</span> double ox;<a name="line.7700"></a>
<span class="sourceLineNo">7701</span> double oy;<a name="line.7701"></a>
<span class="sourceLineNo">7702</span> double q;<a name="line.7702"></a>
<span class="sourceLineNo">7703</span> double den;<a name="line.7703"></a>
<span class="sourceLineNo">7704</span> if (iby == 0) {<a name="line.7704"></a>
<span class="sourceLineNo">7705</span> ox = (iax / ibx);<a name="line.7705"></a>
<span class="sourceLineNo">7706</span> oy = (iay / ibx);<a name="line.7706"></a>
<span class="sourceLineNo">7707</span> } else if (ibx == 0) {<a name="line.7707"></a>
<span class="sourceLineNo">7708</span> ox = (iay / iby);<a name="line.7708"></a>
<span class="sourceLineNo">7709</span> oy = (-iax / iby);<a name="line.7709"></a>
<span class="sourceLineNo">7710</span> } else if (Math.abs(ibx) &lt; Math.abs(iby)) {<a name="line.7710"></a>
<span class="sourceLineNo">7711</span> q = (ibx / iby);<a name="line.7711"></a>
<span class="sourceLineNo">7712</span> den = (ibx * q + iby);<a name="line.7712"></a>
<span class="sourceLineNo">7713</span> ox = ((iax * q + iay) / den);<a name="line.7713"></a>
<span class="sourceLineNo">7714</span> oy = ((iay * q - ibx) / den);<a name="line.7714"></a>
<span class="sourceLineNo">7715</span> } else {<a name="line.7715"></a>
<span class="sourceLineNo">7716</span> q = (iby / ibx);<a name="line.7716"></a>
<span class="sourceLineNo">7717</span> den = (iby * q + ibx);<a name="line.7717"></a>
<span class="sourceLineNo">7718</span> ox = ((iay * q + iax) / den);<a name="line.7718"></a>
<span class="sourceLineNo">7719</span> oy = ((iay - iax * q) / den);<a name="line.7719"></a>
<span class="sourceLineNo">7720</span> }<a name="line.7720"></a>
<span class="sourceLineNo">7721</span> oc128data[it.oIndex] = ox;<a name="line.7721"></a>
<span class="sourceLineNo">7722</span> oc128data[it.oIndex + 1] = oy;<a name="line.7722"></a>
<span class="sourceLineNo">7723</span> }<a name="line.7723"></a>
<span class="sourceLineNo">7724</span> }<a name="line.7724"></a>
<span class="sourceLineNo">7725</span> break;<a name="line.7725"></a>
<span class="sourceLineNo">7726</span> default:<a name="line.7726"></a>
<span class="sourceLineNo">7727</span> throw new IllegalArgumentException("divide supports integer, compound integer, real, compound real, complex datasets only");<a name="line.7727"></a>
<span class="sourceLineNo">7728</span> }<a name="line.7728"></a>
<span class="sourceLineNo">7729</span><a name="line.7729"></a>
<span class="sourceLineNo">7730</span> addBinaryOperatorName(da, db, result, "/");<a name="line.7730"></a>
<span class="sourceLineNo">7731</span> return result;<a name="line.7731"></a>
<span class="sourceLineNo">7732</span> }<a name="line.7732"></a>
<span class="sourceLineNo">7733</span><a name="line.7733"></a>
<span class="sourceLineNo">7734</span> /**<a name="line.7734"></a>
<span class="sourceLineNo">7735</span> * dividez operator<a name="line.7735"></a>
<span class="sourceLineNo">7736</span> * @param a<a name="line.7736"></a>
<span class="sourceLineNo">7737</span> * @param b<a name="line.7737"></a>
<span class="sourceLineNo">7738</span> * @return {@code a / b}, division of a by b<a name="line.7738"></a>
<span class="sourceLineNo">7739</span> */<a name="line.7739"></a>
<span class="sourceLineNo">7740</span> public static Dataset dividez(final Object a, final Object b) {<a name="line.7740"></a>
<span class="sourceLineNo">7741</span> return dividez(a, b, null);<a name="line.7741"></a>
<span class="sourceLineNo">7742</span> }<a name="line.7742"></a>
<span class="sourceLineNo">7743</span><a name="line.7743"></a>
<span class="sourceLineNo">7744</span> /**<a name="line.7744"></a>
<span class="sourceLineNo">7745</span> * dividez operator<a name="line.7745"></a>
<span class="sourceLineNo">7746</span> * @param a<a name="line.7746"></a>
<span class="sourceLineNo">7747</span> * @param b<a name="line.7747"></a>
<span class="sourceLineNo">7748</span> * @param o output can be null - in which case, a new dataset is created<a name="line.7748"></a>
<span class="sourceLineNo">7749</span> * @return {@code a / b}, division of a by b<a name="line.7749"></a>
<span class="sourceLineNo">7750</span> */<a name="line.7750"></a>
<span class="sourceLineNo">7751</span> public static Dataset dividez(final Object a, final Object b, final Dataset o) {<a name="line.7751"></a>
<span class="sourceLineNo">7752</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.7752"></a>
<span class="sourceLineNo">7753</span> Dataset db = b instanceof Dataset ? (Dataset) b : DatasetFactory.createFromObject(b);<a name="line.7753"></a>
<span class="sourceLineNo">7754</span> BroadcastIterator it = BroadcastIterator.createIterator(da, db, o, true);<a name="line.7754"></a>
<span class="sourceLineNo">7755</span> final Dataset result = it.getOutput();<a name="line.7755"></a>
<span class="sourceLineNo">7756</span> if (!result.isComplex()) {<a name="line.7756"></a>
<span class="sourceLineNo">7757</span> boolean change = false;<a name="line.7757"></a>
<span class="sourceLineNo">7758</span> if (da.isComplex()) {<a name="line.7758"></a>
<span class="sourceLineNo">7759</span> da = da.getRealView();<a name="line.7759"></a>
<span class="sourceLineNo">7760</span> change = true;<a name="line.7760"></a>
<span class="sourceLineNo">7761</span> }<a name="line.7761"></a>
<span class="sourceLineNo">7762</span> if (db.isComplex()) {<a name="line.7762"></a>
<span class="sourceLineNo">7763</span> db = db.getRealView();<a name="line.7763"></a>
<span class="sourceLineNo">7764</span> change = true;<a name="line.7764"></a>
<span class="sourceLineNo">7765</span> }<a name="line.7765"></a>
<span class="sourceLineNo">7766</span> if (change) {<a name="line.7766"></a>
<span class="sourceLineNo">7767</span> it = BroadcastIterator.createIterator(da, db, result, true);<a name="line.7767"></a>
<span class="sourceLineNo">7768</span> }<a name="line.7768"></a>
<span class="sourceLineNo">7769</span> }<a name="line.7769"></a>
<span class="sourceLineNo">7770</span> final int is = result.getElementsPerItem();<a name="line.7770"></a>
<span class="sourceLineNo">7771</span> final int as = da.getElementsPerItem();<a name="line.7771"></a>
<span class="sourceLineNo">7772</span> final int bs = db.getElementsPerItem();<a name="line.7772"></a>
<span class="sourceLineNo">7773</span> final int dt = result.getDType();<a name="line.7773"></a>
<span class="sourceLineNo">7774</span><a name="line.7774"></a>
<span class="sourceLineNo">7775</span> switch(dt) {<a name="line.7775"></a>
<span class="sourceLineNo">7776</span> case Dataset.INT8:<a name="line.7776"></a>
<span class="sourceLineNo">7777</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.7777"></a>
<span class="sourceLineNo">7778</span> if (it.isOutputDouble()) {<a name="line.7778"></a>
<span class="sourceLineNo">7779</span> while (it.hasNext()) {<a name="line.7779"></a>
<span class="sourceLineNo">7780</span> final double iax = it.aDouble;<a name="line.7780"></a>
<span class="sourceLineNo">7781</span> final double ibx = it.bDouble;<a name="line.7781"></a>
<span class="sourceLineNo">7782</span> byte ox;<a name="line.7782"></a>
<span class="sourceLineNo">7783</span> ox = (byte) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.7783"></a>
<span class="sourceLineNo">7784</span> oi8data[it.oIndex] = ox;<a name="line.7784"></a>
<span class="sourceLineNo">7785</span> }<a name="line.7785"></a>
<span class="sourceLineNo">7786</span> } else {<a name="line.7786"></a>
<span class="sourceLineNo">7787</span> while (it.hasNext()) {<a name="line.7787"></a>
<span class="sourceLineNo">7788</span> final long iax = it.aLong;<a name="line.7788"></a>
<span class="sourceLineNo">7789</span> final long ibx = it.bLong;<a name="line.7789"></a>
<span class="sourceLineNo">7790</span> byte ox;<a name="line.7790"></a>
<span class="sourceLineNo">7791</span> ox = (byte) (ibx == 0 ? 0 : iax / ibx);<a name="line.7791"></a>
<span class="sourceLineNo">7792</span> oi8data[it.oIndex] = ox;<a name="line.7792"></a>
<span class="sourceLineNo">7793</span> }<a name="line.7793"></a>
<span class="sourceLineNo">7794</span> }<a name="line.7794"></a>
<span class="sourceLineNo">7795</span> break;<a name="line.7795"></a>
<span class="sourceLineNo">7796</span> case Dataset.INT16:<a name="line.7796"></a>
<span class="sourceLineNo">7797</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.7797"></a>
<span class="sourceLineNo">7798</span> if (it.isOutputDouble()) {<a name="line.7798"></a>
<span class="sourceLineNo">7799</span> while (it.hasNext()) {<a name="line.7799"></a>
<span class="sourceLineNo">7800</span> final double iax = it.aDouble;<a name="line.7800"></a>
<span class="sourceLineNo">7801</span> final double ibx = it.bDouble;<a name="line.7801"></a>
<span class="sourceLineNo">7802</span> short ox;<a name="line.7802"></a>
<span class="sourceLineNo">7803</span> ox = (short) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.7803"></a>
<span class="sourceLineNo">7804</span> oi16data[it.oIndex] = ox;<a name="line.7804"></a>
<span class="sourceLineNo">7805</span> }<a name="line.7805"></a>
<span class="sourceLineNo">7806</span> } else {<a name="line.7806"></a>
<span class="sourceLineNo">7807</span> while (it.hasNext()) {<a name="line.7807"></a>
<span class="sourceLineNo">7808</span> final long iax = it.aLong;<a name="line.7808"></a>
<span class="sourceLineNo">7809</span> final long ibx = it.bLong;<a name="line.7809"></a>
<span class="sourceLineNo">7810</span> short ox;<a name="line.7810"></a>
<span class="sourceLineNo">7811</span> ox = (short) (ibx == 0 ? 0 : iax / ibx);<a name="line.7811"></a>
<span class="sourceLineNo">7812</span> oi16data[it.oIndex] = ox;<a name="line.7812"></a>
<span class="sourceLineNo">7813</span> }<a name="line.7813"></a>
<span class="sourceLineNo">7814</span> }<a name="line.7814"></a>
<span class="sourceLineNo">7815</span> break;<a name="line.7815"></a>
<span class="sourceLineNo">7816</span> case Dataset.INT64:<a name="line.7816"></a>
<span class="sourceLineNo">7817</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.7817"></a>
<span class="sourceLineNo">7818</span> if (it.isOutputDouble()) {<a name="line.7818"></a>
<span class="sourceLineNo">7819</span> while (it.hasNext()) {<a name="line.7819"></a>
<span class="sourceLineNo">7820</span> final double iax = it.aDouble;<a name="line.7820"></a>
<span class="sourceLineNo">7821</span> final double ibx = it.bDouble;<a name="line.7821"></a>
<span class="sourceLineNo">7822</span> long ox;<a name="line.7822"></a>
<span class="sourceLineNo">7823</span> ox = toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.7823"></a>
<span class="sourceLineNo">7824</span> oi64data[it.oIndex] = ox;<a name="line.7824"></a>
<span class="sourceLineNo">7825</span> }<a name="line.7825"></a>
<span class="sourceLineNo">7826</span> } else {<a name="line.7826"></a>
<span class="sourceLineNo">7827</span> while (it.hasNext()) {<a name="line.7827"></a>
<span class="sourceLineNo">7828</span> final long iax = it.aLong;<a name="line.7828"></a>
<span class="sourceLineNo">7829</span> final long ibx = it.bLong;<a name="line.7829"></a>
<span class="sourceLineNo">7830</span> long ox;<a name="line.7830"></a>
<span class="sourceLineNo">7831</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.7831"></a>
<span class="sourceLineNo">7832</span> oi64data[it.oIndex] = ox;<a name="line.7832"></a>
<span class="sourceLineNo">7833</span> }<a name="line.7833"></a>
<span class="sourceLineNo">7834</span> }<a name="line.7834"></a>
<span class="sourceLineNo">7835</span> break;<a name="line.7835"></a>
<span class="sourceLineNo">7836</span> case Dataset.INT32:<a name="line.7836"></a>
<span class="sourceLineNo">7837</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.7837"></a>
<span class="sourceLineNo">7838</span> if (it.isOutputDouble()) {<a name="line.7838"></a>
<span class="sourceLineNo">7839</span> while (it.hasNext()) {<a name="line.7839"></a>
<span class="sourceLineNo">7840</span> final double iax = it.aDouble;<a name="line.7840"></a>
<span class="sourceLineNo">7841</span> final double ibx = it.bDouble;<a name="line.7841"></a>
<span class="sourceLineNo">7842</span> int ox;<a name="line.7842"></a>
<span class="sourceLineNo">7843</span> ox = (int) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.7843"></a>
<span class="sourceLineNo">7844</span> oi32data[it.oIndex] = ox;<a name="line.7844"></a>
<span class="sourceLineNo">7845</span> }<a name="line.7845"></a>
<span class="sourceLineNo">7846</span> } else {<a name="line.7846"></a>
<span class="sourceLineNo">7847</span> while (it.hasNext()) {<a name="line.7847"></a>
<span class="sourceLineNo">7848</span> final long iax = it.aLong;<a name="line.7848"></a>
<span class="sourceLineNo">7849</span> final long ibx = it.bLong;<a name="line.7849"></a>
<span class="sourceLineNo">7850</span> int ox;<a name="line.7850"></a>
<span class="sourceLineNo">7851</span> ox = (int) (ibx == 0 ? 0 : iax / ibx);<a name="line.7851"></a>
<span class="sourceLineNo">7852</span> oi32data[it.oIndex] = ox;<a name="line.7852"></a>
<span class="sourceLineNo">7853</span> }<a name="line.7853"></a>
<span class="sourceLineNo">7854</span> }<a name="line.7854"></a>
<span class="sourceLineNo">7855</span> break;<a name="line.7855"></a>
<span class="sourceLineNo">7856</span> case Dataset.ARRAYINT8:<a name="line.7856"></a>
<span class="sourceLineNo">7857</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.7857"></a>
<span class="sourceLineNo">7858</span> if (is == 1) {<a name="line.7858"></a>
<span class="sourceLineNo">7859</span> if (it.isOutputDouble()) {<a name="line.7859"></a>
<span class="sourceLineNo">7860</span> while (it.hasNext()) {<a name="line.7860"></a>
<span class="sourceLineNo">7861</span> final double iax = it.aDouble;<a name="line.7861"></a>
<span class="sourceLineNo">7862</span> final double ibx = it.bDouble;<a name="line.7862"></a>
<span class="sourceLineNo">7863</span> byte ox;<a name="line.7863"></a>
<span class="sourceLineNo">7864</span> ox = (byte) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.7864"></a>
<span class="sourceLineNo">7865</span> oai8data[it.oIndex] = ox;<a name="line.7865"></a>
<span class="sourceLineNo">7866</span> }<a name="line.7866"></a>
<span class="sourceLineNo">7867</span> } else {<a name="line.7867"></a>
<span class="sourceLineNo">7868</span> while (it.hasNext()) {<a name="line.7868"></a>
<span class="sourceLineNo">7869</span> final long iax = it.aLong;<a name="line.7869"></a>
<span class="sourceLineNo">7870</span> final long ibx = it.bLong;<a name="line.7870"></a>
<span class="sourceLineNo">7871</span> byte ox;<a name="line.7871"></a>
<span class="sourceLineNo">7872</span> ox = (byte) (ibx == 0 ? 0 : iax / ibx);<a name="line.7872"></a>
<span class="sourceLineNo">7873</span> oai8data[it.oIndex] = ox;<a name="line.7873"></a>
<span class="sourceLineNo">7874</span> }<a name="line.7874"></a>
<span class="sourceLineNo">7875</span> }<a name="line.7875"></a>
<span class="sourceLineNo">7876</span> } else if (as &lt; bs) {<a name="line.7876"></a>
<span class="sourceLineNo">7877</span> if (it.isOutputDouble()) {<a name="line.7877"></a>
<span class="sourceLineNo">7878</span> while (it.hasNext()) {<a name="line.7878"></a>
<span class="sourceLineNo">7879</span> final double iax = it.aDouble;<a name="line.7879"></a>
<span class="sourceLineNo">7880</span> double ibx = it.bDouble;<a name="line.7880"></a>
<span class="sourceLineNo">7881</span> byte ox;<a name="line.7881"></a>
<span class="sourceLineNo">7882</span> ox = (byte) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.7882"></a>
<span class="sourceLineNo">7883</span> oai8data[it.oIndex] = ox;<a name="line.7883"></a>
<span class="sourceLineNo">7884</span> for (int j = 1; j &lt; is; j++) {<a name="line.7884"></a>
<span class="sourceLineNo">7885</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.7885"></a>
<span class="sourceLineNo">7886</span> ox = (byte) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.7886"></a>
<span class="sourceLineNo">7887</span> oai8data[it.oIndex + j] = ox;<a name="line.7887"></a>
<span class="sourceLineNo">7888</span> }<a name="line.7888"></a>
<span class="sourceLineNo">7889</span> }<a name="line.7889"></a>
<span class="sourceLineNo">7890</span> } else {<a name="line.7890"></a>
<span class="sourceLineNo">7891</span> while (it.hasNext()) {<a name="line.7891"></a>
<span class="sourceLineNo">7892</span> final long iax = it.aLong;<a name="line.7892"></a>
<span class="sourceLineNo">7893</span> long ibx = it.bLong;<a name="line.7893"></a>
<span class="sourceLineNo">7894</span> byte ox;<a name="line.7894"></a>
<span class="sourceLineNo">7895</span> ox = (byte) (ibx == 0 ? 0 : iax / ibx);<a name="line.7895"></a>
<span class="sourceLineNo">7896</span> oai8data[it.oIndex] = ox;<a name="line.7896"></a>
<span class="sourceLineNo">7897</span> for (int j = 1; j &lt; is; j++) {<a name="line.7897"></a>
<span class="sourceLineNo">7898</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.7898"></a>
<span class="sourceLineNo">7899</span> ox = (byte) (ibx == 0 ? 0 : iax / ibx);<a name="line.7899"></a>
<span class="sourceLineNo">7900</span> oai8data[it.oIndex + j] = ox;<a name="line.7900"></a>
<span class="sourceLineNo">7901</span> }<a name="line.7901"></a>
<span class="sourceLineNo">7902</span> }<a name="line.7902"></a>
<span class="sourceLineNo">7903</span> }<a name="line.7903"></a>
<span class="sourceLineNo">7904</span> } else if (as &gt; bs) {<a name="line.7904"></a>
<span class="sourceLineNo">7905</span> if (it.isOutputDouble()) {<a name="line.7905"></a>
<span class="sourceLineNo">7906</span> while (it.hasNext()) {<a name="line.7906"></a>
<span class="sourceLineNo">7907</span> double iax = it.aDouble;<a name="line.7907"></a>
<span class="sourceLineNo">7908</span> final double ibx = it.bDouble;<a name="line.7908"></a>
<span class="sourceLineNo">7909</span> byte ox;<a name="line.7909"></a>
<span class="sourceLineNo">7910</span> ox = (byte) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.7910"></a>
<span class="sourceLineNo">7911</span> oai8data[it.oIndex] = ox;<a name="line.7911"></a>
<span class="sourceLineNo">7912</span> for (int j = 1; j &lt; is; j++) {<a name="line.7912"></a>
<span class="sourceLineNo">7913</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.7913"></a>
<span class="sourceLineNo">7914</span> ox = (byte) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.7914"></a>
<span class="sourceLineNo">7915</span> oai8data[it.oIndex + j] = ox;<a name="line.7915"></a>
<span class="sourceLineNo">7916</span> }<a name="line.7916"></a>
<span class="sourceLineNo">7917</span> }<a name="line.7917"></a>
<span class="sourceLineNo">7918</span> } else {<a name="line.7918"></a>
<span class="sourceLineNo">7919</span> while (it.hasNext()) {<a name="line.7919"></a>
<span class="sourceLineNo">7920</span> long iax = it.aLong;<a name="line.7920"></a>
<span class="sourceLineNo">7921</span> final long ibx = it.bLong;<a name="line.7921"></a>
<span class="sourceLineNo">7922</span> byte ox;<a name="line.7922"></a>
<span class="sourceLineNo">7923</span> ox = (byte) (ibx == 0 ? 0 : iax / ibx);<a name="line.7923"></a>
<span class="sourceLineNo">7924</span> oai8data[it.oIndex] = ox;<a name="line.7924"></a>
<span class="sourceLineNo">7925</span> for (int j = 1; j &lt; is; j++) {<a name="line.7925"></a>
<span class="sourceLineNo">7926</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.7926"></a>
<span class="sourceLineNo">7927</span> ox = (byte) (ibx == 0 ? 0 : iax / ibx);<a name="line.7927"></a>
<span class="sourceLineNo">7928</span> oai8data[it.oIndex + j] = ox;<a name="line.7928"></a>
<span class="sourceLineNo">7929</span> }<a name="line.7929"></a>
<span class="sourceLineNo">7930</span> }<a name="line.7930"></a>
<span class="sourceLineNo">7931</span> }<a name="line.7931"></a>
<span class="sourceLineNo">7932</span> } else if (as == 1) {<a name="line.7932"></a>
<span class="sourceLineNo">7933</span> if (it.isOutputDouble()) {<a name="line.7933"></a>
<span class="sourceLineNo">7934</span> while (it.hasNext()) {<a name="line.7934"></a>
<span class="sourceLineNo">7935</span> final double iax = it.aDouble;<a name="line.7935"></a>
<span class="sourceLineNo">7936</span> final double ibx = it.bDouble;<a name="line.7936"></a>
<span class="sourceLineNo">7937</span> byte ox;<a name="line.7937"></a>
<span class="sourceLineNo">7938</span> ox = (byte) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.7938"></a>
<span class="sourceLineNo">7939</span> for (int j = 0; j &lt; is; j++) {<a name="line.7939"></a>
<span class="sourceLineNo">7940</span> oai8data[it.oIndex + j] = ox;<a name="line.7940"></a>
<span class="sourceLineNo">7941</span> }<a name="line.7941"></a>
<span class="sourceLineNo">7942</span> }<a name="line.7942"></a>
<span class="sourceLineNo">7943</span> } else {<a name="line.7943"></a>
<span class="sourceLineNo">7944</span> while (it.hasNext()) {<a name="line.7944"></a>
<span class="sourceLineNo">7945</span> final long iax = it.aLong;<a name="line.7945"></a>
<span class="sourceLineNo">7946</span> final long ibx = it.bLong;<a name="line.7946"></a>
<span class="sourceLineNo">7947</span> byte ox;<a name="line.7947"></a>
<span class="sourceLineNo">7948</span> ox = (byte) (ibx == 0 ? 0 : iax / ibx);<a name="line.7948"></a>
<span class="sourceLineNo">7949</span> for (int j = 0; j &lt; is; j++) {<a name="line.7949"></a>
<span class="sourceLineNo">7950</span> oai8data[it.oIndex + j] = ox;<a name="line.7950"></a>
<span class="sourceLineNo">7951</span> }<a name="line.7951"></a>
<span class="sourceLineNo">7952</span> }<a name="line.7952"></a>
<span class="sourceLineNo">7953</span> }<a name="line.7953"></a>
<span class="sourceLineNo">7954</span> } else {<a name="line.7954"></a>
<span class="sourceLineNo">7955</span> if (it.isOutputDouble()) {<a name="line.7955"></a>
<span class="sourceLineNo">7956</span> while (it.hasNext()) {<a name="line.7956"></a>
<span class="sourceLineNo">7957</span> double iax = it.aDouble;<a name="line.7957"></a>
<span class="sourceLineNo">7958</span> double ibx = it.bDouble;<a name="line.7958"></a>
<span class="sourceLineNo">7959</span> byte ox;<a name="line.7959"></a>
<span class="sourceLineNo">7960</span> ox = (byte) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.7960"></a>
<span class="sourceLineNo">7961</span> oai8data[it.oIndex] = ox;<a name="line.7961"></a>
<span class="sourceLineNo">7962</span> for (int j = 1; j &lt; is; j++) {<a name="line.7962"></a>
<span class="sourceLineNo">7963</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.7963"></a>
<span class="sourceLineNo">7964</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.7964"></a>
<span class="sourceLineNo">7965</span> ox = (byte) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.7965"></a>
<span class="sourceLineNo">7966</span> oai8data[it.oIndex + j] = ox;<a name="line.7966"></a>
<span class="sourceLineNo">7967</span> }<a name="line.7967"></a>
<span class="sourceLineNo">7968</span> }<a name="line.7968"></a>
<span class="sourceLineNo">7969</span> } else {<a name="line.7969"></a>
<span class="sourceLineNo">7970</span> while (it.hasNext()) {<a name="line.7970"></a>
<span class="sourceLineNo">7971</span> long iax = it.aLong;<a name="line.7971"></a>
<span class="sourceLineNo">7972</span> long ibx = it.bLong;<a name="line.7972"></a>
<span class="sourceLineNo">7973</span> byte ox;<a name="line.7973"></a>
<span class="sourceLineNo">7974</span> ox = (byte) (ibx == 0 ? 0 : iax / ibx);<a name="line.7974"></a>
<span class="sourceLineNo">7975</span> oai8data[it.oIndex] = ox;<a name="line.7975"></a>
<span class="sourceLineNo">7976</span> for (int j = 1; j &lt; is; j++) {<a name="line.7976"></a>
<span class="sourceLineNo">7977</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.7977"></a>
<span class="sourceLineNo">7978</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.7978"></a>
<span class="sourceLineNo">7979</span> ox = (byte) (ibx == 0 ? 0 : iax / ibx);<a name="line.7979"></a>
<span class="sourceLineNo">7980</span> oai8data[it.oIndex + j] = ox;<a name="line.7980"></a>
<span class="sourceLineNo">7981</span> }<a name="line.7981"></a>
<span class="sourceLineNo">7982</span> }<a name="line.7982"></a>
<span class="sourceLineNo">7983</span> }<a name="line.7983"></a>
<span class="sourceLineNo">7984</span> }<a name="line.7984"></a>
<span class="sourceLineNo">7985</span> break;<a name="line.7985"></a>
<span class="sourceLineNo">7986</span> case Dataset.ARRAYINT16:<a name="line.7986"></a>
<span class="sourceLineNo">7987</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.7987"></a>
<span class="sourceLineNo">7988</span> if (is == 1) {<a name="line.7988"></a>
<span class="sourceLineNo">7989</span> if (it.isOutputDouble()) {<a name="line.7989"></a>
<span class="sourceLineNo">7990</span> while (it.hasNext()) {<a name="line.7990"></a>
<span class="sourceLineNo">7991</span> final double iax = it.aDouble;<a name="line.7991"></a>
<span class="sourceLineNo">7992</span> final double ibx = it.bDouble;<a name="line.7992"></a>
<span class="sourceLineNo">7993</span> short ox;<a name="line.7993"></a>
<span class="sourceLineNo">7994</span> ox = (short) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.7994"></a>
<span class="sourceLineNo">7995</span> oai16data[it.oIndex] = ox;<a name="line.7995"></a>
<span class="sourceLineNo">7996</span> }<a name="line.7996"></a>
<span class="sourceLineNo">7997</span> } else {<a name="line.7997"></a>
<span class="sourceLineNo">7998</span> while (it.hasNext()) {<a name="line.7998"></a>
<span class="sourceLineNo">7999</span> final long iax = it.aLong;<a name="line.7999"></a>
<span class="sourceLineNo">8000</span> final long ibx = it.bLong;<a name="line.8000"></a>
<span class="sourceLineNo">8001</span> short ox;<a name="line.8001"></a>
<span class="sourceLineNo">8002</span> ox = (short) (ibx == 0 ? 0 : iax / ibx);<a name="line.8002"></a>
<span class="sourceLineNo">8003</span> oai16data[it.oIndex] = ox;<a name="line.8003"></a>
<span class="sourceLineNo">8004</span> }<a name="line.8004"></a>
<span class="sourceLineNo">8005</span> }<a name="line.8005"></a>
<span class="sourceLineNo">8006</span> } else if (as &lt; bs) {<a name="line.8006"></a>
<span class="sourceLineNo">8007</span> if (it.isOutputDouble()) {<a name="line.8007"></a>
<span class="sourceLineNo">8008</span> while (it.hasNext()) {<a name="line.8008"></a>
<span class="sourceLineNo">8009</span> final double iax = it.aDouble;<a name="line.8009"></a>
<span class="sourceLineNo">8010</span> double ibx = it.bDouble;<a name="line.8010"></a>
<span class="sourceLineNo">8011</span> short ox;<a name="line.8011"></a>
<span class="sourceLineNo">8012</span> ox = (short) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.8012"></a>
<span class="sourceLineNo">8013</span> oai16data[it.oIndex] = ox;<a name="line.8013"></a>
<span class="sourceLineNo">8014</span> for (int j = 1; j &lt; is; j++) {<a name="line.8014"></a>
<span class="sourceLineNo">8015</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.8015"></a>
<span class="sourceLineNo">8016</span> ox = (short) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.8016"></a>
<span class="sourceLineNo">8017</span> oai16data[it.oIndex + j] = ox;<a name="line.8017"></a>
<span class="sourceLineNo">8018</span> }<a name="line.8018"></a>
<span class="sourceLineNo">8019</span> }<a name="line.8019"></a>
<span class="sourceLineNo">8020</span> } else {<a name="line.8020"></a>
<span class="sourceLineNo">8021</span> while (it.hasNext()) {<a name="line.8021"></a>
<span class="sourceLineNo">8022</span> final long iax = it.aLong;<a name="line.8022"></a>
<span class="sourceLineNo">8023</span> long ibx = it.bLong;<a name="line.8023"></a>
<span class="sourceLineNo">8024</span> short ox;<a name="line.8024"></a>
<span class="sourceLineNo">8025</span> ox = (short) (ibx == 0 ? 0 : iax / ibx);<a name="line.8025"></a>
<span class="sourceLineNo">8026</span> oai16data[it.oIndex] = ox;<a name="line.8026"></a>
<span class="sourceLineNo">8027</span> for (int j = 1; j &lt; is; j++) {<a name="line.8027"></a>
<span class="sourceLineNo">8028</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.8028"></a>
<span class="sourceLineNo">8029</span> ox = (short) (ibx == 0 ? 0 : iax / ibx);<a name="line.8029"></a>
<span class="sourceLineNo">8030</span> oai16data[it.oIndex + j] = ox;<a name="line.8030"></a>
<span class="sourceLineNo">8031</span> }<a name="line.8031"></a>
<span class="sourceLineNo">8032</span> }<a name="line.8032"></a>
<span class="sourceLineNo">8033</span> }<a name="line.8033"></a>
<span class="sourceLineNo">8034</span> } else if (as &gt; bs) {<a name="line.8034"></a>
<span class="sourceLineNo">8035</span> if (it.isOutputDouble()) {<a name="line.8035"></a>
<span class="sourceLineNo">8036</span> while (it.hasNext()) {<a name="line.8036"></a>
<span class="sourceLineNo">8037</span> double iax = it.aDouble;<a name="line.8037"></a>
<span class="sourceLineNo">8038</span> final double ibx = it.bDouble;<a name="line.8038"></a>
<span class="sourceLineNo">8039</span> short ox;<a name="line.8039"></a>
<span class="sourceLineNo">8040</span> ox = (short) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.8040"></a>
<span class="sourceLineNo">8041</span> oai16data[it.oIndex] = ox;<a name="line.8041"></a>
<span class="sourceLineNo">8042</span> for (int j = 1; j &lt; is; j++) {<a name="line.8042"></a>
<span class="sourceLineNo">8043</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.8043"></a>
<span class="sourceLineNo">8044</span> ox = (short) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.8044"></a>
<span class="sourceLineNo">8045</span> oai16data[it.oIndex + j] = ox;<a name="line.8045"></a>
<span class="sourceLineNo">8046</span> }<a name="line.8046"></a>
<span class="sourceLineNo">8047</span> }<a name="line.8047"></a>
<span class="sourceLineNo">8048</span> } else {<a name="line.8048"></a>
<span class="sourceLineNo">8049</span> while (it.hasNext()) {<a name="line.8049"></a>
<span class="sourceLineNo">8050</span> long iax = it.aLong;<a name="line.8050"></a>
<span class="sourceLineNo">8051</span> final long ibx = it.bLong;<a name="line.8051"></a>
<span class="sourceLineNo">8052</span> short ox;<a name="line.8052"></a>
<span class="sourceLineNo">8053</span> ox = (short) (ibx == 0 ? 0 : iax / ibx);<a name="line.8053"></a>
<span class="sourceLineNo">8054</span> oai16data[it.oIndex] = ox;<a name="line.8054"></a>
<span class="sourceLineNo">8055</span> for (int j = 1; j &lt; is; j++) {<a name="line.8055"></a>
<span class="sourceLineNo">8056</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.8056"></a>
<span class="sourceLineNo">8057</span> ox = (short) (ibx == 0 ? 0 : iax / ibx);<a name="line.8057"></a>
<span class="sourceLineNo">8058</span> oai16data[it.oIndex + j] = ox;<a name="line.8058"></a>
<span class="sourceLineNo">8059</span> }<a name="line.8059"></a>
<span class="sourceLineNo">8060</span> }<a name="line.8060"></a>
<span class="sourceLineNo">8061</span> }<a name="line.8061"></a>
<span class="sourceLineNo">8062</span> } else if (as == 1) {<a name="line.8062"></a>
<span class="sourceLineNo">8063</span> if (it.isOutputDouble()) {<a name="line.8063"></a>
<span class="sourceLineNo">8064</span> while (it.hasNext()) {<a name="line.8064"></a>
<span class="sourceLineNo">8065</span> final double iax = it.aDouble;<a name="line.8065"></a>
<span class="sourceLineNo">8066</span> final double ibx = it.bDouble;<a name="line.8066"></a>
<span class="sourceLineNo">8067</span> short ox;<a name="line.8067"></a>
<span class="sourceLineNo">8068</span> ox = (short) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.8068"></a>
<span class="sourceLineNo">8069</span> for (int j = 0; j &lt; is; j++) {<a name="line.8069"></a>
<span class="sourceLineNo">8070</span> oai16data[it.oIndex + j] = ox;<a name="line.8070"></a>
<span class="sourceLineNo">8071</span> }<a name="line.8071"></a>
<span class="sourceLineNo">8072</span> }<a name="line.8072"></a>
<span class="sourceLineNo">8073</span> } else {<a name="line.8073"></a>
<span class="sourceLineNo">8074</span> while (it.hasNext()) {<a name="line.8074"></a>
<span class="sourceLineNo">8075</span> final long iax = it.aLong;<a name="line.8075"></a>
<span class="sourceLineNo">8076</span> final long ibx = it.bLong;<a name="line.8076"></a>
<span class="sourceLineNo">8077</span> short ox;<a name="line.8077"></a>
<span class="sourceLineNo">8078</span> ox = (short) (ibx == 0 ? 0 : iax / ibx);<a name="line.8078"></a>
<span class="sourceLineNo">8079</span> for (int j = 0; j &lt; is; j++) {<a name="line.8079"></a>
<span class="sourceLineNo">8080</span> oai16data[it.oIndex + j] = ox;<a name="line.8080"></a>
<span class="sourceLineNo">8081</span> }<a name="line.8081"></a>
<span class="sourceLineNo">8082</span> }<a name="line.8082"></a>
<span class="sourceLineNo">8083</span> }<a name="line.8083"></a>
<span class="sourceLineNo">8084</span> } else {<a name="line.8084"></a>
<span class="sourceLineNo">8085</span> if (it.isOutputDouble()) {<a name="line.8085"></a>
<span class="sourceLineNo">8086</span> while (it.hasNext()) {<a name="line.8086"></a>
<span class="sourceLineNo">8087</span> double iax = it.aDouble;<a name="line.8087"></a>
<span class="sourceLineNo">8088</span> double ibx = it.bDouble;<a name="line.8088"></a>
<span class="sourceLineNo">8089</span> short ox;<a name="line.8089"></a>
<span class="sourceLineNo">8090</span> ox = (short) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.8090"></a>
<span class="sourceLineNo">8091</span> oai16data[it.oIndex] = ox;<a name="line.8091"></a>
<span class="sourceLineNo">8092</span> for (int j = 1; j &lt; is; j++) {<a name="line.8092"></a>
<span class="sourceLineNo">8093</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.8093"></a>
<span class="sourceLineNo">8094</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.8094"></a>
<span class="sourceLineNo">8095</span> ox = (short) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.8095"></a>
<span class="sourceLineNo">8096</span> oai16data[it.oIndex + j] = ox;<a name="line.8096"></a>
<span class="sourceLineNo">8097</span> }<a name="line.8097"></a>
<span class="sourceLineNo">8098</span> }<a name="line.8098"></a>
<span class="sourceLineNo">8099</span> } else {<a name="line.8099"></a>
<span class="sourceLineNo">8100</span> while (it.hasNext()) {<a name="line.8100"></a>
<span class="sourceLineNo">8101</span> long iax = it.aLong;<a name="line.8101"></a>
<span class="sourceLineNo">8102</span> long ibx = it.bLong;<a name="line.8102"></a>
<span class="sourceLineNo">8103</span> short ox;<a name="line.8103"></a>
<span class="sourceLineNo">8104</span> ox = (short) (ibx == 0 ? 0 : iax / ibx);<a name="line.8104"></a>
<span class="sourceLineNo">8105</span> oai16data[it.oIndex] = ox;<a name="line.8105"></a>
<span class="sourceLineNo">8106</span> for (int j = 1; j &lt; is; j++) {<a name="line.8106"></a>
<span class="sourceLineNo">8107</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.8107"></a>
<span class="sourceLineNo">8108</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.8108"></a>
<span class="sourceLineNo">8109</span> ox = (short) (ibx == 0 ? 0 : iax / ibx);<a name="line.8109"></a>
<span class="sourceLineNo">8110</span> oai16data[it.oIndex + j] = ox;<a name="line.8110"></a>
<span class="sourceLineNo">8111</span> }<a name="line.8111"></a>
<span class="sourceLineNo">8112</span> }<a name="line.8112"></a>
<span class="sourceLineNo">8113</span> }<a name="line.8113"></a>
<span class="sourceLineNo">8114</span> }<a name="line.8114"></a>
<span class="sourceLineNo">8115</span> break;<a name="line.8115"></a>
<span class="sourceLineNo">8116</span> case Dataset.ARRAYINT64:<a name="line.8116"></a>
<span class="sourceLineNo">8117</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.8117"></a>
<span class="sourceLineNo">8118</span> if (is == 1) {<a name="line.8118"></a>
<span class="sourceLineNo">8119</span> if (it.isOutputDouble()) {<a name="line.8119"></a>
<span class="sourceLineNo">8120</span> while (it.hasNext()) {<a name="line.8120"></a>
<span class="sourceLineNo">8121</span> final double iax = it.aDouble;<a name="line.8121"></a>
<span class="sourceLineNo">8122</span> final double ibx = it.bDouble;<a name="line.8122"></a>
<span class="sourceLineNo">8123</span> long ox;<a name="line.8123"></a>
<span class="sourceLineNo">8124</span> ox = toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.8124"></a>
<span class="sourceLineNo">8125</span> oai64data[it.oIndex] = ox;<a name="line.8125"></a>
<span class="sourceLineNo">8126</span> }<a name="line.8126"></a>
<span class="sourceLineNo">8127</span> } else {<a name="line.8127"></a>
<span class="sourceLineNo">8128</span> while (it.hasNext()) {<a name="line.8128"></a>
<span class="sourceLineNo">8129</span> final long iax = it.aLong;<a name="line.8129"></a>
<span class="sourceLineNo">8130</span> final long ibx = it.bLong;<a name="line.8130"></a>
<span class="sourceLineNo">8131</span> long ox;<a name="line.8131"></a>
<span class="sourceLineNo">8132</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.8132"></a>
<span class="sourceLineNo">8133</span> oai64data[it.oIndex] = ox;<a name="line.8133"></a>
<span class="sourceLineNo">8134</span> }<a name="line.8134"></a>
<span class="sourceLineNo">8135</span> }<a name="line.8135"></a>
<span class="sourceLineNo">8136</span> } else if (as &lt; bs) {<a name="line.8136"></a>
<span class="sourceLineNo">8137</span> if (it.isOutputDouble()) {<a name="line.8137"></a>
<span class="sourceLineNo">8138</span> while (it.hasNext()) {<a name="line.8138"></a>
<span class="sourceLineNo">8139</span> final double iax = it.aDouble;<a name="line.8139"></a>
<span class="sourceLineNo">8140</span> double ibx = it.bDouble;<a name="line.8140"></a>
<span class="sourceLineNo">8141</span> long ox;<a name="line.8141"></a>
<span class="sourceLineNo">8142</span> ox = toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.8142"></a>
<span class="sourceLineNo">8143</span> oai64data[it.oIndex] = ox;<a name="line.8143"></a>
<span class="sourceLineNo">8144</span> for (int j = 1; j &lt; is; j++) {<a name="line.8144"></a>
<span class="sourceLineNo">8145</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.8145"></a>
<span class="sourceLineNo">8146</span> ox = toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.8146"></a>
<span class="sourceLineNo">8147</span> oai64data[it.oIndex + j] = ox;<a name="line.8147"></a>
<span class="sourceLineNo">8148</span> }<a name="line.8148"></a>
<span class="sourceLineNo">8149</span> }<a name="line.8149"></a>
<span class="sourceLineNo">8150</span> } else {<a name="line.8150"></a>
<span class="sourceLineNo">8151</span> while (it.hasNext()) {<a name="line.8151"></a>
<span class="sourceLineNo">8152</span> final long iax = it.aLong;<a name="line.8152"></a>
<span class="sourceLineNo">8153</span> long ibx = it.bLong;<a name="line.8153"></a>
<span class="sourceLineNo">8154</span> long ox;<a name="line.8154"></a>
<span class="sourceLineNo">8155</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.8155"></a>
<span class="sourceLineNo">8156</span> oai64data[it.oIndex] = ox;<a name="line.8156"></a>
<span class="sourceLineNo">8157</span> for (int j = 1; j &lt; is; j++) {<a name="line.8157"></a>
<span class="sourceLineNo">8158</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.8158"></a>
<span class="sourceLineNo">8159</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.8159"></a>
<span class="sourceLineNo">8160</span> oai64data[it.oIndex + j] = ox;<a name="line.8160"></a>
<span class="sourceLineNo">8161</span> }<a name="line.8161"></a>
<span class="sourceLineNo">8162</span> }<a name="line.8162"></a>
<span class="sourceLineNo">8163</span> }<a name="line.8163"></a>
<span class="sourceLineNo">8164</span> } else if (as &gt; bs) {<a name="line.8164"></a>
<span class="sourceLineNo">8165</span> if (it.isOutputDouble()) {<a name="line.8165"></a>
<span class="sourceLineNo">8166</span> while (it.hasNext()) {<a name="line.8166"></a>
<span class="sourceLineNo">8167</span> double iax = it.aDouble;<a name="line.8167"></a>
<span class="sourceLineNo">8168</span> final double ibx = it.bDouble;<a name="line.8168"></a>
<span class="sourceLineNo">8169</span> long ox;<a name="line.8169"></a>
<span class="sourceLineNo">8170</span> ox = toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.8170"></a>
<span class="sourceLineNo">8171</span> oai64data[it.oIndex] = ox;<a name="line.8171"></a>
<span class="sourceLineNo">8172</span> for (int j = 1; j &lt; is; j++) {<a name="line.8172"></a>
<span class="sourceLineNo">8173</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.8173"></a>
<span class="sourceLineNo">8174</span> ox = toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.8174"></a>
<span class="sourceLineNo">8175</span> oai64data[it.oIndex + j] = ox;<a name="line.8175"></a>
<span class="sourceLineNo">8176</span> }<a name="line.8176"></a>
<span class="sourceLineNo">8177</span> }<a name="line.8177"></a>
<span class="sourceLineNo">8178</span> } else {<a name="line.8178"></a>
<span class="sourceLineNo">8179</span> while (it.hasNext()) {<a name="line.8179"></a>
<span class="sourceLineNo">8180</span> long iax = it.aLong;<a name="line.8180"></a>
<span class="sourceLineNo">8181</span> final long ibx = it.bLong;<a name="line.8181"></a>
<span class="sourceLineNo">8182</span> long ox;<a name="line.8182"></a>
<span class="sourceLineNo">8183</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.8183"></a>
<span class="sourceLineNo">8184</span> oai64data[it.oIndex] = ox;<a name="line.8184"></a>
<span class="sourceLineNo">8185</span> for (int j = 1; j &lt; is; j++) {<a name="line.8185"></a>
<span class="sourceLineNo">8186</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.8186"></a>
<span class="sourceLineNo">8187</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.8187"></a>
<span class="sourceLineNo">8188</span> oai64data[it.oIndex + j] = ox;<a name="line.8188"></a>
<span class="sourceLineNo">8189</span> }<a name="line.8189"></a>
<span class="sourceLineNo">8190</span> }<a name="line.8190"></a>
<span class="sourceLineNo">8191</span> }<a name="line.8191"></a>
<span class="sourceLineNo">8192</span> } else if (as == 1) {<a name="line.8192"></a>
<span class="sourceLineNo">8193</span> if (it.isOutputDouble()) {<a name="line.8193"></a>
<span class="sourceLineNo">8194</span> while (it.hasNext()) {<a name="line.8194"></a>
<span class="sourceLineNo">8195</span> final double iax = it.aDouble;<a name="line.8195"></a>
<span class="sourceLineNo">8196</span> final double ibx = it.bDouble;<a name="line.8196"></a>
<span class="sourceLineNo">8197</span> long ox;<a name="line.8197"></a>
<span class="sourceLineNo">8198</span> ox = toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.8198"></a>
<span class="sourceLineNo">8199</span> for (int j = 0; j &lt; is; j++) {<a name="line.8199"></a>
<span class="sourceLineNo">8200</span> oai64data[it.oIndex + j] = ox;<a name="line.8200"></a>
<span class="sourceLineNo">8201</span> }<a name="line.8201"></a>
<span class="sourceLineNo">8202</span> }<a name="line.8202"></a>
<span class="sourceLineNo">8203</span> } else {<a name="line.8203"></a>
<span class="sourceLineNo">8204</span> while (it.hasNext()) {<a name="line.8204"></a>
<span class="sourceLineNo">8205</span> final long iax = it.aLong;<a name="line.8205"></a>
<span class="sourceLineNo">8206</span> final long ibx = it.bLong;<a name="line.8206"></a>
<span class="sourceLineNo">8207</span> long ox;<a name="line.8207"></a>
<span class="sourceLineNo">8208</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.8208"></a>
<span class="sourceLineNo">8209</span> for (int j = 0; j &lt; is; j++) {<a name="line.8209"></a>
<span class="sourceLineNo">8210</span> oai64data[it.oIndex + j] = ox;<a name="line.8210"></a>
<span class="sourceLineNo">8211</span> }<a name="line.8211"></a>
<span class="sourceLineNo">8212</span> }<a name="line.8212"></a>
<span class="sourceLineNo">8213</span> }<a name="line.8213"></a>
<span class="sourceLineNo">8214</span> } else {<a name="line.8214"></a>
<span class="sourceLineNo">8215</span> if (it.isOutputDouble()) {<a name="line.8215"></a>
<span class="sourceLineNo">8216</span> while (it.hasNext()) {<a name="line.8216"></a>
<span class="sourceLineNo">8217</span> double iax = it.aDouble;<a name="line.8217"></a>
<span class="sourceLineNo">8218</span> double ibx = it.bDouble;<a name="line.8218"></a>
<span class="sourceLineNo">8219</span> long ox;<a name="line.8219"></a>
<span class="sourceLineNo">8220</span> ox = toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.8220"></a>
<span class="sourceLineNo">8221</span> oai64data[it.oIndex] = ox;<a name="line.8221"></a>
<span class="sourceLineNo">8222</span> for (int j = 1; j &lt; is; j++) {<a name="line.8222"></a>
<span class="sourceLineNo">8223</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.8223"></a>
<span class="sourceLineNo">8224</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.8224"></a>
<span class="sourceLineNo">8225</span> ox = toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.8225"></a>
<span class="sourceLineNo">8226</span> oai64data[it.oIndex + j] = ox;<a name="line.8226"></a>
<span class="sourceLineNo">8227</span> }<a name="line.8227"></a>
<span class="sourceLineNo">8228</span> }<a name="line.8228"></a>
<span class="sourceLineNo">8229</span> } else {<a name="line.8229"></a>
<span class="sourceLineNo">8230</span> while (it.hasNext()) {<a name="line.8230"></a>
<span class="sourceLineNo">8231</span> long iax = it.aLong;<a name="line.8231"></a>
<span class="sourceLineNo">8232</span> long ibx = it.bLong;<a name="line.8232"></a>
<span class="sourceLineNo">8233</span> long ox;<a name="line.8233"></a>
<span class="sourceLineNo">8234</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.8234"></a>
<span class="sourceLineNo">8235</span> oai64data[it.oIndex] = ox;<a name="line.8235"></a>
<span class="sourceLineNo">8236</span> for (int j = 1; j &lt; is; j++) {<a name="line.8236"></a>
<span class="sourceLineNo">8237</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.8237"></a>
<span class="sourceLineNo">8238</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.8238"></a>
<span class="sourceLineNo">8239</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.8239"></a>
<span class="sourceLineNo">8240</span> oai64data[it.oIndex + j] = ox;<a name="line.8240"></a>
<span class="sourceLineNo">8241</span> }<a name="line.8241"></a>
<span class="sourceLineNo">8242</span> }<a name="line.8242"></a>
<span class="sourceLineNo">8243</span> }<a name="line.8243"></a>
<span class="sourceLineNo">8244</span> }<a name="line.8244"></a>
<span class="sourceLineNo">8245</span> break;<a name="line.8245"></a>
<span class="sourceLineNo">8246</span> case Dataset.ARRAYINT32:<a name="line.8246"></a>
<span class="sourceLineNo">8247</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.8247"></a>
<span class="sourceLineNo">8248</span> if (is == 1) {<a name="line.8248"></a>
<span class="sourceLineNo">8249</span> if (it.isOutputDouble()) {<a name="line.8249"></a>
<span class="sourceLineNo">8250</span> while (it.hasNext()) {<a name="line.8250"></a>
<span class="sourceLineNo">8251</span> final double iax = it.aDouble;<a name="line.8251"></a>
<span class="sourceLineNo">8252</span> final double ibx = it.bDouble;<a name="line.8252"></a>
<span class="sourceLineNo">8253</span> int ox;<a name="line.8253"></a>
<span class="sourceLineNo">8254</span> ox = (int) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.8254"></a>
<span class="sourceLineNo">8255</span> oai32data[it.oIndex] = ox;<a name="line.8255"></a>
<span class="sourceLineNo">8256</span> }<a name="line.8256"></a>
<span class="sourceLineNo">8257</span> } else {<a name="line.8257"></a>
<span class="sourceLineNo">8258</span> while (it.hasNext()) {<a name="line.8258"></a>
<span class="sourceLineNo">8259</span> final long iax = it.aLong;<a name="line.8259"></a>
<span class="sourceLineNo">8260</span> final long ibx = it.bLong;<a name="line.8260"></a>
<span class="sourceLineNo">8261</span> int ox;<a name="line.8261"></a>
<span class="sourceLineNo">8262</span> ox = (int) (ibx == 0 ? 0 : iax / ibx);<a name="line.8262"></a>
<span class="sourceLineNo">8263</span> oai32data[it.oIndex] = ox;<a name="line.8263"></a>
<span class="sourceLineNo">8264</span> }<a name="line.8264"></a>
<span class="sourceLineNo">8265</span> }<a name="line.8265"></a>
<span class="sourceLineNo">8266</span> } else if (as &lt; bs) {<a name="line.8266"></a>
<span class="sourceLineNo">8267</span> if (it.isOutputDouble()) {<a name="line.8267"></a>
<span class="sourceLineNo">8268</span> while (it.hasNext()) {<a name="line.8268"></a>
<span class="sourceLineNo">8269</span> final double iax = it.aDouble;<a name="line.8269"></a>
<span class="sourceLineNo">8270</span> double ibx = it.bDouble;<a name="line.8270"></a>
<span class="sourceLineNo">8271</span> int ox;<a name="line.8271"></a>
<span class="sourceLineNo">8272</span> ox = (int) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.8272"></a>
<span class="sourceLineNo">8273</span> oai32data[it.oIndex] = ox;<a name="line.8273"></a>
<span class="sourceLineNo">8274</span> for (int j = 1; j &lt; is; j++) {<a name="line.8274"></a>
<span class="sourceLineNo">8275</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.8275"></a>
<span class="sourceLineNo">8276</span> ox = (int) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.8276"></a>
<span class="sourceLineNo">8277</span> oai32data[it.oIndex + j] = ox;<a name="line.8277"></a>
<span class="sourceLineNo">8278</span> }<a name="line.8278"></a>
<span class="sourceLineNo">8279</span> }<a name="line.8279"></a>
<span class="sourceLineNo">8280</span> } else {<a name="line.8280"></a>
<span class="sourceLineNo">8281</span> while (it.hasNext()) {<a name="line.8281"></a>
<span class="sourceLineNo">8282</span> final long iax = it.aLong;<a name="line.8282"></a>
<span class="sourceLineNo">8283</span> long ibx = it.bLong;<a name="line.8283"></a>
<span class="sourceLineNo">8284</span> int ox;<a name="line.8284"></a>
<span class="sourceLineNo">8285</span> ox = (int) (ibx == 0 ? 0 : iax / ibx);<a name="line.8285"></a>
<span class="sourceLineNo">8286</span> oai32data[it.oIndex] = ox;<a name="line.8286"></a>
<span class="sourceLineNo">8287</span> for (int j = 1; j &lt; is; j++) {<a name="line.8287"></a>
<span class="sourceLineNo">8288</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.8288"></a>
<span class="sourceLineNo">8289</span> ox = (int) (ibx == 0 ? 0 : iax / ibx);<a name="line.8289"></a>
<span class="sourceLineNo">8290</span> oai32data[it.oIndex + j] = ox;<a name="line.8290"></a>
<span class="sourceLineNo">8291</span> }<a name="line.8291"></a>
<span class="sourceLineNo">8292</span> }<a name="line.8292"></a>
<span class="sourceLineNo">8293</span> }<a name="line.8293"></a>
<span class="sourceLineNo">8294</span> } else if (as &gt; bs) {<a name="line.8294"></a>
<span class="sourceLineNo">8295</span> if (it.isOutputDouble()) {<a name="line.8295"></a>
<span class="sourceLineNo">8296</span> while (it.hasNext()) {<a name="line.8296"></a>
<span class="sourceLineNo">8297</span> double iax = it.aDouble;<a name="line.8297"></a>
<span class="sourceLineNo">8298</span> final double ibx = it.bDouble;<a name="line.8298"></a>
<span class="sourceLineNo">8299</span> int ox;<a name="line.8299"></a>
<span class="sourceLineNo">8300</span> ox = (int) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.8300"></a>
<span class="sourceLineNo">8301</span> oai32data[it.oIndex] = ox;<a name="line.8301"></a>
<span class="sourceLineNo">8302</span> for (int j = 1; j &lt; is; j++) {<a name="line.8302"></a>
<span class="sourceLineNo">8303</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.8303"></a>
<span class="sourceLineNo">8304</span> ox = (int) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.8304"></a>
<span class="sourceLineNo">8305</span> oai32data[it.oIndex + j] = ox;<a name="line.8305"></a>
<span class="sourceLineNo">8306</span> }<a name="line.8306"></a>
<span class="sourceLineNo">8307</span> }<a name="line.8307"></a>
<span class="sourceLineNo">8308</span> } else {<a name="line.8308"></a>
<span class="sourceLineNo">8309</span> while (it.hasNext()) {<a name="line.8309"></a>
<span class="sourceLineNo">8310</span> long iax = it.aLong;<a name="line.8310"></a>
<span class="sourceLineNo">8311</span> final long ibx = it.bLong;<a name="line.8311"></a>
<span class="sourceLineNo">8312</span> int ox;<a name="line.8312"></a>
<span class="sourceLineNo">8313</span> ox = (int) (ibx == 0 ? 0 : iax / ibx);<a name="line.8313"></a>
<span class="sourceLineNo">8314</span> oai32data[it.oIndex] = ox;<a name="line.8314"></a>
<span class="sourceLineNo">8315</span> for (int j = 1; j &lt; is; j++) {<a name="line.8315"></a>
<span class="sourceLineNo">8316</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.8316"></a>
<span class="sourceLineNo">8317</span> ox = (int) (ibx == 0 ? 0 : iax / ibx);<a name="line.8317"></a>
<span class="sourceLineNo">8318</span> oai32data[it.oIndex + j] = ox;<a name="line.8318"></a>
<span class="sourceLineNo">8319</span> }<a name="line.8319"></a>
<span class="sourceLineNo">8320</span> }<a name="line.8320"></a>
<span class="sourceLineNo">8321</span> }<a name="line.8321"></a>
<span class="sourceLineNo">8322</span> } else if (as == 1) {<a name="line.8322"></a>
<span class="sourceLineNo">8323</span> if (it.isOutputDouble()) {<a name="line.8323"></a>
<span class="sourceLineNo">8324</span> while (it.hasNext()) {<a name="line.8324"></a>
<span class="sourceLineNo">8325</span> final double iax = it.aDouble;<a name="line.8325"></a>
<span class="sourceLineNo">8326</span> final double ibx = it.bDouble;<a name="line.8326"></a>
<span class="sourceLineNo">8327</span> int ox;<a name="line.8327"></a>
<span class="sourceLineNo">8328</span> ox = (int) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.8328"></a>
<span class="sourceLineNo">8329</span> for (int j = 0; j &lt; is; j++) {<a name="line.8329"></a>
<span class="sourceLineNo">8330</span> oai32data[it.oIndex + j] = ox;<a name="line.8330"></a>
<span class="sourceLineNo">8331</span> }<a name="line.8331"></a>
<span class="sourceLineNo">8332</span> }<a name="line.8332"></a>
<span class="sourceLineNo">8333</span> } else {<a name="line.8333"></a>
<span class="sourceLineNo">8334</span> while (it.hasNext()) {<a name="line.8334"></a>
<span class="sourceLineNo">8335</span> final long iax = it.aLong;<a name="line.8335"></a>
<span class="sourceLineNo">8336</span> final long ibx = it.bLong;<a name="line.8336"></a>
<span class="sourceLineNo">8337</span> int ox;<a name="line.8337"></a>
<span class="sourceLineNo">8338</span> ox = (int) (ibx == 0 ? 0 : iax / ibx);<a name="line.8338"></a>
<span class="sourceLineNo">8339</span> for (int j = 0; j &lt; is; j++) {<a name="line.8339"></a>
<span class="sourceLineNo">8340</span> oai32data[it.oIndex + j] = ox;<a name="line.8340"></a>
<span class="sourceLineNo">8341</span> }<a name="line.8341"></a>
<span class="sourceLineNo">8342</span> }<a name="line.8342"></a>
<span class="sourceLineNo">8343</span> }<a name="line.8343"></a>
<span class="sourceLineNo">8344</span> } else {<a name="line.8344"></a>
<span class="sourceLineNo">8345</span> if (it.isOutputDouble()) {<a name="line.8345"></a>
<span class="sourceLineNo">8346</span> while (it.hasNext()) {<a name="line.8346"></a>
<span class="sourceLineNo">8347</span> double iax = it.aDouble;<a name="line.8347"></a>
<span class="sourceLineNo">8348</span> double ibx = it.bDouble;<a name="line.8348"></a>
<span class="sourceLineNo">8349</span> int ox;<a name="line.8349"></a>
<span class="sourceLineNo">8350</span> ox = (int) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.8350"></a>
<span class="sourceLineNo">8351</span> oai32data[it.oIndex] = ox;<a name="line.8351"></a>
<span class="sourceLineNo">8352</span> for (int j = 1; j &lt; is; j++) {<a name="line.8352"></a>
<span class="sourceLineNo">8353</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.8353"></a>
<span class="sourceLineNo">8354</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.8354"></a>
<span class="sourceLineNo">8355</span> ox = (int) toLong(ibx == 0 ? 0 : iax / ibx);<a name="line.8355"></a>
<span class="sourceLineNo">8356</span> oai32data[it.oIndex + j] = ox;<a name="line.8356"></a>
<span class="sourceLineNo">8357</span> }<a name="line.8357"></a>
<span class="sourceLineNo">8358</span> }<a name="line.8358"></a>
<span class="sourceLineNo">8359</span> } else {<a name="line.8359"></a>
<span class="sourceLineNo">8360</span> while (it.hasNext()) {<a name="line.8360"></a>
<span class="sourceLineNo">8361</span> long iax = it.aLong;<a name="line.8361"></a>
<span class="sourceLineNo">8362</span> long ibx = it.bLong;<a name="line.8362"></a>
<span class="sourceLineNo">8363</span> int ox;<a name="line.8363"></a>
<span class="sourceLineNo">8364</span> ox = (int) (ibx == 0 ? 0 : iax / ibx);<a name="line.8364"></a>
<span class="sourceLineNo">8365</span> oai32data[it.oIndex] = ox;<a name="line.8365"></a>
<span class="sourceLineNo">8366</span> for (int j = 1; j &lt; is; j++) {<a name="line.8366"></a>
<span class="sourceLineNo">8367</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.8367"></a>
<span class="sourceLineNo">8368</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.8368"></a>
<span class="sourceLineNo">8369</span> ox = (int) (ibx == 0 ? 0 : iax / ibx);<a name="line.8369"></a>
<span class="sourceLineNo">8370</span> oai32data[it.oIndex + j] = ox;<a name="line.8370"></a>
<span class="sourceLineNo">8371</span> }<a name="line.8371"></a>
<span class="sourceLineNo">8372</span> }<a name="line.8372"></a>
<span class="sourceLineNo">8373</span> }<a name="line.8373"></a>
<span class="sourceLineNo">8374</span> }<a name="line.8374"></a>
<span class="sourceLineNo">8375</span> break;<a name="line.8375"></a>
<span class="sourceLineNo">8376</span> case Dataset.FLOAT32:<a name="line.8376"></a>
<span class="sourceLineNo">8377</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.8377"></a>
<span class="sourceLineNo">8378</span> if (it.isOutputDouble()) {<a name="line.8378"></a>
<span class="sourceLineNo">8379</span> while (it.hasNext()) {<a name="line.8379"></a>
<span class="sourceLineNo">8380</span> final double iax = it.aDouble;<a name="line.8380"></a>
<span class="sourceLineNo">8381</span> final double ibx = it.bDouble;<a name="line.8381"></a>
<span class="sourceLineNo">8382</span> float ox;<a name="line.8382"></a>
<span class="sourceLineNo">8383</span> ox = (float) (ibx == 0 ? 0 : iax / ibx);<a name="line.8383"></a>
<span class="sourceLineNo">8384</span> of32data[it.oIndex] = ox;<a name="line.8384"></a>
<span class="sourceLineNo">8385</span> }<a name="line.8385"></a>
<span class="sourceLineNo">8386</span> } else {<a name="line.8386"></a>
<span class="sourceLineNo">8387</span> while (it.hasNext()) {<a name="line.8387"></a>
<span class="sourceLineNo">8388</span> final long iax = it.aLong;<a name="line.8388"></a>
<span class="sourceLineNo">8389</span> final long ibx = it.bLong;<a name="line.8389"></a>
<span class="sourceLineNo">8390</span> float ox;<a name="line.8390"></a>
<span class="sourceLineNo">8391</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.8391"></a>
<span class="sourceLineNo">8392</span> of32data[it.oIndex] = ox;<a name="line.8392"></a>
<span class="sourceLineNo">8393</span> }<a name="line.8393"></a>
<span class="sourceLineNo">8394</span> }<a name="line.8394"></a>
<span class="sourceLineNo">8395</span> break;<a name="line.8395"></a>
<span class="sourceLineNo">8396</span> case Dataset.FLOAT64:<a name="line.8396"></a>
<span class="sourceLineNo">8397</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.8397"></a>
<span class="sourceLineNo">8398</span> if (it.isOutputDouble()) {<a name="line.8398"></a>
<span class="sourceLineNo">8399</span> while (it.hasNext()) {<a name="line.8399"></a>
<span class="sourceLineNo">8400</span> final double iax = it.aDouble;<a name="line.8400"></a>
<span class="sourceLineNo">8401</span> final double ibx = it.bDouble;<a name="line.8401"></a>
<span class="sourceLineNo">8402</span> double ox;<a name="line.8402"></a>
<span class="sourceLineNo">8403</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.8403"></a>
<span class="sourceLineNo">8404</span> of64data[it.oIndex] = ox;<a name="line.8404"></a>
<span class="sourceLineNo">8405</span> }<a name="line.8405"></a>
<span class="sourceLineNo">8406</span> } else {<a name="line.8406"></a>
<span class="sourceLineNo">8407</span> while (it.hasNext()) {<a name="line.8407"></a>
<span class="sourceLineNo">8408</span> final long iax = it.aLong;<a name="line.8408"></a>
<span class="sourceLineNo">8409</span> final long ibx = it.bLong;<a name="line.8409"></a>
<span class="sourceLineNo">8410</span> double ox;<a name="line.8410"></a>
<span class="sourceLineNo">8411</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.8411"></a>
<span class="sourceLineNo">8412</span> of64data[it.oIndex] = ox;<a name="line.8412"></a>
<span class="sourceLineNo">8413</span> }<a name="line.8413"></a>
<span class="sourceLineNo">8414</span> }<a name="line.8414"></a>
<span class="sourceLineNo">8415</span> break;<a name="line.8415"></a>
<span class="sourceLineNo">8416</span> case Dataset.ARRAYFLOAT32:<a name="line.8416"></a>
<span class="sourceLineNo">8417</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.8417"></a>
<span class="sourceLineNo">8418</span> if (is == 1) {<a name="line.8418"></a>
<span class="sourceLineNo">8419</span> if (it.isOutputDouble()) {<a name="line.8419"></a>
<span class="sourceLineNo">8420</span> while (it.hasNext()) {<a name="line.8420"></a>
<span class="sourceLineNo">8421</span> final double iax = it.aDouble;<a name="line.8421"></a>
<span class="sourceLineNo">8422</span> final double ibx = it.bDouble;<a name="line.8422"></a>
<span class="sourceLineNo">8423</span> float ox;<a name="line.8423"></a>
<span class="sourceLineNo">8424</span> ox = (float) (ibx == 0 ? 0 : iax / ibx);<a name="line.8424"></a>
<span class="sourceLineNo">8425</span> oaf32data[it.oIndex] = ox;<a name="line.8425"></a>
<span class="sourceLineNo">8426</span> }<a name="line.8426"></a>
<span class="sourceLineNo">8427</span> } else {<a name="line.8427"></a>
<span class="sourceLineNo">8428</span> while (it.hasNext()) {<a name="line.8428"></a>
<span class="sourceLineNo">8429</span> final long iax = it.aLong;<a name="line.8429"></a>
<span class="sourceLineNo">8430</span> final long ibx = it.bLong;<a name="line.8430"></a>
<span class="sourceLineNo">8431</span> float ox;<a name="line.8431"></a>
<span class="sourceLineNo">8432</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.8432"></a>
<span class="sourceLineNo">8433</span> oaf32data[it.oIndex] = ox;<a name="line.8433"></a>
<span class="sourceLineNo">8434</span> }<a name="line.8434"></a>
<span class="sourceLineNo">8435</span> }<a name="line.8435"></a>
<span class="sourceLineNo">8436</span> } else if (as &lt; bs) {<a name="line.8436"></a>
<span class="sourceLineNo">8437</span> if (it.isOutputDouble()) {<a name="line.8437"></a>
<span class="sourceLineNo">8438</span> while (it.hasNext()) {<a name="line.8438"></a>
<span class="sourceLineNo">8439</span> final double iax = it.aDouble;<a name="line.8439"></a>
<span class="sourceLineNo">8440</span> double ibx = it.bDouble;<a name="line.8440"></a>
<span class="sourceLineNo">8441</span> float ox;<a name="line.8441"></a>
<span class="sourceLineNo">8442</span> ox = (float) (ibx == 0 ? 0 : iax / ibx);<a name="line.8442"></a>
<span class="sourceLineNo">8443</span> oaf32data[it.oIndex] = ox;<a name="line.8443"></a>
<span class="sourceLineNo">8444</span> for (int j = 1; j &lt; is; j++) {<a name="line.8444"></a>
<span class="sourceLineNo">8445</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.8445"></a>
<span class="sourceLineNo">8446</span> ox = (float) (ibx == 0 ? 0 : iax / ibx);<a name="line.8446"></a>
<span class="sourceLineNo">8447</span> oaf32data[it.oIndex + j] = ox;<a name="line.8447"></a>
<span class="sourceLineNo">8448</span> }<a name="line.8448"></a>
<span class="sourceLineNo">8449</span> }<a name="line.8449"></a>
<span class="sourceLineNo">8450</span> } else {<a name="line.8450"></a>
<span class="sourceLineNo">8451</span> while (it.hasNext()) {<a name="line.8451"></a>
<span class="sourceLineNo">8452</span> final long iax = it.aLong;<a name="line.8452"></a>
<span class="sourceLineNo">8453</span> long ibx = it.bLong;<a name="line.8453"></a>
<span class="sourceLineNo">8454</span> float ox;<a name="line.8454"></a>
<span class="sourceLineNo">8455</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.8455"></a>
<span class="sourceLineNo">8456</span> oaf32data[it.oIndex] = ox;<a name="line.8456"></a>
<span class="sourceLineNo">8457</span> for (int j = 1; j &lt; is; j++) {<a name="line.8457"></a>
<span class="sourceLineNo">8458</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.8458"></a>
<span class="sourceLineNo">8459</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.8459"></a>
<span class="sourceLineNo">8460</span> oaf32data[it.oIndex + j] = ox;<a name="line.8460"></a>
<span class="sourceLineNo">8461</span> }<a name="line.8461"></a>
<span class="sourceLineNo">8462</span> }<a name="line.8462"></a>
<span class="sourceLineNo">8463</span> }<a name="line.8463"></a>
<span class="sourceLineNo">8464</span> } else if (as &gt; bs) {<a name="line.8464"></a>
<span class="sourceLineNo">8465</span> if (it.isOutputDouble()) {<a name="line.8465"></a>
<span class="sourceLineNo">8466</span> while (it.hasNext()) {<a name="line.8466"></a>
<span class="sourceLineNo">8467</span> double iax = it.aDouble;<a name="line.8467"></a>
<span class="sourceLineNo">8468</span> final double ibx = it.bDouble;<a name="line.8468"></a>
<span class="sourceLineNo">8469</span> float ox;<a name="line.8469"></a>
<span class="sourceLineNo">8470</span> ox = (float) (ibx == 0 ? 0 : iax / ibx);<a name="line.8470"></a>
<span class="sourceLineNo">8471</span> oaf32data[it.oIndex] = ox;<a name="line.8471"></a>
<span class="sourceLineNo">8472</span> for (int j = 1; j &lt; is; j++) {<a name="line.8472"></a>
<span class="sourceLineNo">8473</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.8473"></a>
<span class="sourceLineNo">8474</span> ox = (float) (ibx == 0 ? 0 : iax / ibx);<a name="line.8474"></a>
<span class="sourceLineNo">8475</span> oaf32data[it.oIndex + j] = ox;<a name="line.8475"></a>
<span class="sourceLineNo">8476</span> }<a name="line.8476"></a>
<span class="sourceLineNo">8477</span> }<a name="line.8477"></a>
<span class="sourceLineNo">8478</span> } else {<a name="line.8478"></a>
<span class="sourceLineNo">8479</span> while (it.hasNext()) {<a name="line.8479"></a>
<span class="sourceLineNo">8480</span> long iax = it.aLong;<a name="line.8480"></a>
<span class="sourceLineNo">8481</span> final long ibx = it.bLong;<a name="line.8481"></a>
<span class="sourceLineNo">8482</span> float ox;<a name="line.8482"></a>
<span class="sourceLineNo">8483</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.8483"></a>
<span class="sourceLineNo">8484</span> oaf32data[it.oIndex] = ox;<a name="line.8484"></a>
<span class="sourceLineNo">8485</span> for (int j = 1; j &lt; is; j++) {<a name="line.8485"></a>
<span class="sourceLineNo">8486</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.8486"></a>
<span class="sourceLineNo">8487</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.8487"></a>
<span class="sourceLineNo">8488</span> oaf32data[it.oIndex + j] = ox;<a name="line.8488"></a>
<span class="sourceLineNo">8489</span> }<a name="line.8489"></a>
<span class="sourceLineNo">8490</span> }<a name="line.8490"></a>
<span class="sourceLineNo">8491</span> }<a name="line.8491"></a>
<span class="sourceLineNo">8492</span> } else if (as == 1) {<a name="line.8492"></a>
<span class="sourceLineNo">8493</span> if (it.isOutputDouble()) {<a name="line.8493"></a>
<span class="sourceLineNo">8494</span> while (it.hasNext()) {<a name="line.8494"></a>
<span class="sourceLineNo">8495</span> final double iax = it.aDouble;<a name="line.8495"></a>
<span class="sourceLineNo">8496</span> final double ibx = it.bDouble;<a name="line.8496"></a>
<span class="sourceLineNo">8497</span> float ox;<a name="line.8497"></a>
<span class="sourceLineNo">8498</span> ox = (float) (ibx == 0 ? 0 : iax / ibx);<a name="line.8498"></a>
<span class="sourceLineNo">8499</span> for (int j = 0; j &lt; is; j++) {<a name="line.8499"></a>
<span class="sourceLineNo">8500</span> oaf32data[it.oIndex + j] = ox;<a name="line.8500"></a>
<span class="sourceLineNo">8501</span> }<a name="line.8501"></a>
<span class="sourceLineNo">8502</span> }<a name="line.8502"></a>
<span class="sourceLineNo">8503</span> } else {<a name="line.8503"></a>
<span class="sourceLineNo">8504</span> while (it.hasNext()) {<a name="line.8504"></a>
<span class="sourceLineNo">8505</span> final long iax = it.aLong;<a name="line.8505"></a>
<span class="sourceLineNo">8506</span> final long ibx = it.bLong;<a name="line.8506"></a>
<span class="sourceLineNo">8507</span> float ox;<a name="line.8507"></a>
<span class="sourceLineNo">8508</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.8508"></a>
<span class="sourceLineNo">8509</span> for (int j = 0; j &lt; is; j++) {<a name="line.8509"></a>
<span class="sourceLineNo">8510</span> oaf32data[it.oIndex + j] = ox;<a name="line.8510"></a>
<span class="sourceLineNo">8511</span> }<a name="line.8511"></a>
<span class="sourceLineNo">8512</span> }<a name="line.8512"></a>
<span class="sourceLineNo">8513</span> }<a name="line.8513"></a>
<span class="sourceLineNo">8514</span> } else {<a name="line.8514"></a>
<span class="sourceLineNo">8515</span> if (it.isOutputDouble()) {<a name="line.8515"></a>
<span class="sourceLineNo">8516</span> while (it.hasNext()) {<a name="line.8516"></a>
<span class="sourceLineNo">8517</span> double iax = it.aDouble;<a name="line.8517"></a>
<span class="sourceLineNo">8518</span> double ibx = it.bDouble;<a name="line.8518"></a>
<span class="sourceLineNo">8519</span> float ox;<a name="line.8519"></a>
<span class="sourceLineNo">8520</span> ox = (float) (ibx == 0 ? 0 : iax / ibx);<a name="line.8520"></a>
<span class="sourceLineNo">8521</span> oaf32data[it.oIndex] = ox;<a name="line.8521"></a>
<span class="sourceLineNo">8522</span> for (int j = 1; j &lt; is; j++) {<a name="line.8522"></a>
<span class="sourceLineNo">8523</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.8523"></a>
<span class="sourceLineNo">8524</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.8524"></a>
<span class="sourceLineNo">8525</span> ox = (float) (ibx == 0 ? 0 : iax / ibx);<a name="line.8525"></a>
<span class="sourceLineNo">8526</span> oaf32data[it.oIndex + j] = ox;<a name="line.8526"></a>
<span class="sourceLineNo">8527</span> }<a name="line.8527"></a>
<span class="sourceLineNo">8528</span> }<a name="line.8528"></a>
<span class="sourceLineNo">8529</span> } else {<a name="line.8529"></a>
<span class="sourceLineNo">8530</span> while (it.hasNext()) {<a name="line.8530"></a>
<span class="sourceLineNo">8531</span> long iax = it.aLong;<a name="line.8531"></a>
<span class="sourceLineNo">8532</span> long ibx = it.bLong;<a name="line.8532"></a>
<span class="sourceLineNo">8533</span> float ox;<a name="line.8533"></a>
<span class="sourceLineNo">8534</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.8534"></a>
<span class="sourceLineNo">8535</span> oaf32data[it.oIndex] = ox;<a name="line.8535"></a>
<span class="sourceLineNo">8536</span> for (int j = 1; j &lt; is; j++) {<a name="line.8536"></a>
<span class="sourceLineNo">8537</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.8537"></a>
<span class="sourceLineNo">8538</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.8538"></a>
<span class="sourceLineNo">8539</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.8539"></a>
<span class="sourceLineNo">8540</span> oaf32data[it.oIndex + j] = ox;<a name="line.8540"></a>
<span class="sourceLineNo">8541</span> }<a name="line.8541"></a>
<span class="sourceLineNo">8542</span> }<a name="line.8542"></a>
<span class="sourceLineNo">8543</span> }<a name="line.8543"></a>
<span class="sourceLineNo">8544</span> }<a name="line.8544"></a>
<span class="sourceLineNo">8545</span> break;<a name="line.8545"></a>
<span class="sourceLineNo">8546</span> case Dataset.ARRAYFLOAT64:<a name="line.8546"></a>
<span class="sourceLineNo">8547</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.8547"></a>
<span class="sourceLineNo">8548</span> if (is == 1) {<a name="line.8548"></a>
<span class="sourceLineNo">8549</span> if (it.isOutputDouble()) {<a name="line.8549"></a>
<span class="sourceLineNo">8550</span> while (it.hasNext()) {<a name="line.8550"></a>
<span class="sourceLineNo">8551</span> final double iax = it.aDouble;<a name="line.8551"></a>
<span class="sourceLineNo">8552</span> final double ibx = it.bDouble;<a name="line.8552"></a>
<span class="sourceLineNo">8553</span> double ox;<a name="line.8553"></a>
<span class="sourceLineNo">8554</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.8554"></a>
<span class="sourceLineNo">8555</span> oaf64data[it.oIndex] = ox;<a name="line.8555"></a>
<span class="sourceLineNo">8556</span> }<a name="line.8556"></a>
<span class="sourceLineNo">8557</span> } else {<a name="line.8557"></a>
<span class="sourceLineNo">8558</span> while (it.hasNext()) {<a name="line.8558"></a>
<span class="sourceLineNo">8559</span> final long iax = it.aLong;<a name="line.8559"></a>
<span class="sourceLineNo">8560</span> final long ibx = it.bLong;<a name="line.8560"></a>
<span class="sourceLineNo">8561</span> double ox;<a name="line.8561"></a>
<span class="sourceLineNo">8562</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.8562"></a>
<span class="sourceLineNo">8563</span> oaf64data[it.oIndex] = ox;<a name="line.8563"></a>
<span class="sourceLineNo">8564</span> }<a name="line.8564"></a>
<span class="sourceLineNo">8565</span> }<a name="line.8565"></a>
<span class="sourceLineNo">8566</span> } else if (as &lt; bs) {<a name="line.8566"></a>
<span class="sourceLineNo">8567</span> if (it.isOutputDouble()) {<a name="line.8567"></a>
<span class="sourceLineNo">8568</span> while (it.hasNext()) {<a name="line.8568"></a>
<span class="sourceLineNo">8569</span> final double iax = it.aDouble;<a name="line.8569"></a>
<span class="sourceLineNo">8570</span> double ibx = it.bDouble;<a name="line.8570"></a>
<span class="sourceLineNo">8571</span> double ox;<a name="line.8571"></a>
<span class="sourceLineNo">8572</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.8572"></a>
<span class="sourceLineNo">8573</span> oaf64data[it.oIndex] = ox;<a name="line.8573"></a>
<span class="sourceLineNo">8574</span> for (int j = 1; j &lt; is; j++) {<a name="line.8574"></a>
<span class="sourceLineNo">8575</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.8575"></a>
<span class="sourceLineNo">8576</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.8576"></a>
<span class="sourceLineNo">8577</span> oaf64data[it.oIndex + j] = ox;<a name="line.8577"></a>
<span class="sourceLineNo">8578</span> }<a name="line.8578"></a>
<span class="sourceLineNo">8579</span> }<a name="line.8579"></a>
<span class="sourceLineNo">8580</span> } else {<a name="line.8580"></a>
<span class="sourceLineNo">8581</span> while (it.hasNext()) {<a name="line.8581"></a>
<span class="sourceLineNo">8582</span> final long iax = it.aLong;<a name="line.8582"></a>
<span class="sourceLineNo">8583</span> long ibx = it.bLong;<a name="line.8583"></a>
<span class="sourceLineNo">8584</span> double ox;<a name="line.8584"></a>
<span class="sourceLineNo">8585</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.8585"></a>
<span class="sourceLineNo">8586</span> oaf64data[it.oIndex] = ox;<a name="line.8586"></a>
<span class="sourceLineNo">8587</span> for (int j = 1; j &lt; is; j++) {<a name="line.8587"></a>
<span class="sourceLineNo">8588</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.8588"></a>
<span class="sourceLineNo">8589</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.8589"></a>
<span class="sourceLineNo">8590</span> oaf64data[it.oIndex + j] = ox;<a name="line.8590"></a>
<span class="sourceLineNo">8591</span> }<a name="line.8591"></a>
<span class="sourceLineNo">8592</span> }<a name="line.8592"></a>
<span class="sourceLineNo">8593</span> }<a name="line.8593"></a>
<span class="sourceLineNo">8594</span> } else if (as &gt; bs) {<a name="line.8594"></a>
<span class="sourceLineNo">8595</span> if (it.isOutputDouble()) {<a name="line.8595"></a>
<span class="sourceLineNo">8596</span> while (it.hasNext()) {<a name="line.8596"></a>
<span class="sourceLineNo">8597</span> double iax = it.aDouble;<a name="line.8597"></a>
<span class="sourceLineNo">8598</span> final double ibx = it.bDouble;<a name="line.8598"></a>
<span class="sourceLineNo">8599</span> double ox;<a name="line.8599"></a>
<span class="sourceLineNo">8600</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.8600"></a>
<span class="sourceLineNo">8601</span> oaf64data[it.oIndex] = ox;<a name="line.8601"></a>
<span class="sourceLineNo">8602</span> for (int j = 1; j &lt; is; j++) {<a name="line.8602"></a>
<span class="sourceLineNo">8603</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.8603"></a>
<span class="sourceLineNo">8604</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.8604"></a>
<span class="sourceLineNo">8605</span> oaf64data[it.oIndex + j] = ox;<a name="line.8605"></a>
<span class="sourceLineNo">8606</span> }<a name="line.8606"></a>
<span class="sourceLineNo">8607</span> }<a name="line.8607"></a>
<span class="sourceLineNo">8608</span> } else {<a name="line.8608"></a>
<span class="sourceLineNo">8609</span> while (it.hasNext()) {<a name="line.8609"></a>
<span class="sourceLineNo">8610</span> long iax = it.aLong;<a name="line.8610"></a>
<span class="sourceLineNo">8611</span> final long ibx = it.bLong;<a name="line.8611"></a>
<span class="sourceLineNo">8612</span> double ox;<a name="line.8612"></a>
<span class="sourceLineNo">8613</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.8613"></a>
<span class="sourceLineNo">8614</span> oaf64data[it.oIndex] = ox;<a name="line.8614"></a>
<span class="sourceLineNo">8615</span> for (int j = 1; j &lt; is; j++) {<a name="line.8615"></a>
<span class="sourceLineNo">8616</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.8616"></a>
<span class="sourceLineNo">8617</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.8617"></a>
<span class="sourceLineNo">8618</span> oaf64data[it.oIndex + j] = ox;<a name="line.8618"></a>
<span class="sourceLineNo">8619</span> }<a name="line.8619"></a>
<span class="sourceLineNo">8620</span> }<a name="line.8620"></a>
<span class="sourceLineNo">8621</span> }<a name="line.8621"></a>
<span class="sourceLineNo">8622</span> } else if (as == 1) {<a name="line.8622"></a>
<span class="sourceLineNo">8623</span> if (it.isOutputDouble()) {<a name="line.8623"></a>
<span class="sourceLineNo">8624</span> while (it.hasNext()) {<a name="line.8624"></a>
<span class="sourceLineNo">8625</span> final double iax = it.aDouble;<a name="line.8625"></a>
<span class="sourceLineNo">8626</span> final double ibx = it.bDouble;<a name="line.8626"></a>
<span class="sourceLineNo">8627</span> double ox;<a name="line.8627"></a>
<span class="sourceLineNo">8628</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.8628"></a>
<span class="sourceLineNo">8629</span> for (int j = 0; j &lt; is; j++) {<a name="line.8629"></a>
<span class="sourceLineNo">8630</span> oaf64data[it.oIndex + j] = ox;<a name="line.8630"></a>
<span class="sourceLineNo">8631</span> }<a name="line.8631"></a>
<span class="sourceLineNo">8632</span> }<a name="line.8632"></a>
<span class="sourceLineNo">8633</span> } else {<a name="line.8633"></a>
<span class="sourceLineNo">8634</span> while (it.hasNext()) {<a name="line.8634"></a>
<span class="sourceLineNo">8635</span> final long iax = it.aLong;<a name="line.8635"></a>
<span class="sourceLineNo">8636</span> final long ibx = it.bLong;<a name="line.8636"></a>
<span class="sourceLineNo">8637</span> double ox;<a name="line.8637"></a>
<span class="sourceLineNo">8638</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.8638"></a>
<span class="sourceLineNo">8639</span> for (int j = 0; j &lt; is; j++) {<a name="line.8639"></a>
<span class="sourceLineNo">8640</span> oaf64data[it.oIndex + j] = ox;<a name="line.8640"></a>
<span class="sourceLineNo">8641</span> }<a name="line.8641"></a>
<span class="sourceLineNo">8642</span> }<a name="line.8642"></a>
<span class="sourceLineNo">8643</span> }<a name="line.8643"></a>
<span class="sourceLineNo">8644</span> } else {<a name="line.8644"></a>
<span class="sourceLineNo">8645</span> if (it.isOutputDouble()) {<a name="line.8645"></a>
<span class="sourceLineNo">8646</span> while (it.hasNext()) {<a name="line.8646"></a>
<span class="sourceLineNo">8647</span> double iax = it.aDouble;<a name="line.8647"></a>
<span class="sourceLineNo">8648</span> double ibx = it.bDouble;<a name="line.8648"></a>
<span class="sourceLineNo">8649</span> double ox;<a name="line.8649"></a>
<span class="sourceLineNo">8650</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.8650"></a>
<span class="sourceLineNo">8651</span> oaf64data[it.oIndex] = ox;<a name="line.8651"></a>
<span class="sourceLineNo">8652</span> for (int j = 1; j &lt; is; j++) {<a name="line.8652"></a>
<span class="sourceLineNo">8653</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.8653"></a>
<span class="sourceLineNo">8654</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.8654"></a>
<span class="sourceLineNo">8655</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.8655"></a>
<span class="sourceLineNo">8656</span> oaf64data[it.oIndex + j] = ox;<a name="line.8656"></a>
<span class="sourceLineNo">8657</span> }<a name="line.8657"></a>
<span class="sourceLineNo">8658</span> }<a name="line.8658"></a>
<span class="sourceLineNo">8659</span> } else {<a name="line.8659"></a>
<span class="sourceLineNo">8660</span> while (it.hasNext()) {<a name="line.8660"></a>
<span class="sourceLineNo">8661</span> long iax = it.aLong;<a name="line.8661"></a>
<span class="sourceLineNo">8662</span> long ibx = it.bLong;<a name="line.8662"></a>
<span class="sourceLineNo">8663</span> double ox;<a name="line.8663"></a>
<span class="sourceLineNo">8664</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.8664"></a>
<span class="sourceLineNo">8665</span> oaf64data[it.oIndex] = ox;<a name="line.8665"></a>
<span class="sourceLineNo">8666</span> for (int j = 1; j &lt; is; j++) {<a name="line.8666"></a>
<span class="sourceLineNo">8667</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.8667"></a>
<span class="sourceLineNo">8668</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.8668"></a>
<span class="sourceLineNo">8669</span> ox = (ibx == 0 ? 0 : iax / ibx);<a name="line.8669"></a>
<span class="sourceLineNo">8670</span> oaf64data[it.oIndex + j] = ox;<a name="line.8670"></a>
<span class="sourceLineNo">8671</span> }<a name="line.8671"></a>
<span class="sourceLineNo">8672</span> }<a name="line.8672"></a>
<span class="sourceLineNo">8673</span> }<a name="line.8673"></a>
<span class="sourceLineNo">8674</span> }<a name="line.8674"></a>
<span class="sourceLineNo">8675</span> break;<a name="line.8675"></a>
<span class="sourceLineNo">8676</span> case Dataset.COMPLEX64:<a name="line.8676"></a>
<span class="sourceLineNo">8677</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.8677"></a>
<span class="sourceLineNo">8678</span> if (!da.isComplex()) {<a name="line.8678"></a>
<span class="sourceLineNo">8679</span> if (it.isOutputDouble()) {<a name="line.8679"></a>
<span class="sourceLineNo">8680</span> final double iay = 0;<a name="line.8680"></a>
<span class="sourceLineNo">8681</span> if (db.isComplex()) {<a name="line.8681"></a>
<span class="sourceLineNo">8682</span> while (it.hasNext()) {<a name="line.8682"></a>
<span class="sourceLineNo">8683</span> final double iax = it.aDouble;<a name="line.8683"></a>
<span class="sourceLineNo">8684</span> final double ibx = it.bDouble;<a name="line.8684"></a>
<span class="sourceLineNo">8685</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.8685"></a>
<span class="sourceLineNo">8686</span> float ox;<a name="line.8686"></a>
<span class="sourceLineNo">8687</span> float oy;<a name="line.8687"></a>
<span class="sourceLineNo">8688</span> float q;<a name="line.8688"></a>
<span class="sourceLineNo">8689</span> float den;<a name="line.8689"></a>
<span class="sourceLineNo">8690</span> if (ibx == 0 &amp;&amp; iby == 0) {<a name="line.8690"></a>
<span class="sourceLineNo">8691</span> ox = 0;<a name="line.8691"></a>
<span class="sourceLineNo">8692</span> oy = 0;<a name="line.8692"></a>
<span class="sourceLineNo">8693</span> } else if (Math.abs(ibx) &lt; Math.abs(iby)) {<a name="line.8693"></a>
<span class="sourceLineNo">8694</span> q = (float) (ibx / iby);<a name="line.8694"></a>
<span class="sourceLineNo">8695</span> den = (float) (ibx * q + iby);<a name="line.8695"></a>
<span class="sourceLineNo">8696</span> ox = (float) ((iax * q + iay) / den);<a name="line.8696"></a>
<span class="sourceLineNo">8697</span> oy = (float) ((iay * q - ibx) / den);<a name="line.8697"></a>
<span class="sourceLineNo">8698</span> } else {<a name="line.8698"></a>
<span class="sourceLineNo">8699</span> q = (float) (iby / ibx);<a name="line.8699"></a>
<span class="sourceLineNo">8700</span> den = (float) (iby * q + ibx);<a name="line.8700"></a>
<span class="sourceLineNo">8701</span> ox = (float) ((iay * q + iax) / den);<a name="line.8701"></a>
<span class="sourceLineNo">8702</span> oy = (float) ((iay - iax * q) / den);<a name="line.8702"></a>
<span class="sourceLineNo">8703</span> }<a name="line.8703"></a>
<span class="sourceLineNo">8704</span> oc64data[it.oIndex] = ox;<a name="line.8704"></a>
<span class="sourceLineNo">8705</span> oc64data[it.oIndex + 1] = oy;<a name="line.8705"></a>
<span class="sourceLineNo">8706</span> }<a name="line.8706"></a>
<span class="sourceLineNo">8707</span> } else {<a name="line.8707"></a>
<span class="sourceLineNo">8708</span> while (it.hasNext()) {<a name="line.8708"></a>
<span class="sourceLineNo">8709</span> final double iax = it.aDouble;<a name="line.8709"></a>
<span class="sourceLineNo">8710</span> final double ibx = it.bDouble;<a name="line.8710"></a>
<span class="sourceLineNo">8711</span> final double iby = 0;<a name="line.8711"></a>
<span class="sourceLineNo">8712</span> float ox;<a name="line.8712"></a>
<span class="sourceLineNo">8713</span> float oy;<a name="line.8713"></a>
<span class="sourceLineNo">8714</span> float q;<a name="line.8714"></a>
<span class="sourceLineNo">8715</span> float den;<a name="line.8715"></a>
<span class="sourceLineNo">8716</span> if (ibx == 0 &amp;&amp; iby == 0) {<a name="line.8716"></a>
<span class="sourceLineNo">8717</span> ox = 0;<a name="line.8717"></a>
<span class="sourceLineNo">8718</span> oy = 0;<a name="line.8718"></a>
<span class="sourceLineNo">8719</span> } else if (Math.abs(ibx) &lt; Math.abs(iby)) {<a name="line.8719"></a>
<span class="sourceLineNo">8720</span> q = (float) (ibx / iby);<a name="line.8720"></a>
<span class="sourceLineNo">8721</span> den = (float) (ibx * q + iby);<a name="line.8721"></a>
<span class="sourceLineNo">8722</span> ox = (float) ((iax * q + iay) / den);<a name="line.8722"></a>
<span class="sourceLineNo">8723</span> oy = (float) ((iay * q - ibx) / den);<a name="line.8723"></a>
<span class="sourceLineNo">8724</span> } else {<a name="line.8724"></a>
<span class="sourceLineNo">8725</span> q = (float) (iby / ibx);<a name="line.8725"></a>
<span class="sourceLineNo">8726</span> den = (float) (iby * q + ibx);<a name="line.8726"></a>
<span class="sourceLineNo">8727</span> ox = (float) ((iay * q + iax) / den);<a name="line.8727"></a>
<span class="sourceLineNo">8728</span> oy = (float) ((iay - iax * q) / den);<a name="line.8728"></a>
<span class="sourceLineNo">8729</span> }<a name="line.8729"></a>
<span class="sourceLineNo">8730</span> oc64data[it.oIndex] = ox;<a name="line.8730"></a>
<span class="sourceLineNo">8731</span> oc64data[it.oIndex + 1] = oy;<a name="line.8731"></a>
<span class="sourceLineNo">8732</span> }<a name="line.8732"></a>
<span class="sourceLineNo">8733</span> }<a name="line.8733"></a>
<span class="sourceLineNo">8734</span> } else {<a name="line.8734"></a>
<span class="sourceLineNo">8735</span> final long iay = 0;<a name="line.8735"></a>
<span class="sourceLineNo">8736</span> while (it.hasNext()) {<a name="line.8736"></a>
<span class="sourceLineNo">8737</span> final long iax = it.aLong;<a name="line.8737"></a>
<span class="sourceLineNo">8738</span> final long ibx = it.bLong;<a name="line.8738"></a>
<span class="sourceLineNo">8739</span> final long iby = 0;<a name="line.8739"></a>
<span class="sourceLineNo">8740</span> float ox;<a name="line.8740"></a>
<span class="sourceLineNo">8741</span> float oy;<a name="line.8741"></a>
<span class="sourceLineNo">8742</span> float q;<a name="line.8742"></a>
<span class="sourceLineNo">8743</span> float den;<a name="line.8743"></a>
<span class="sourceLineNo">8744</span> if (ibx == 0 &amp;&amp; iby == 0) {<a name="line.8744"></a>
<span class="sourceLineNo">8745</span> ox = 0;<a name="line.8745"></a>
<span class="sourceLineNo">8746</span> oy = 0;<a name="line.8746"></a>
<span class="sourceLineNo">8747</span> } else if (Math.abs(ibx) &lt; Math.abs(iby)) {<a name="line.8747"></a>
<span class="sourceLineNo">8748</span> q = (float) (ibx / iby);<a name="line.8748"></a>
<span class="sourceLineNo">8749</span> den = (float) (ibx * q + iby);<a name="line.8749"></a>
<span class="sourceLineNo">8750</span> ox = (float) ((iax * q + iay) / den);<a name="line.8750"></a>
<span class="sourceLineNo">8751</span> oy = (float) ((iay * q - ibx) / den);<a name="line.8751"></a>
<span class="sourceLineNo">8752</span> } else {<a name="line.8752"></a>
<span class="sourceLineNo">8753</span> q = (float) (iby / ibx);<a name="line.8753"></a>
<span class="sourceLineNo">8754</span> den = (float) (iby * q + ibx);<a name="line.8754"></a>
<span class="sourceLineNo">8755</span> ox = (float) ((iay * q + iax) / den);<a name="line.8755"></a>
<span class="sourceLineNo">8756</span> oy = (float) ((iay - iax * q) / den);<a name="line.8756"></a>
<span class="sourceLineNo">8757</span> }<a name="line.8757"></a>
<span class="sourceLineNo">8758</span> oc64data[it.oIndex] = ox;<a name="line.8758"></a>
<span class="sourceLineNo">8759</span> oc64data[it.oIndex + 1] = oy;<a name="line.8759"></a>
<span class="sourceLineNo">8760</span> }<a name="line.8760"></a>
<span class="sourceLineNo">8761</span> }<a name="line.8761"></a>
<span class="sourceLineNo">8762</span> } else if (!db.isComplex()) {<a name="line.8762"></a>
<span class="sourceLineNo">8763</span> final double iby = 0;<a name="line.8763"></a>
<span class="sourceLineNo">8764</span> while (it.hasNext()) {<a name="line.8764"></a>
<span class="sourceLineNo">8765</span> final double iax = it.aDouble;<a name="line.8765"></a>
<span class="sourceLineNo">8766</span> final double ibx = it.bDouble;<a name="line.8766"></a>
<span class="sourceLineNo">8767</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.8767"></a>
<span class="sourceLineNo">8768</span> float ox;<a name="line.8768"></a>
<span class="sourceLineNo">8769</span> float oy;<a name="line.8769"></a>
<span class="sourceLineNo">8770</span> float q;<a name="line.8770"></a>
<span class="sourceLineNo">8771</span> float den;<a name="line.8771"></a>
<span class="sourceLineNo">8772</span> if (ibx == 0 &amp;&amp; iby == 0) {<a name="line.8772"></a>
<span class="sourceLineNo">8773</span> ox = 0;<a name="line.8773"></a>
<span class="sourceLineNo">8774</span> oy = 0;<a name="line.8774"></a>
<span class="sourceLineNo">8775</span> } else if (Math.abs(ibx) &lt; Math.abs(iby)) {<a name="line.8775"></a>
<span class="sourceLineNo">8776</span> q = (float) (ibx / iby);<a name="line.8776"></a>
<span class="sourceLineNo">8777</span> den = (float) (ibx * q + iby);<a name="line.8777"></a>
<span class="sourceLineNo">8778</span> ox = (float) ((iax * q + iay) / den);<a name="line.8778"></a>
<span class="sourceLineNo">8779</span> oy = (float) ((iay * q - ibx) / den);<a name="line.8779"></a>
<span class="sourceLineNo">8780</span> } else {<a name="line.8780"></a>
<span class="sourceLineNo">8781</span> q = (float) (iby / ibx);<a name="line.8781"></a>
<span class="sourceLineNo">8782</span> den = (float) (iby * q + ibx);<a name="line.8782"></a>
<span class="sourceLineNo">8783</span> ox = (float) ((iay * q + iax) / den);<a name="line.8783"></a>
<span class="sourceLineNo">8784</span> oy = (float) ((iay - iax * q) / den);<a name="line.8784"></a>
<span class="sourceLineNo">8785</span> }<a name="line.8785"></a>
<span class="sourceLineNo">8786</span> oc64data[it.oIndex] = ox;<a name="line.8786"></a>
<span class="sourceLineNo">8787</span> oc64data[it.oIndex + 1] = oy;<a name="line.8787"></a>
<span class="sourceLineNo">8788</span> }<a name="line.8788"></a>
<span class="sourceLineNo">8789</span> } else {<a name="line.8789"></a>
<span class="sourceLineNo">8790</span> while (it.hasNext()) {<a name="line.8790"></a>
<span class="sourceLineNo">8791</span> final double iax = it.aDouble;<a name="line.8791"></a>
<span class="sourceLineNo">8792</span> final double ibx = it.bDouble;<a name="line.8792"></a>
<span class="sourceLineNo">8793</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.8793"></a>
<span class="sourceLineNo">8794</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.8794"></a>
<span class="sourceLineNo">8795</span> float ox;<a name="line.8795"></a>
<span class="sourceLineNo">8796</span> float oy;<a name="line.8796"></a>
<span class="sourceLineNo">8797</span> float q;<a name="line.8797"></a>
<span class="sourceLineNo">8798</span> float den;<a name="line.8798"></a>
<span class="sourceLineNo">8799</span> if (ibx == 0 &amp;&amp; iby == 0) {<a name="line.8799"></a>
<span class="sourceLineNo">8800</span> ox = 0;<a name="line.8800"></a>
<span class="sourceLineNo">8801</span> oy = 0;<a name="line.8801"></a>
<span class="sourceLineNo">8802</span> } else if (Math.abs(ibx) &lt; Math.abs(iby)) {<a name="line.8802"></a>
<span class="sourceLineNo">8803</span> q = (float) (ibx / iby);<a name="line.8803"></a>
<span class="sourceLineNo">8804</span> den = (float) (ibx * q + iby);<a name="line.8804"></a>
<span class="sourceLineNo">8805</span> ox = (float) ((iax * q + iay) / den);<a name="line.8805"></a>
<span class="sourceLineNo">8806</span> oy = (float) ((iay * q - ibx) / den);<a name="line.8806"></a>
<span class="sourceLineNo">8807</span> } else {<a name="line.8807"></a>
<span class="sourceLineNo">8808</span> q = (float) (iby / ibx);<a name="line.8808"></a>
<span class="sourceLineNo">8809</span> den = (float) (iby * q + ibx);<a name="line.8809"></a>
<span class="sourceLineNo">8810</span> ox = (float) ((iay * q + iax) / den);<a name="line.8810"></a>
<span class="sourceLineNo">8811</span> oy = (float) ((iay - iax * q) / den);<a name="line.8811"></a>
<span class="sourceLineNo">8812</span> }<a name="line.8812"></a>
<span class="sourceLineNo">8813</span> oc64data[it.oIndex] = ox;<a name="line.8813"></a>
<span class="sourceLineNo">8814</span> oc64data[it.oIndex + 1] = oy;<a name="line.8814"></a>
<span class="sourceLineNo">8815</span> }<a name="line.8815"></a>
<span class="sourceLineNo">8816</span> }<a name="line.8816"></a>
<span class="sourceLineNo">8817</span> break;<a name="line.8817"></a>
<span class="sourceLineNo">8818</span> case Dataset.COMPLEX128:<a name="line.8818"></a>
<span class="sourceLineNo">8819</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.8819"></a>
<span class="sourceLineNo">8820</span> if (!da.isComplex()) {<a name="line.8820"></a>
<span class="sourceLineNo">8821</span> if (it.isOutputDouble()) {<a name="line.8821"></a>
<span class="sourceLineNo">8822</span> final double iay = 0;<a name="line.8822"></a>
<span class="sourceLineNo">8823</span> if (db.isComplex()) {<a name="line.8823"></a>
<span class="sourceLineNo">8824</span> while (it.hasNext()) {<a name="line.8824"></a>
<span class="sourceLineNo">8825</span> final double iax = it.aDouble;<a name="line.8825"></a>
<span class="sourceLineNo">8826</span> final double ibx = it.bDouble;<a name="line.8826"></a>
<span class="sourceLineNo">8827</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.8827"></a>
<span class="sourceLineNo">8828</span> double ox;<a name="line.8828"></a>
<span class="sourceLineNo">8829</span> double oy;<a name="line.8829"></a>
<span class="sourceLineNo">8830</span> double q;<a name="line.8830"></a>
<span class="sourceLineNo">8831</span> double den;<a name="line.8831"></a>
<span class="sourceLineNo">8832</span> if (ibx == 0 &amp;&amp; iby == 0) {<a name="line.8832"></a>
<span class="sourceLineNo">8833</span> ox = 0;<a name="line.8833"></a>
<span class="sourceLineNo">8834</span> oy = 0;<a name="line.8834"></a>
<span class="sourceLineNo">8835</span> } else if (Math.abs(ibx) &lt; Math.abs(iby)) {<a name="line.8835"></a>
<span class="sourceLineNo">8836</span> q = (ibx / iby);<a name="line.8836"></a>
<span class="sourceLineNo">8837</span> den = (ibx * q + iby);<a name="line.8837"></a>
<span class="sourceLineNo">8838</span> ox = ((iax * q + iay) / den);<a name="line.8838"></a>
<span class="sourceLineNo">8839</span> oy = ((iay * q - ibx) / den);<a name="line.8839"></a>
<span class="sourceLineNo">8840</span> } else {<a name="line.8840"></a>
<span class="sourceLineNo">8841</span> q = (iby / ibx);<a name="line.8841"></a>
<span class="sourceLineNo">8842</span> den = (iby * q + ibx);<a name="line.8842"></a>
<span class="sourceLineNo">8843</span> ox = ((iay * q + iax) / den);<a name="line.8843"></a>
<span class="sourceLineNo">8844</span> oy = ((iay - iax * q) / den);<a name="line.8844"></a>
<span class="sourceLineNo">8845</span> }<a name="line.8845"></a>
<span class="sourceLineNo">8846</span> oc128data[it.oIndex] = ox;<a name="line.8846"></a>
<span class="sourceLineNo">8847</span> oc128data[it.oIndex + 1] = oy;<a name="line.8847"></a>
<span class="sourceLineNo">8848</span> }<a name="line.8848"></a>
<span class="sourceLineNo">8849</span> } else {<a name="line.8849"></a>
<span class="sourceLineNo">8850</span> while (it.hasNext()) {<a name="line.8850"></a>
<span class="sourceLineNo">8851</span> final double iax = it.aDouble;<a name="line.8851"></a>
<span class="sourceLineNo">8852</span> final double ibx = it.bDouble;<a name="line.8852"></a>
<span class="sourceLineNo">8853</span> final double iby = 0;<a name="line.8853"></a>
<span class="sourceLineNo">8854</span> double ox;<a name="line.8854"></a>
<span class="sourceLineNo">8855</span> double oy;<a name="line.8855"></a>
<span class="sourceLineNo">8856</span> double q;<a name="line.8856"></a>
<span class="sourceLineNo">8857</span> double den;<a name="line.8857"></a>
<span class="sourceLineNo">8858</span> if (ibx == 0 &amp;&amp; iby == 0) {<a name="line.8858"></a>
<span class="sourceLineNo">8859</span> ox = 0;<a name="line.8859"></a>
<span class="sourceLineNo">8860</span> oy = 0;<a name="line.8860"></a>
<span class="sourceLineNo">8861</span> } else if (Math.abs(ibx) &lt; Math.abs(iby)) {<a name="line.8861"></a>
<span class="sourceLineNo">8862</span> q = (ibx / iby);<a name="line.8862"></a>
<span class="sourceLineNo">8863</span> den = (ibx * q + iby);<a name="line.8863"></a>
<span class="sourceLineNo">8864</span> ox = ((iax * q + iay) / den);<a name="line.8864"></a>
<span class="sourceLineNo">8865</span> oy = ((iay * q - ibx) / den);<a name="line.8865"></a>
<span class="sourceLineNo">8866</span> } else {<a name="line.8866"></a>
<span class="sourceLineNo">8867</span> q = (iby / ibx);<a name="line.8867"></a>
<span class="sourceLineNo">8868</span> den = (iby * q + ibx);<a name="line.8868"></a>
<span class="sourceLineNo">8869</span> ox = ((iay * q + iax) / den);<a name="line.8869"></a>
<span class="sourceLineNo">8870</span> oy = ((iay - iax * q) / den);<a name="line.8870"></a>
<span class="sourceLineNo">8871</span> }<a name="line.8871"></a>
<span class="sourceLineNo">8872</span> oc128data[it.oIndex] = ox;<a name="line.8872"></a>
<span class="sourceLineNo">8873</span> oc128data[it.oIndex + 1] = oy;<a name="line.8873"></a>
<span class="sourceLineNo">8874</span> }<a name="line.8874"></a>
<span class="sourceLineNo">8875</span> }<a name="line.8875"></a>
<span class="sourceLineNo">8876</span> } else {<a name="line.8876"></a>
<span class="sourceLineNo">8877</span> final long iay = 0;<a name="line.8877"></a>
<span class="sourceLineNo">8878</span> while (it.hasNext()) {<a name="line.8878"></a>
<span class="sourceLineNo">8879</span> final long iax = it.aLong;<a name="line.8879"></a>
<span class="sourceLineNo">8880</span> final long ibx = it.bLong;<a name="line.8880"></a>
<span class="sourceLineNo">8881</span> final long iby = 0;<a name="line.8881"></a>
<span class="sourceLineNo">8882</span> double ox;<a name="line.8882"></a>
<span class="sourceLineNo">8883</span> double oy;<a name="line.8883"></a>
<span class="sourceLineNo">8884</span> double q;<a name="line.8884"></a>
<span class="sourceLineNo">8885</span> double den;<a name="line.8885"></a>
<span class="sourceLineNo">8886</span> if (ibx == 0 &amp;&amp; iby == 0) {<a name="line.8886"></a>
<span class="sourceLineNo">8887</span> ox = 0;<a name="line.8887"></a>
<span class="sourceLineNo">8888</span> oy = 0;<a name="line.8888"></a>
<span class="sourceLineNo">8889</span> } else if (Math.abs(ibx) &lt; Math.abs(iby)) {<a name="line.8889"></a>
<span class="sourceLineNo">8890</span> q = (ibx / iby);<a name="line.8890"></a>
<span class="sourceLineNo">8891</span> den = (ibx * q + iby);<a name="line.8891"></a>
<span class="sourceLineNo">8892</span> ox = ((iax * q + iay) / den);<a name="line.8892"></a>
<span class="sourceLineNo">8893</span> oy = ((iay * q - ibx) / den);<a name="line.8893"></a>
<span class="sourceLineNo">8894</span> } else {<a name="line.8894"></a>
<span class="sourceLineNo">8895</span> q = (iby / ibx);<a name="line.8895"></a>
<span class="sourceLineNo">8896</span> den = (iby * q + ibx);<a name="line.8896"></a>
<span class="sourceLineNo">8897</span> ox = ((iay * q + iax) / den);<a name="line.8897"></a>
<span class="sourceLineNo">8898</span> oy = ((iay - iax * q) / den);<a name="line.8898"></a>
<span class="sourceLineNo">8899</span> }<a name="line.8899"></a>
<span class="sourceLineNo">8900</span> oc128data[it.oIndex] = ox;<a name="line.8900"></a>
<span class="sourceLineNo">8901</span> oc128data[it.oIndex + 1] = oy;<a name="line.8901"></a>
<span class="sourceLineNo">8902</span> }<a name="line.8902"></a>
<span class="sourceLineNo">8903</span> }<a name="line.8903"></a>
<span class="sourceLineNo">8904</span> } else if (!db.isComplex()) {<a name="line.8904"></a>
<span class="sourceLineNo">8905</span> final double iby = 0;<a name="line.8905"></a>
<span class="sourceLineNo">8906</span> while (it.hasNext()) {<a name="line.8906"></a>
<span class="sourceLineNo">8907</span> final double iax = it.aDouble;<a name="line.8907"></a>
<span class="sourceLineNo">8908</span> final double ibx = it.bDouble;<a name="line.8908"></a>
<span class="sourceLineNo">8909</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.8909"></a>
<span class="sourceLineNo">8910</span> double ox;<a name="line.8910"></a>
<span class="sourceLineNo">8911</span> double oy;<a name="line.8911"></a>
<span class="sourceLineNo">8912</span> double q;<a name="line.8912"></a>
<span class="sourceLineNo">8913</span> double den;<a name="line.8913"></a>
<span class="sourceLineNo">8914</span> if (ibx == 0 &amp;&amp; iby == 0) {<a name="line.8914"></a>
<span class="sourceLineNo">8915</span> ox = 0;<a name="line.8915"></a>
<span class="sourceLineNo">8916</span> oy = 0;<a name="line.8916"></a>
<span class="sourceLineNo">8917</span> } else if (Math.abs(ibx) &lt; Math.abs(iby)) {<a name="line.8917"></a>
<span class="sourceLineNo">8918</span> q = (ibx / iby);<a name="line.8918"></a>
<span class="sourceLineNo">8919</span> den = (ibx * q + iby);<a name="line.8919"></a>
<span class="sourceLineNo">8920</span> ox = ((iax * q + iay) / den);<a name="line.8920"></a>
<span class="sourceLineNo">8921</span> oy = ((iay * q - ibx) / den);<a name="line.8921"></a>
<span class="sourceLineNo">8922</span> } else {<a name="line.8922"></a>
<span class="sourceLineNo">8923</span> q = (iby / ibx);<a name="line.8923"></a>
<span class="sourceLineNo">8924</span> den = (iby * q + ibx);<a name="line.8924"></a>
<span class="sourceLineNo">8925</span> ox = ((iay * q + iax) / den);<a name="line.8925"></a>
<span class="sourceLineNo">8926</span> oy = ((iay - iax * q) / den);<a name="line.8926"></a>
<span class="sourceLineNo">8927</span> }<a name="line.8927"></a>
<span class="sourceLineNo">8928</span> oc128data[it.oIndex] = ox;<a name="line.8928"></a>
<span class="sourceLineNo">8929</span> oc128data[it.oIndex + 1] = oy;<a name="line.8929"></a>
<span class="sourceLineNo">8930</span> }<a name="line.8930"></a>
<span class="sourceLineNo">8931</span> } else {<a name="line.8931"></a>
<span class="sourceLineNo">8932</span> while (it.hasNext()) {<a name="line.8932"></a>
<span class="sourceLineNo">8933</span> final double iax = it.aDouble;<a name="line.8933"></a>
<span class="sourceLineNo">8934</span> final double ibx = it.bDouble;<a name="line.8934"></a>
<span class="sourceLineNo">8935</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.8935"></a>
<span class="sourceLineNo">8936</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.8936"></a>
<span class="sourceLineNo">8937</span> double ox;<a name="line.8937"></a>
<span class="sourceLineNo">8938</span> double oy;<a name="line.8938"></a>
<span class="sourceLineNo">8939</span> double q;<a name="line.8939"></a>
<span class="sourceLineNo">8940</span> double den;<a name="line.8940"></a>
<span class="sourceLineNo">8941</span> if (ibx == 0 &amp;&amp; iby == 0) {<a name="line.8941"></a>
<span class="sourceLineNo">8942</span> ox = 0;<a name="line.8942"></a>
<span class="sourceLineNo">8943</span> oy = 0;<a name="line.8943"></a>
<span class="sourceLineNo">8944</span> } else if (Math.abs(ibx) &lt; Math.abs(iby)) {<a name="line.8944"></a>
<span class="sourceLineNo">8945</span> q = (ibx / iby);<a name="line.8945"></a>
<span class="sourceLineNo">8946</span> den = (ibx * q + iby);<a name="line.8946"></a>
<span class="sourceLineNo">8947</span> ox = ((iax * q + iay) / den);<a name="line.8947"></a>
<span class="sourceLineNo">8948</span> oy = ((iay * q - ibx) / den);<a name="line.8948"></a>
<span class="sourceLineNo">8949</span> } else {<a name="line.8949"></a>
<span class="sourceLineNo">8950</span> q = (iby / ibx);<a name="line.8950"></a>
<span class="sourceLineNo">8951</span> den = (iby * q + ibx);<a name="line.8951"></a>
<span class="sourceLineNo">8952</span> ox = ((iay * q + iax) / den);<a name="line.8952"></a>
<span class="sourceLineNo">8953</span> oy = ((iay - iax * q) / den);<a name="line.8953"></a>
<span class="sourceLineNo">8954</span> }<a name="line.8954"></a>
<span class="sourceLineNo">8955</span> oc128data[it.oIndex] = ox;<a name="line.8955"></a>
<span class="sourceLineNo">8956</span> oc128data[it.oIndex + 1] = oy;<a name="line.8956"></a>
<span class="sourceLineNo">8957</span> }<a name="line.8957"></a>
<span class="sourceLineNo">8958</span> }<a name="line.8958"></a>
<span class="sourceLineNo">8959</span> break;<a name="line.8959"></a>
<span class="sourceLineNo">8960</span> default:<a name="line.8960"></a>
<span class="sourceLineNo">8961</span> throw new IllegalArgumentException("dividez supports integer, compound integer, real, compound real, complex datasets only");<a name="line.8961"></a>
<span class="sourceLineNo">8962</span> }<a name="line.8962"></a>
<span class="sourceLineNo">8963</span><a name="line.8963"></a>
<span class="sourceLineNo">8964</span> addBinaryOperatorName(da, db, result, "/");<a name="line.8964"></a>
<span class="sourceLineNo">8965</span> return result;<a name="line.8965"></a>
<span class="sourceLineNo">8966</span> }<a name="line.8966"></a>
<span class="sourceLineNo">8967</span><a name="line.8967"></a>
<span class="sourceLineNo">8968</span> /**<a name="line.8968"></a>
<span class="sourceLineNo">8969</span> * divideTowardsFloor operator<a name="line.8969"></a>
<span class="sourceLineNo">8970</span> * @param a<a name="line.8970"></a>
<span class="sourceLineNo">8971</span> * @param b<a name="line.8971"></a>
<span class="sourceLineNo">8972</span> * @return {@code a / b}, division of a by b but rounded towards negative infinity<a name="line.8972"></a>
<span class="sourceLineNo">8973</span> */<a name="line.8973"></a>
<span class="sourceLineNo">8974</span> public static Dataset divideTowardsFloor(final Object a, final Object b) {<a name="line.8974"></a>
<span class="sourceLineNo">8975</span> return divideTowardsFloor(a, b, null);<a name="line.8975"></a>
<span class="sourceLineNo">8976</span> }<a name="line.8976"></a>
<span class="sourceLineNo">8977</span><a name="line.8977"></a>
<span class="sourceLineNo">8978</span> /**<a name="line.8978"></a>
<span class="sourceLineNo">8979</span> * divideTowardsFloor operator<a name="line.8979"></a>
<span class="sourceLineNo">8980</span> * @param a<a name="line.8980"></a>
<span class="sourceLineNo">8981</span> * @param b<a name="line.8981"></a>
<span class="sourceLineNo">8982</span> * @param o output can be null - in which case, a new dataset is created<a name="line.8982"></a>
<span class="sourceLineNo">8983</span> * @return {@code a / b}, division of a by b but rounded towards negative infinity<a name="line.8983"></a>
<span class="sourceLineNo">8984</span> */<a name="line.8984"></a>
<span class="sourceLineNo">8985</span> public static Dataset divideTowardsFloor(final Object a, final Object b, final Dataset o) {<a name="line.8985"></a>
<span class="sourceLineNo">8986</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.8986"></a>
<span class="sourceLineNo">8987</span> Dataset db = b instanceof Dataset ? (Dataset) b : DatasetFactory.createFromObject(b);<a name="line.8987"></a>
<span class="sourceLineNo">8988</span> BroadcastIterator it = BroadcastIterator.createIterator(da, db, o, true);<a name="line.8988"></a>
<span class="sourceLineNo">8989</span> final Dataset result = it.getOutput();<a name="line.8989"></a>
<span class="sourceLineNo">8990</span> if (!result.isComplex()) {<a name="line.8990"></a>
<span class="sourceLineNo">8991</span> boolean change = false;<a name="line.8991"></a>
<span class="sourceLineNo">8992</span> if (da.isComplex()) {<a name="line.8992"></a>
<span class="sourceLineNo">8993</span> da = da.getRealView();<a name="line.8993"></a>
<span class="sourceLineNo">8994</span> change = true;<a name="line.8994"></a>
<span class="sourceLineNo">8995</span> }<a name="line.8995"></a>
<span class="sourceLineNo">8996</span> if (db.isComplex()) {<a name="line.8996"></a>
<span class="sourceLineNo">8997</span> db = db.getRealView();<a name="line.8997"></a>
<span class="sourceLineNo">8998</span> change = true;<a name="line.8998"></a>
<span class="sourceLineNo">8999</span> }<a name="line.8999"></a>
<span class="sourceLineNo">9000</span> if (change) {<a name="line.9000"></a>
<span class="sourceLineNo">9001</span> it = BroadcastIterator.createIterator(da, db, result, true);<a name="line.9001"></a>
<span class="sourceLineNo">9002</span> }<a name="line.9002"></a>
<span class="sourceLineNo">9003</span> }<a name="line.9003"></a>
<span class="sourceLineNo">9004</span> final int is = result.getElementsPerItem();<a name="line.9004"></a>
<span class="sourceLineNo">9005</span> final int as = da.getElementsPerItem();<a name="line.9005"></a>
<span class="sourceLineNo">9006</span> final int bs = db.getElementsPerItem();<a name="line.9006"></a>
<span class="sourceLineNo">9007</span> final int dt = result.getDType();<a name="line.9007"></a>
<span class="sourceLineNo">9008</span><a name="line.9008"></a>
<span class="sourceLineNo">9009</span> switch(dt) {<a name="line.9009"></a>
<span class="sourceLineNo">9010</span> case Dataset.INT8:<a name="line.9010"></a>
<span class="sourceLineNo">9011</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.9011"></a>
<span class="sourceLineNo">9012</span> if (it.isOutputDouble()) {<a name="line.9012"></a>
<span class="sourceLineNo">9013</span> while (it.hasNext()) {<a name="line.9013"></a>
<span class="sourceLineNo">9014</span> final double iax = it.aDouble;<a name="line.9014"></a>
<span class="sourceLineNo">9015</span> final double ibx = it.bDouble;<a name="line.9015"></a>
<span class="sourceLineNo">9016</span> byte ox;<a name="line.9016"></a>
<span class="sourceLineNo">9017</span> if (ibx == 0) {<a name="line.9017"></a>
<span class="sourceLineNo">9018</span> ox = 0;<a name="line.9018"></a>
<span class="sourceLineNo">9019</span> } else {<a name="line.9019"></a>
<span class="sourceLineNo">9020</span> ox = (byte) toLong(iax / ibx);<a name="line.9020"></a>
<span class="sourceLineNo">9021</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9021"></a>
<span class="sourceLineNo">9022</span> ox--;<a name="line.9022"></a>
<span class="sourceLineNo">9023</span> }<a name="line.9023"></a>
<span class="sourceLineNo">9024</span> }<a name="line.9024"></a>
<span class="sourceLineNo">9025</span> oi8data[it.oIndex] = ox;<a name="line.9025"></a>
<span class="sourceLineNo">9026</span> }<a name="line.9026"></a>
<span class="sourceLineNo">9027</span> } else {<a name="line.9027"></a>
<span class="sourceLineNo">9028</span> while (it.hasNext()) {<a name="line.9028"></a>
<span class="sourceLineNo">9029</span> final long iax = it.aLong;<a name="line.9029"></a>
<span class="sourceLineNo">9030</span> final long ibx = it.bLong;<a name="line.9030"></a>
<span class="sourceLineNo">9031</span> byte ox;<a name="line.9031"></a>
<span class="sourceLineNo">9032</span> if (ibx == 0) {<a name="line.9032"></a>
<span class="sourceLineNo">9033</span> ox = 0;<a name="line.9033"></a>
<span class="sourceLineNo">9034</span> } else {<a name="line.9034"></a>
<span class="sourceLineNo">9035</span> ox = (byte) (iax / ibx);<a name="line.9035"></a>
<span class="sourceLineNo">9036</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9036"></a>
<span class="sourceLineNo">9037</span> ox--;<a name="line.9037"></a>
<span class="sourceLineNo">9038</span> }<a name="line.9038"></a>
<span class="sourceLineNo">9039</span> }<a name="line.9039"></a>
<span class="sourceLineNo">9040</span> oi8data[it.oIndex] = ox;<a name="line.9040"></a>
<span class="sourceLineNo">9041</span> }<a name="line.9041"></a>
<span class="sourceLineNo">9042</span> }<a name="line.9042"></a>
<span class="sourceLineNo">9043</span> break;<a name="line.9043"></a>
<span class="sourceLineNo">9044</span> case Dataset.INT16:<a name="line.9044"></a>
<span class="sourceLineNo">9045</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.9045"></a>
<span class="sourceLineNo">9046</span> if (it.isOutputDouble()) {<a name="line.9046"></a>
<span class="sourceLineNo">9047</span> while (it.hasNext()) {<a name="line.9047"></a>
<span class="sourceLineNo">9048</span> final double iax = it.aDouble;<a name="line.9048"></a>
<span class="sourceLineNo">9049</span> final double ibx = it.bDouble;<a name="line.9049"></a>
<span class="sourceLineNo">9050</span> short ox;<a name="line.9050"></a>
<span class="sourceLineNo">9051</span> if (ibx == 0) {<a name="line.9051"></a>
<span class="sourceLineNo">9052</span> ox = 0;<a name="line.9052"></a>
<span class="sourceLineNo">9053</span> } else {<a name="line.9053"></a>
<span class="sourceLineNo">9054</span> ox = (short) toLong(iax / ibx);<a name="line.9054"></a>
<span class="sourceLineNo">9055</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9055"></a>
<span class="sourceLineNo">9056</span> ox--;<a name="line.9056"></a>
<span class="sourceLineNo">9057</span> }<a name="line.9057"></a>
<span class="sourceLineNo">9058</span> }<a name="line.9058"></a>
<span class="sourceLineNo">9059</span> oi16data[it.oIndex] = ox;<a name="line.9059"></a>
<span class="sourceLineNo">9060</span> }<a name="line.9060"></a>
<span class="sourceLineNo">9061</span> } else {<a name="line.9061"></a>
<span class="sourceLineNo">9062</span> while (it.hasNext()) {<a name="line.9062"></a>
<span class="sourceLineNo">9063</span> final long iax = it.aLong;<a name="line.9063"></a>
<span class="sourceLineNo">9064</span> final long ibx = it.bLong;<a name="line.9064"></a>
<span class="sourceLineNo">9065</span> short ox;<a name="line.9065"></a>
<span class="sourceLineNo">9066</span> if (ibx == 0) {<a name="line.9066"></a>
<span class="sourceLineNo">9067</span> ox = 0;<a name="line.9067"></a>
<span class="sourceLineNo">9068</span> } else {<a name="line.9068"></a>
<span class="sourceLineNo">9069</span> ox = (short) (iax / ibx);<a name="line.9069"></a>
<span class="sourceLineNo">9070</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9070"></a>
<span class="sourceLineNo">9071</span> ox--;<a name="line.9071"></a>
<span class="sourceLineNo">9072</span> }<a name="line.9072"></a>
<span class="sourceLineNo">9073</span> }<a name="line.9073"></a>
<span class="sourceLineNo">9074</span> oi16data[it.oIndex] = ox;<a name="line.9074"></a>
<span class="sourceLineNo">9075</span> }<a name="line.9075"></a>
<span class="sourceLineNo">9076</span> }<a name="line.9076"></a>
<span class="sourceLineNo">9077</span> break;<a name="line.9077"></a>
<span class="sourceLineNo">9078</span> case Dataset.INT64:<a name="line.9078"></a>
<span class="sourceLineNo">9079</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.9079"></a>
<span class="sourceLineNo">9080</span> if (it.isOutputDouble()) {<a name="line.9080"></a>
<span class="sourceLineNo">9081</span> while (it.hasNext()) {<a name="line.9081"></a>
<span class="sourceLineNo">9082</span> final double iax = it.aDouble;<a name="line.9082"></a>
<span class="sourceLineNo">9083</span> final double ibx = it.bDouble;<a name="line.9083"></a>
<span class="sourceLineNo">9084</span> long ox;<a name="line.9084"></a>
<span class="sourceLineNo">9085</span> if (ibx == 0) {<a name="line.9085"></a>
<span class="sourceLineNo">9086</span> ox = 0;<a name="line.9086"></a>
<span class="sourceLineNo">9087</span> } else {<a name="line.9087"></a>
<span class="sourceLineNo">9088</span> ox = toLong(iax / ibx);<a name="line.9088"></a>
<span class="sourceLineNo">9089</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9089"></a>
<span class="sourceLineNo">9090</span> ox--;<a name="line.9090"></a>
<span class="sourceLineNo">9091</span> }<a name="line.9091"></a>
<span class="sourceLineNo">9092</span> }<a name="line.9092"></a>
<span class="sourceLineNo">9093</span> oi64data[it.oIndex] = ox;<a name="line.9093"></a>
<span class="sourceLineNo">9094</span> }<a name="line.9094"></a>
<span class="sourceLineNo">9095</span> } else {<a name="line.9095"></a>
<span class="sourceLineNo">9096</span> while (it.hasNext()) {<a name="line.9096"></a>
<span class="sourceLineNo">9097</span> final long iax = it.aLong;<a name="line.9097"></a>
<span class="sourceLineNo">9098</span> final long ibx = it.bLong;<a name="line.9098"></a>
<span class="sourceLineNo">9099</span> long ox;<a name="line.9099"></a>
<span class="sourceLineNo">9100</span> if (ibx == 0) {<a name="line.9100"></a>
<span class="sourceLineNo">9101</span> ox = 0;<a name="line.9101"></a>
<span class="sourceLineNo">9102</span> } else {<a name="line.9102"></a>
<span class="sourceLineNo">9103</span> ox = (iax / ibx);<a name="line.9103"></a>
<span class="sourceLineNo">9104</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9104"></a>
<span class="sourceLineNo">9105</span> ox--;<a name="line.9105"></a>
<span class="sourceLineNo">9106</span> }<a name="line.9106"></a>
<span class="sourceLineNo">9107</span> }<a name="line.9107"></a>
<span class="sourceLineNo">9108</span> oi64data[it.oIndex] = ox;<a name="line.9108"></a>
<span class="sourceLineNo">9109</span> }<a name="line.9109"></a>
<span class="sourceLineNo">9110</span> }<a name="line.9110"></a>
<span class="sourceLineNo">9111</span> break;<a name="line.9111"></a>
<span class="sourceLineNo">9112</span> case Dataset.INT32:<a name="line.9112"></a>
<span class="sourceLineNo">9113</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.9113"></a>
<span class="sourceLineNo">9114</span> if (it.isOutputDouble()) {<a name="line.9114"></a>
<span class="sourceLineNo">9115</span> while (it.hasNext()) {<a name="line.9115"></a>
<span class="sourceLineNo">9116</span> final double iax = it.aDouble;<a name="line.9116"></a>
<span class="sourceLineNo">9117</span> final double ibx = it.bDouble;<a name="line.9117"></a>
<span class="sourceLineNo">9118</span> int ox;<a name="line.9118"></a>
<span class="sourceLineNo">9119</span> if (ibx == 0) {<a name="line.9119"></a>
<span class="sourceLineNo">9120</span> ox = 0;<a name="line.9120"></a>
<span class="sourceLineNo">9121</span> } else {<a name="line.9121"></a>
<span class="sourceLineNo">9122</span> ox = (int) toLong(iax / ibx);<a name="line.9122"></a>
<span class="sourceLineNo">9123</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9123"></a>
<span class="sourceLineNo">9124</span> ox--;<a name="line.9124"></a>
<span class="sourceLineNo">9125</span> }<a name="line.9125"></a>
<span class="sourceLineNo">9126</span> }<a name="line.9126"></a>
<span class="sourceLineNo">9127</span> oi32data[it.oIndex] = ox;<a name="line.9127"></a>
<span class="sourceLineNo">9128</span> }<a name="line.9128"></a>
<span class="sourceLineNo">9129</span> } else {<a name="line.9129"></a>
<span class="sourceLineNo">9130</span> while (it.hasNext()) {<a name="line.9130"></a>
<span class="sourceLineNo">9131</span> final long iax = it.aLong;<a name="line.9131"></a>
<span class="sourceLineNo">9132</span> final long ibx = it.bLong;<a name="line.9132"></a>
<span class="sourceLineNo">9133</span> int ox;<a name="line.9133"></a>
<span class="sourceLineNo">9134</span> if (ibx == 0) {<a name="line.9134"></a>
<span class="sourceLineNo">9135</span> ox = 0;<a name="line.9135"></a>
<span class="sourceLineNo">9136</span> } else {<a name="line.9136"></a>
<span class="sourceLineNo">9137</span> ox = (int) (iax / ibx);<a name="line.9137"></a>
<span class="sourceLineNo">9138</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9138"></a>
<span class="sourceLineNo">9139</span> ox--;<a name="line.9139"></a>
<span class="sourceLineNo">9140</span> }<a name="line.9140"></a>
<span class="sourceLineNo">9141</span> }<a name="line.9141"></a>
<span class="sourceLineNo">9142</span> oi32data[it.oIndex] = ox;<a name="line.9142"></a>
<span class="sourceLineNo">9143</span> }<a name="line.9143"></a>
<span class="sourceLineNo">9144</span> }<a name="line.9144"></a>
<span class="sourceLineNo">9145</span> break;<a name="line.9145"></a>
<span class="sourceLineNo">9146</span> case Dataset.ARRAYINT8:<a name="line.9146"></a>
<span class="sourceLineNo">9147</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.9147"></a>
<span class="sourceLineNo">9148</span> if (is == 1) {<a name="line.9148"></a>
<span class="sourceLineNo">9149</span> if (it.isOutputDouble()) {<a name="line.9149"></a>
<span class="sourceLineNo">9150</span> while (it.hasNext()) {<a name="line.9150"></a>
<span class="sourceLineNo">9151</span> final double iax = it.aDouble;<a name="line.9151"></a>
<span class="sourceLineNo">9152</span> final double ibx = it.bDouble;<a name="line.9152"></a>
<span class="sourceLineNo">9153</span> byte ox;<a name="line.9153"></a>
<span class="sourceLineNo">9154</span> if (ibx == 0) {<a name="line.9154"></a>
<span class="sourceLineNo">9155</span> ox = 0;<a name="line.9155"></a>
<span class="sourceLineNo">9156</span> } else {<a name="line.9156"></a>
<span class="sourceLineNo">9157</span> ox = (byte) toLong(iax / ibx);<a name="line.9157"></a>
<span class="sourceLineNo">9158</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9158"></a>
<span class="sourceLineNo">9159</span> ox--;<a name="line.9159"></a>
<span class="sourceLineNo">9160</span> }<a name="line.9160"></a>
<span class="sourceLineNo">9161</span> }<a name="line.9161"></a>
<span class="sourceLineNo">9162</span> oai8data[it.oIndex] = ox;<a name="line.9162"></a>
<span class="sourceLineNo">9163</span> }<a name="line.9163"></a>
<span class="sourceLineNo">9164</span> } else {<a name="line.9164"></a>
<span class="sourceLineNo">9165</span> while (it.hasNext()) {<a name="line.9165"></a>
<span class="sourceLineNo">9166</span> final long iax = it.aLong;<a name="line.9166"></a>
<span class="sourceLineNo">9167</span> final long ibx = it.bLong;<a name="line.9167"></a>
<span class="sourceLineNo">9168</span> byte ox;<a name="line.9168"></a>
<span class="sourceLineNo">9169</span> if (ibx == 0) {<a name="line.9169"></a>
<span class="sourceLineNo">9170</span> ox = 0;<a name="line.9170"></a>
<span class="sourceLineNo">9171</span> } else {<a name="line.9171"></a>
<span class="sourceLineNo">9172</span> ox = (byte) (iax / ibx);<a name="line.9172"></a>
<span class="sourceLineNo">9173</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9173"></a>
<span class="sourceLineNo">9174</span> ox--;<a name="line.9174"></a>
<span class="sourceLineNo">9175</span> }<a name="line.9175"></a>
<span class="sourceLineNo">9176</span> }<a name="line.9176"></a>
<span class="sourceLineNo">9177</span> oai8data[it.oIndex] = ox;<a name="line.9177"></a>
<span class="sourceLineNo">9178</span> }<a name="line.9178"></a>
<span class="sourceLineNo">9179</span> }<a name="line.9179"></a>
<span class="sourceLineNo">9180</span> } else if (as &lt; bs) {<a name="line.9180"></a>
<span class="sourceLineNo">9181</span> if (it.isOutputDouble()) {<a name="line.9181"></a>
<span class="sourceLineNo">9182</span> while (it.hasNext()) {<a name="line.9182"></a>
<span class="sourceLineNo">9183</span> final double iax = it.aDouble;<a name="line.9183"></a>
<span class="sourceLineNo">9184</span> double ibx = it.bDouble;<a name="line.9184"></a>
<span class="sourceLineNo">9185</span> byte ox;<a name="line.9185"></a>
<span class="sourceLineNo">9186</span> if (ibx == 0) {<a name="line.9186"></a>
<span class="sourceLineNo">9187</span> ox = 0;<a name="line.9187"></a>
<span class="sourceLineNo">9188</span> } else {<a name="line.9188"></a>
<span class="sourceLineNo">9189</span> ox = (byte) toLong(iax / ibx);<a name="line.9189"></a>
<span class="sourceLineNo">9190</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9190"></a>
<span class="sourceLineNo">9191</span> ox--;<a name="line.9191"></a>
<span class="sourceLineNo">9192</span> }<a name="line.9192"></a>
<span class="sourceLineNo">9193</span> }<a name="line.9193"></a>
<span class="sourceLineNo">9194</span> oai8data[it.oIndex] = ox;<a name="line.9194"></a>
<span class="sourceLineNo">9195</span> for (int j = 1; j &lt; is; j++) {<a name="line.9195"></a>
<span class="sourceLineNo">9196</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.9196"></a>
<span class="sourceLineNo">9197</span> if (ibx == 0) {<a name="line.9197"></a>
<span class="sourceLineNo">9198</span> ox = 0;<a name="line.9198"></a>
<span class="sourceLineNo">9199</span> } else {<a name="line.9199"></a>
<span class="sourceLineNo">9200</span> ox = (byte) toLong(iax / ibx);<a name="line.9200"></a>
<span class="sourceLineNo">9201</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9201"></a>
<span class="sourceLineNo">9202</span> ox--;<a name="line.9202"></a>
<span class="sourceLineNo">9203</span> }<a name="line.9203"></a>
<span class="sourceLineNo">9204</span> }<a name="line.9204"></a>
<span class="sourceLineNo">9205</span> oai8data[it.oIndex + j] = ox;<a name="line.9205"></a>
<span class="sourceLineNo">9206</span> }<a name="line.9206"></a>
<span class="sourceLineNo">9207</span> }<a name="line.9207"></a>
<span class="sourceLineNo">9208</span> } else {<a name="line.9208"></a>
<span class="sourceLineNo">9209</span> while (it.hasNext()) {<a name="line.9209"></a>
<span class="sourceLineNo">9210</span> final long iax = it.aLong;<a name="line.9210"></a>
<span class="sourceLineNo">9211</span> long ibx = it.bLong;<a name="line.9211"></a>
<span class="sourceLineNo">9212</span> byte ox;<a name="line.9212"></a>
<span class="sourceLineNo">9213</span> if (ibx == 0) {<a name="line.9213"></a>
<span class="sourceLineNo">9214</span> ox = 0;<a name="line.9214"></a>
<span class="sourceLineNo">9215</span> } else {<a name="line.9215"></a>
<span class="sourceLineNo">9216</span> ox = (byte) (iax / ibx);<a name="line.9216"></a>
<span class="sourceLineNo">9217</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9217"></a>
<span class="sourceLineNo">9218</span> ox--;<a name="line.9218"></a>
<span class="sourceLineNo">9219</span> }<a name="line.9219"></a>
<span class="sourceLineNo">9220</span> }<a name="line.9220"></a>
<span class="sourceLineNo">9221</span> oai8data[it.oIndex] = ox;<a name="line.9221"></a>
<span class="sourceLineNo">9222</span> for (int j = 1; j &lt; is; j++) {<a name="line.9222"></a>
<span class="sourceLineNo">9223</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.9223"></a>
<span class="sourceLineNo">9224</span> if (ibx == 0) {<a name="line.9224"></a>
<span class="sourceLineNo">9225</span> ox = 0;<a name="line.9225"></a>
<span class="sourceLineNo">9226</span> } else {<a name="line.9226"></a>
<span class="sourceLineNo">9227</span> ox = (byte) (iax / ibx);<a name="line.9227"></a>
<span class="sourceLineNo">9228</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9228"></a>
<span class="sourceLineNo">9229</span> ox--;<a name="line.9229"></a>
<span class="sourceLineNo">9230</span> }<a name="line.9230"></a>
<span class="sourceLineNo">9231</span> }<a name="line.9231"></a>
<span class="sourceLineNo">9232</span> oai8data[it.oIndex + j] = ox;<a name="line.9232"></a>
<span class="sourceLineNo">9233</span> }<a name="line.9233"></a>
<span class="sourceLineNo">9234</span> }<a name="line.9234"></a>
<span class="sourceLineNo">9235</span> }<a name="line.9235"></a>
<span class="sourceLineNo">9236</span> } else if (as &gt; bs) {<a name="line.9236"></a>
<span class="sourceLineNo">9237</span> if (it.isOutputDouble()) {<a name="line.9237"></a>
<span class="sourceLineNo">9238</span> while (it.hasNext()) {<a name="line.9238"></a>
<span class="sourceLineNo">9239</span> double iax = it.aDouble;<a name="line.9239"></a>
<span class="sourceLineNo">9240</span> final double ibx = it.bDouble;<a name="line.9240"></a>
<span class="sourceLineNo">9241</span> byte ox;<a name="line.9241"></a>
<span class="sourceLineNo">9242</span> if (ibx == 0) {<a name="line.9242"></a>
<span class="sourceLineNo">9243</span> ox = 0;<a name="line.9243"></a>
<span class="sourceLineNo">9244</span> } else {<a name="line.9244"></a>
<span class="sourceLineNo">9245</span> ox = (byte) toLong(iax / ibx);<a name="line.9245"></a>
<span class="sourceLineNo">9246</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9246"></a>
<span class="sourceLineNo">9247</span> ox--;<a name="line.9247"></a>
<span class="sourceLineNo">9248</span> }<a name="line.9248"></a>
<span class="sourceLineNo">9249</span> }<a name="line.9249"></a>
<span class="sourceLineNo">9250</span> oai8data[it.oIndex] = ox;<a name="line.9250"></a>
<span class="sourceLineNo">9251</span> for (int j = 1; j &lt; is; j++) {<a name="line.9251"></a>
<span class="sourceLineNo">9252</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.9252"></a>
<span class="sourceLineNo">9253</span> if (ibx == 0) {<a name="line.9253"></a>
<span class="sourceLineNo">9254</span> ox = 0;<a name="line.9254"></a>
<span class="sourceLineNo">9255</span> } else {<a name="line.9255"></a>
<span class="sourceLineNo">9256</span> ox = (byte) toLong(iax / ibx);<a name="line.9256"></a>
<span class="sourceLineNo">9257</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9257"></a>
<span class="sourceLineNo">9258</span> ox--;<a name="line.9258"></a>
<span class="sourceLineNo">9259</span> }<a name="line.9259"></a>
<span class="sourceLineNo">9260</span> }<a name="line.9260"></a>
<span class="sourceLineNo">9261</span> oai8data[it.oIndex + j] = ox;<a name="line.9261"></a>
<span class="sourceLineNo">9262</span> }<a name="line.9262"></a>
<span class="sourceLineNo">9263</span> }<a name="line.9263"></a>
<span class="sourceLineNo">9264</span> } else {<a name="line.9264"></a>
<span class="sourceLineNo">9265</span> while (it.hasNext()) {<a name="line.9265"></a>
<span class="sourceLineNo">9266</span> long iax = it.aLong;<a name="line.9266"></a>
<span class="sourceLineNo">9267</span> final long ibx = it.bLong;<a name="line.9267"></a>
<span class="sourceLineNo">9268</span> byte ox;<a name="line.9268"></a>
<span class="sourceLineNo">9269</span> if (ibx == 0) {<a name="line.9269"></a>
<span class="sourceLineNo">9270</span> ox = 0;<a name="line.9270"></a>
<span class="sourceLineNo">9271</span> } else {<a name="line.9271"></a>
<span class="sourceLineNo">9272</span> ox = (byte) (iax / ibx);<a name="line.9272"></a>
<span class="sourceLineNo">9273</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9273"></a>
<span class="sourceLineNo">9274</span> ox--;<a name="line.9274"></a>
<span class="sourceLineNo">9275</span> }<a name="line.9275"></a>
<span class="sourceLineNo">9276</span> }<a name="line.9276"></a>
<span class="sourceLineNo">9277</span> oai8data[it.oIndex] = ox;<a name="line.9277"></a>
<span class="sourceLineNo">9278</span> for (int j = 1; j &lt; is; j++) {<a name="line.9278"></a>
<span class="sourceLineNo">9279</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.9279"></a>
<span class="sourceLineNo">9280</span> if (ibx == 0) {<a name="line.9280"></a>
<span class="sourceLineNo">9281</span> ox = 0;<a name="line.9281"></a>
<span class="sourceLineNo">9282</span> } else {<a name="line.9282"></a>
<span class="sourceLineNo">9283</span> ox = (byte) (iax / ibx);<a name="line.9283"></a>
<span class="sourceLineNo">9284</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9284"></a>
<span class="sourceLineNo">9285</span> ox--;<a name="line.9285"></a>
<span class="sourceLineNo">9286</span> }<a name="line.9286"></a>
<span class="sourceLineNo">9287</span> }<a name="line.9287"></a>
<span class="sourceLineNo">9288</span> oai8data[it.oIndex + j] = ox;<a name="line.9288"></a>
<span class="sourceLineNo">9289</span> }<a name="line.9289"></a>
<span class="sourceLineNo">9290</span> }<a name="line.9290"></a>
<span class="sourceLineNo">9291</span> }<a name="line.9291"></a>
<span class="sourceLineNo">9292</span> } else if (as == 1) {<a name="line.9292"></a>
<span class="sourceLineNo">9293</span> if (it.isOutputDouble()) {<a name="line.9293"></a>
<span class="sourceLineNo">9294</span> while (it.hasNext()) {<a name="line.9294"></a>
<span class="sourceLineNo">9295</span> final double iax = it.aDouble;<a name="line.9295"></a>
<span class="sourceLineNo">9296</span> final double ibx = it.bDouble;<a name="line.9296"></a>
<span class="sourceLineNo">9297</span> byte ox;<a name="line.9297"></a>
<span class="sourceLineNo">9298</span> if (ibx == 0) {<a name="line.9298"></a>
<span class="sourceLineNo">9299</span> ox = 0;<a name="line.9299"></a>
<span class="sourceLineNo">9300</span> } else {<a name="line.9300"></a>
<span class="sourceLineNo">9301</span> ox = (byte) toLong(iax / ibx);<a name="line.9301"></a>
<span class="sourceLineNo">9302</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9302"></a>
<span class="sourceLineNo">9303</span> ox--;<a name="line.9303"></a>
<span class="sourceLineNo">9304</span> }<a name="line.9304"></a>
<span class="sourceLineNo">9305</span> }<a name="line.9305"></a>
<span class="sourceLineNo">9306</span> for (int j = 0; j &lt; is; j++) {<a name="line.9306"></a>
<span class="sourceLineNo">9307</span> oai8data[it.oIndex + j] = ox;<a name="line.9307"></a>
<span class="sourceLineNo">9308</span> }<a name="line.9308"></a>
<span class="sourceLineNo">9309</span> }<a name="line.9309"></a>
<span class="sourceLineNo">9310</span> } else {<a name="line.9310"></a>
<span class="sourceLineNo">9311</span> while (it.hasNext()) {<a name="line.9311"></a>
<span class="sourceLineNo">9312</span> final long iax = it.aLong;<a name="line.9312"></a>
<span class="sourceLineNo">9313</span> final long ibx = it.bLong;<a name="line.9313"></a>
<span class="sourceLineNo">9314</span> byte ox;<a name="line.9314"></a>
<span class="sourceLineNo">9315</span> if (ibx == 0) {<a name="line.9315"></a>
<span class="sourceLineNo">9316</span> ox = 0;<a name="line.9316"></a>
<span class="sourceLineNo">9317</span> } else {<a name="line.9317"></a>
<span class="sourceLineNo">9318</span> ox = (byte) (iax / ibx);<a name="line.9318"></a>
<span class="sourceLineNo">9319</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9319"></a>
<span class="sourceLineNo">9320</span> ox--;<a name="line.9320"></a>
<span class="sourceLineNo">9321</span> }<a name="line.9321"></a>
<span class="sourceLineNo">9322</span> }<a name="line.9322"></a>
<span class="sourceLineNo">9323</span> for (int j = 0; j &lt; is; j++) {<a name="line.9323"></a>
<span class="sourceLineNo">9324</span> oai8data[it.oIndex + j] = ox;<a name="line.9324"></a>
<span class="sourceLineNo">9325</span> }<a name="line.9325"></a>
<span class="sourceLineNo">9326</span> }<a name="line.9326"></a>
<span class="sourceLineNo">9327</span> }<a name="line.9327"></a>
<span class="sourceLineNo">9328</span> } else {<a name="line.9328"></a>
<span class="sourceLineNo">9329</span> if (it.isOutputDouble()) {<a name="line.9329"></a>
<span class="sourceLineNo">9330</span> while (it.hasNext()) {<a name="line.9330"></a>
<span class="sourceLineNo">9331</span> double iax = it.aDouble;<a name="line.9331"></a>
<span class="sourceLineNo">9332</span> double ibx = it.bDouble;<a name="line.9332"></a>
<span class="sourceLineNo">9333</span> byte ox;<a name="line.9333"></a>
<span class="sourceLineNo">9334</span> if (ibx == 0) {<a name="line.9334"></a>
<span class="sourceLineNo">9335</span> ox = 0;<a name="line.9335"></a>
<span class="sourceLineNo">9336</span> } else {<a name="line.9336"></a>
<span class="sourceLineNo">9337</span> ox = (byte) toLong(iax / ibx);<a name="line.9337"></a>
<span class="sourceLineNo">9338</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9338"></a>
<span class="sourceLineNo">9339</span> ox--;<a name="line.9339"></a>
<span class="sourceLineNo">9340</span> }<a name="line.9340"></a>
<span class="sourceLineNo">9341</span> }<a name="line.9341"></a>
<span class="sourceLineNo">9342</span> oai8data[it.oIndex] = ox;<a name="line.9342"></a>
<span class="sourceLineNo">9343</span> for (int j = 1; j &lt; is; j++) {<a name="line.9343"></a>
<span class="sourceLineNo">9344</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.9344"></a>
<span class="sourceLineNo">9345</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.9345"></a>
<span class="sourceLineNo">9346</span> if (ibx == 0) {<a name="line.9346"></a>
<span class="sourceLineNo">9347</span> ox = 0;<a name="line.9347"></a>
<span class="sourceLineNo">9348</span> } else {<a name="line.9348"></a>
<span class="sourceLineNo">9349</span> ox = (byte) toLong(iax / ibx);<a name="line.9349"></a>
<span class="sourceLineNo">9350</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9350"></a>
<span class="sourceLineNo">9351</span> ox--;<a name="line.9351"></a>
<span class="sourceLineNo">9352</span> }<a name="line.9352"></a>
<span class="sourceLineNo">9353</span> }<a name="line.9353"></a>
<span class="sourceLineNo">9354</span> oai8data[it.oIndex + j] = ox;<a name="line.9354"></a>
<span class="sourceLineNo">9355</span> }<a name="line.9355"></a>
<span class="sourceLineNo">9356</span> }<a name="line.9356"></a>
<span class="sourceLineNo">9357</span> } else {<a name="line.9357"></a>
<span class="sourceLineNo">9358</span> while (it.hasNext()) {<a name="line.9358"></a>
<span class="sourceLineNo">9359</span> long iax = it.aLong;<a name="line.9359"></a>
<span class="sourceLineNo">9360</span> long ibx = it.bLong;<a name="line.9360"></a>
<span class="sourceLineNo">9361</span> byte ox;<a name="line.9361"></a>
<span class="sourceLineNo">9362</span> if (ibx == 0) {<a name="line.9362"></a>
<span class="sourceLineNo">9363</span> ox = 0;<a name="line.9363"></a>
<span class="sourceLineNo">9364</span> } else {<a name="line.9364"></a>
<span class="sourceLineNo">9365</span> ox = (byte) (iax / ibx);<a name="line.9365"></a>
<span class="sourceLineNo">9366</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9366"></a>
<span class="sourceLineNo">9367</span> ox--;<a name="line.9367"></a>
<span class="sourceLineNo">9368</span> }<a name="line.9368"></a>
<span class="sourceLineNo">9369</span> }<a name="line.9369"></a>
<span class="sourceLineNo">9370</span> oai8data[it.oIndex] = ox;<a name="line.9370"></a>
<span class="sourceLineNo">9371</span> for (int j = 1; j &lt; is; j++) {<a name="line.9371"></a>
<span class="sourceLineNo">9372</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.9372"></a>
<span class="sourceLineNo">9373</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.9373"></a>
<span class="sourceLineNo">9374</span> if (ibx == 0) {<a name="line.9374"></a>
<span class="sourceLineNo">9375</span> ox = 0;<a name="line.9375"></a>
<span class="sourceLineNo">9376</span> } else {<a name="line.9376"></a>
<span class="sourceLineNo">9377</span> ox = (byte) (iax / ibx);<a name="line.9377"></a>
<span class="sourceLineNo">9378</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9378"></a>
<span class="sourceLineNo">9379</span> ox--;<a name="line.9379"></a>
<span class="sourceLineNo">9380</span> }<a name="line.9380"></a>
<span class="sourceLineNo">9381</span> }<a name="line.9381"></a>
<span class="sourceLineNo">9382</span> oai8data[it.oIndex + j] = ox;<a name="line.9382"></a>
<span class="sourceLineNo">9383</span> }<a name="line.9383"></a>
<span class="sourceLineNo">9384</span> }<a name="line.9384"></a>
<span class="sourceLineNo">9385</span> }<a name="line.9385"></a>
<span class="sourceLineNo">9386</span> }<a name="line.9386"></a>
<span class="sourceLineNo">9387</span> break;<a name="line.9387"></a>
<span class="sourceLineNo">9388</span> case Dataset.ARRAYINT16:<a name="line.9388"></a>
<span class="sourceLineNo">9389</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.9389"></a>
<span class="sourceLineNo">9390</span> if (is == 1) {<a name="line.9390"></a>
<span class="sourceLineNo">9391</span> if (it.isOutputDouble()) {<a name="line.9391"></a>
<span class="sourceLineNo">9392</span> while (it.hasNext()) {<a name="line.9392"></a>
<span class="sourceLineNo">9393</span> final double iax = it.aDouble;<a name="line.9393"></a>
<span class="sourceLineNo">9394</span> final double ibx = it.bDouble;<a name="line.9394"></a>
<span class="sourceLineNo">9395</span> short ox;<a name="line.9395"></a>
<span class="sourceLineNo">9396</span> if (ibx == 0) {<a name="line.9396"></a>
<span class="sourceLineNo">9397</span> ox = 0;<a name="line.9397"></a>
<span class="sourceLineNo">9398</span> } else {<a name="line.9398"></a>
<span class="sourceLineNo">9399</span> ox = (short) toLong(iax / ibx);<a name="line.9399"></a>
<span class="sourceLineNo">9400</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9400"></a>
<span class="sourceLineNo">9401</span> ox--;<a name="line.9401"></a>
<span class="sourceLineNo">9402</span> }<a name="line.9402"></a>
<span class="sourceLineNo">9403</span> }<a name="line.9403"></a>
<span class="sourceLineNo">9404</span> oai16data[it.oIndex] = ox;<a name="line.9404"></a>
<span class="sourceLineNo">9405</span> }<a name="line.9405"></a>
<span class="sourceLineNo">9406</span> } else {<a name="line.9406"></a>
<span class="sourceLineNo">9407</span> while (it.hasNext()) {<a name="line.9407"></a>
<span class="sourceLineNo">9408</span> final long iax = it.aLong;<a name="line.9408"></a>
<span class="sourceLineNo">9409</span> final long ibx = it.bLong;<a name="line.9409"></a>
<span class="sourceLineNo">9410</span> short ox;<a name="line.9410"></a>
<span class="sourceLineNo">9411</span> if (ibx == 0) {<a name="line.9411"></a>
<span class="sourceLineNo">9412</span> ox = 0;<a name="line.9412"></a>
<span class="sourceLineNo">9413</span> } else {<a name="line.9413"></a>
<span class="sourceLineNo">9414</span> ox = (short) (iax / ibx);<a name="line.9414"></a>
<span class="sourceLineNo">9415</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9415"></a>
<span class="sourceLineNo">9416</span> ox--;<a name="line.9416"></a>
<span class="sourceLineNo">9417</span> }<a name="line.9417"></a>
<span class="sourceLineNo">9418</span> }<a name="line.9418"></a>
<span class="sourceLineNo">9419</span> oai16data[it.oIndex] = ox;<a name="line.9419"></a>
<span class="sourceLineNo">9420</span> }<a name="line.9420"></a>
<span class="sourceLineNo">9421</span> }<a name="line.9421"></a>
<span class="sourceLineNo">9422</span> } else if (as &lt; bs) {<a name="line.9422"></a>
<span class="sourceLineNo">9423</span> if (it.isOutputDouble()) {<a name="line.9423"></a>
<span class="sourceLineNo">9424</span> while (it.hasNext()) {<a name="line.9424"></a>
<span class="sourceLineNo">9425</span> final double iax = it.aDouble;<a name="line.9425"></a>
<span class="sourceLineNo">9426</span> double ibx = it.bDouble;<a name="line.9426"></a>
<span class="sourceLineNo">9427</span> short ox;<a name="line.9427"></a>
<span class="sourceLineNo">9428</span> if (ibx == 0) {<a name="line.9428"></a>
<span class="sourceLineNo">9429</span> ox = 0;<a name="line.9429"></a>
<span class="sourceLineNo">9430</span> } else {<a name="line.9430"></a>
<span class="sourceLineNo">9431</span> ox = (short) toLong(iax / ibx);<a name="line.9431"></a>
<span class="sourceLineNo">9432</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9432"></a>
<span class="sourceLineNo">9433</span> ox--;<a name="line.9433"></a>
<span class="sourceLineNo">9434</span> }<a name="line.9434"></a>
<span class="sourceLineNo">9435</span> }<a name="line.9435"></a>
<span class="sourceLineNo">9436</span> oai16data[it.oIndex] = ox;<a name="line.9436"></a>
<span class="sourceLineNo">9437</span> for (int j = 1; j &lt; is; j++) {<a name="line.9437"></a>
<span class="sourceLineNo">9438</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.9438"></a>
<span class="sourceLineNo">9439</span> if (ibx == 0) {<a name="line.9439"></a>
<span class="sourceLineNo">9440</span> ox = 0;<a name="line.9440"></a>
<span class="sourceLineNo">9441</span> } else {<a name="line.9441"></a>
<span class="sourceLineNo">9442</span> ox = (short) toLong(iax / ibx);<a name="line.9442"></a>
<span class="sourceLineNo">9443</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9443"></a>
<span class="sourceLineNo">9444</span> ox--;<a name="line.9444"></a>
<span class="sourceLineNo">9445</span> }<a name="line.9445"></a>
<span class="sourceLineNo">9446</span> }<a name="line.9446"></a>
<span class="sourceLineNo">9447</span> oai16data[it.oIndex + j] = ox;<a name="line.9447"></a>
<span class="sourceLineNo">9448</span> }<a name="line.9448"></a>
<span class="sourceLineNo">9449</span> }<a name="line.9449"></a>
<span class="sourceLineNo">9450</span> } else {<a name="line.9450"></a>
<span class="sourceLineNo">9451</span> while (it.hasNext()) {<a name="line.9451"></a>
<span class="sourceLineNo">9452</span> final long iax = it.aLong;<a name="line.9452"></a>
<span class="sourceLineNo">9453</span> long ibx = it.bLong;<a name="line.9453"></a>
<span class="sourceLineNo">9454</span> short ox;<a name="line.9454"></a>
<span class="sourceLineNo">9455</span> if (ibx == 0) {<a name="line.9455"></a>
<span class="sourceLineNo">9456</span> ox = 0;<a name="line.9456"></a>
<span class="sourceLineNo">9457</span> } else {<a name="line.9457"></a>
<span class="sourceLineNo">9458</span> ox = (short) (iax / ibx);<a name="line.9458"></a>
<span class="sourceLineNo">9459</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9459"></a>
<span class="sourceLineNo">9460</span> ox--;<a name="line.9460"></a>
<span class="sourceLineNo">9461</span> }<a name="line.9461"></a>
<span class="sourceLineNo">9462</span> }<a name="line.9462"></a>
<span class="sourceLineNo">9463</span> oai16data[it.oIndex] = ox;<a name="line.9463"></a>
<span class="sourceLineNo">9464</span> for (int j = 1; j &lt; is; j++) {<a name="line.9464"></a>
<span class="sourceLineNo">9465</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.9465"></a>
<span class="sourceLineNo">9466</span> if (ibx == 0) {<a name="line.9466"></a>
<span class="sourceLineNo">9467</span> ox = 0;<a name="line.9467"></a>
<span class="sourceLineNo">9468</span> } else {<a name="line.9468"></a>
<span class="sourceLineNo">9469</span> ox = (short) (iax / ibx);<a name="line.9469"></a>
<span class="sourceLineNo">9470</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9470"></a>
<span class="sourceLineNo">9471</span> ox--;<a name="line.9471"></a>
<span class="sourceLineNo">9472</span> }<a name="line.9472"></a>
<span class="sourceLineNo">9473</span> }<a name="line.9473"></a>
<span class="sourceLineNo">9474</span> oai16data[it.oIndex + j] = ox;<a name="line.9474"></a>
<span class="sourceLineNo">9475</span> }<a name="line.9475"></a>
<span class="sourceLineNo">9476</span> }<a name="line.9476"></a>
<span class="sourceLineNo">9477</span> }<a name="line.9477"></a>
<span class="sourceLineNo">9478</span> } else if (as &gt; bs) {<a name="line.9478"></a>
<span class="sourceLineNo">9479</span> if (it.isOutputDouble()) {<a name="line.9479"></a>
<span class="sourceLineNo">9480</span> while (it.hasNext()) {<a name="line.9480"></a>
<span class="sourceLineNo">9481</span> double iax = it.aDouble;<a name="line.9481"></a>
<span class="sourceLineNo">9482</span> final double ibx = it.bDouble;<a name="line.9482"></a>
<span class="sourceLineNo">9483</span> short ox;<a name="line.9483"></a>
<span class="sourceLineNo">9484</span> if (ibx == 0) {<a name="line.9484"></a>
<span class="sourceLineNo">9485</span> ox = 0;<a name="line.9485"></a>
<span class="sourceLineNo">9486</span> } else {<a name="line.9486"></a>
<span class="sourceLineNo">9487</span> ox = (short) toLong(iax / ibx);<a name="line.9487"></a>
<span class="sourceLineNo">9488</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9488"></a>
<span class="sourceLineNo">9489</span> ox--;<a name="line.9489"></a>
<span class="sourceLineNo">9490</span> }<a name="line.9490"></a>
<span class="sourceLineNo">9491</span> }<a name="line.9491"></a>
<span class="sourceLineNo">9492</span> oai16data[it.oIndex] = ox;<a name="line.9492"></a>
<span class="sourceLineNo">9493</span> for (int j = 1; j &lt; is; j++) {<a name="line.9493"></a>
<span class="sourceLineNo">9494</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.9494"></a>
<span class="sourceLineNo">9495</span> if (ibx == 0) {<a name="line.9495"></a>
<span class="sourceLineNo">9496</span> ox = 0;<a name="line.9496"></a>
<span class="sourceLineNo">9497</span> } else {<a name="line.9497"></a>
<span class="sourceLineNo">9498</span> ox = (short) toLong(iax / ibx);<a name="line.9498"></a>
<span class="sourceLineNo">9499</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9499"></a>
<span class="sourceLineNo">9500</span> ox--;<a name="line.9500"></a>
<span class="sourceLineNo">9501</span> }<a name="line.9501"></a>
<span class="sourceLineNo">9502</span> }<a name="line.9502"></a>
<span class="sourceLineNo">9503</span> oai16data[it.oIndex + j] = ox;<a name="line.9503"></a>
<span class="sourceLineNo">9504</span> }<a name="line.9504"></a>
<span class="sourceLineNo">9505</span> }<a name="line.9505"></a>
<span class="sourceLineNo">9506</span> } else {<a name="line.9506"></a>
<span class="sourceLineNo">9507</span> while (it.hasNext()) {<a name="line.9507"></a>
<span class="sourceLineNo">9508</span> long iax = it.aLong;<a name="line.9508"></a>
<span class="sourceLineNo">9509</span> final long ibx = it.bLong;<a name="line.9509"></a>
<span class="sourceLineNo">9510</span> short ox;<a name="line.9510"></a>
<span class="sourceLineNo">9511</span> if (ibx == 0) {<a name="line.9511"></a>
<span class="sourceLineNo">9512</span> ox = 0;<a name="line.9512"></a>
<span class="sourceLineNo">9513</span> } else {<a name="line.9513"></a>
<span class="sourceLineNo">9514</span> ox = (short) (iax / ibx);<a name="line.9514"></a>
<span class="sourceLineNo">9515</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9515"></a>
<span class="sourceLineNo">9516</span> ox--;<a name="line.9516"></a>
<span class="sourceLineNo">9517</span> }<a name="line.9517"></a>
<span class="sourceLineNo">9518</span> }<a name="line.9518"></a>
<span class="sourceLineNo">9519</span> oai16data[it.oIndex] = ox;<a name="line.9519"></a>
<span class="sourceLineNo">9520</span> for (int j = 1; j &lt; is; j++) {<a name="line.9520"></a>
<span class="sourceLineNo">9521</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.9521"></a>
<span class="sourceLineNo">9522</span> if (ibx == 0) {<a name="line.9522"></a>
<span class="sourceLineNo">9523</span> ox = 0;<a name="line.9523"></a>
<span class="sourceLineNo">9524</span> } else {<a name="line.9524"></a>
<span class="sourceLineNo">9525</span> ox = (short) (iax / ibx);<a name="line.9525"></a>
<span class="sourceLineNo">9526</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9526"></a>
<span class="sourceLineNo">9527</span> ox--;<a name="line.9527"></a>
<span class="sourceLineNo">9528</span> }<a name="line.9528"></a>
<span class="sourceLineNo">9529</span> }<a name="line.9529"></a>
<span class="sourceLineNo">9530</span> oai16data[it.oIndex + j] = ox;<a name="line.9530"></a>
<span class="sourceLineNo">9531</span> }<a name="line.9531"></a>
<span class="sourceLineNo">9532</span> }<a name="line.9532"></a>
<span class="sourceLineNo">9533</span> }<a name="line.9533"></a>
<span class="sourceLineNo">9534</span> } else if (as == 1) {<a name="line.9534"></a>
<span class="sourceLineNo">9535</span> if (it.isOutputDouble()) {<a name="line.9535"></a>
<span class="sourceLineNo">9536</span> while (it.hasNext()) {<a name="line.9536"></a>
<span class="sourceLineNo">9537</span> final double iax = it.aDouble;<a name="line.9537"></a>
<span class="sourceLineNo">9538</span> final double ibx = it.bDouble;<a name="line.9538"></a>
<span class="sourceLineNo">9539</span> short ox;<a name="line.9539"></a>
<span class="sourceLineNo">9540</span> if (ibx == 0) {<a name="line.9540"></a>
<span class="sourceLineNo">9541</span> ox = 0;<a name="line.9541"></a>
<span class="sourceLineNo">9542</span> } else {<a name="line.9542"></a>
<span class="sourceLineNo">9543</span> ox = (short) toLong(iax / ibx);<a name="line.9543"></a>
<span class="sourceLineNo">9544</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9544"></a>
<span class="sourceLineNo">9545</span> ox--;<a name="line.9545"></a>
<span class="sourceLineNo">9546</span> }<a name="line.9546"></a>
<span class="sourceLineNo">9547</span> }<a name="line.9547"></a>
<span class="sourceLineNo">9548</span> for (int j = 0; j &lt; is; j++) {<a name="line.9548"></a>
<span class="sourceLineNo">9549</span> oai16data[it.oIndex + j] = ox;<a name="line.9549"></a>
<span class="sourceLineNo">9550</span> }<a name="line.9550"></a>
<span class="sourceLineNo">9551</span> }<a name="line.9551"></a>
<span class="sourceLineNo">9552</span> } else {<a name="line.9552"></a>
<span class="sourceLineNo">9553</span> while (it.hasNext()) {<a name="line.9553"></a>
<span class="sourceLineNo">9554</span> final long iax = it.aLong;<a name="line.9554"></a>
<span class="sourceLineNo">9555</span> final long ibx = it.bLong;<a name="line.9555"></a>
<span class="sourceLineNo">9556</span> short ox;<a name="line.9556"></a>
<span class="sourceLineNo">9557</span> if (ibx == 0) {<a name="line.9557"></a>
<span class="sourceLineNo">9558</span> ox = 0;<a name="line.9558"></a>
<span class="sourceLineNo">9559</span> } else {<a name="line.9559"></a>
<span class="sourceLineNo">9560</span> ox = (short) (iax / ibx);<a name="line.9560"></a>
<span class="sourceLineNo">9561</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9561"></a>
<span class="sourceLineNo">9562</span> ox--;<a name="line.9562"></a>
<span class="sourceLineNo">9563</span> }<a name="line.9563"></a>
<span class="sourceLineNo">9564</span> }<a name="line.9564"></a>
<span class="sourceLineNo">9565</span> for (int j = 0; j &lt; is; j++) {<a name="line.9565"></a>
<span class="sourceLineNo">9566</span> oai16data[it.oIndex + j] = ox;<a name="line.9566"></a>
<span class="sourceLineNo">9567</span> }<a name="line.9567"></a>
<span class="sourceLineNo">9568</span> }<a name="line.9568"></a>
<span class="sourceLineNo">9569</span> }<a name="line.9569"></a>
<span class="sourceLineNo">9570</span> } else {<a name="line.9570"></a>
<span class="sourceLineNo">9571</span> if (it.isOutputDouble()) {<a name="line.9571"></a>
<span class="sourceLineNo">9572</span> while (it.hasNext()) {<a name="line.9572"></a>
<span class="sourceLineNo">9573</span> double iax = it.aDouble;<a name="line.9573"></a>
<span class="sourceLineNo">9574</span> double ibx = it.bDouble;<a name="line.9574"></a>
<span class="sourceLineNo">9575</span> short ox;<a name="line.9575"></a>
<span class="sourceLineNo">9576</span> if (ibx == 0) {<a name="line.9576"></a>
<span class="sourceLineNo">9577</span> ox = 0;<a name="line.9577"></a>
<span class="sourceLineNo">9578</span> } else {<a name="line.9578"></a>
<span class="sourceLineNo">9579</span> ox = (short) toLong(iax / ibx);<a name="line.9579"></a>
<span class="sourceLineNo">9580</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9580"></a>
<span class="sourceLineNo">9581</span> ox--;<a name="line.9581"></a>
<span class="sourceLineNo">9582</span> }<a name="line.9582"></a>
<span class="sourceLineNo">9583</span> }<a name="line.9583"></a>
<span class="sourceLineNo">9584</span> oai16data[it.oIndex] = ox;<a name="line.9584"></a>
<span class="sourceLineNo">9585</span> for (int j = 1; j &lt; is; j++) {<a name="line.9585"></a>
<span class="sourceLineNo">9586</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.9586"></a>
<span class="sourceLineNo">9587</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.9587"></a>
<span class="sourceLineNo">9588</span> if (ibx == 0) {<a name="line.9588"></a>
<span class="sourceLineNo">9589</span> ox = 0;<a name="line.9589"></a>
<span class="sourceLineNo">9590</span> } else {<a name="line.9590"></a>
<span class="sourceLineNo">9591</span> ox = (short) toLong(iax / ibx);<a name="line.9591"></a>
<span class="sourceLineNo">9592</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9592"></a>
<span class="sourceLineNo">9593</span> ox--;<a name="line.9593"></a>
<span class="sourceLineNo">9594</span> }<a name="line.9594"></a>
<span class="sourceLineNo">9595</span> }<a name="line.9595"></a>
<span class="sourceLineNo">9596</span> oai16data[it.oIndex + j] = ox;<a name="line.9596"></a>
<span class="sourceLineNo">9597</span> }<a name="line.9597"></a>
<span class="sourceLineNo">9598</span> }<a name="line.9598"></a>
<span class="sourceLineNo">9599</span> } else {<a name="line.9599"></a>
<span class="sourceLineNo">9600</span> while (it.hasNext()) {<a name="line.9600"></a>
<span class="sourceLineNo">9601</span> long iax = it.aLong;<a name="line.9601"></a>
<span class="sourceLineNo">9602</span> long ibx = it.bLong;<a name="line.9602"></a>
<span class="sourceLineNo">9603</span> short ox;<a name="line.9603"></a>
<span class="sourceLineNo">9604</span> if (ibx == 0) {<a name="line.9604"></a>
<span class="sourceLineNo">9605</span> ox = 0;<a name="line.9605"></a>
<span class="sourceLineNo">9606</span> } else {<a name="line.9606"></a>
<span class="sourceLineNo">9607</span> ox = (short) (iax / ibx);<a name="line.9607"></a>
<span class="sourceLineNo">9608</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9608"></a>
<span class="sourceLineNo">9609</span> ox--;<a name="line.9609"></a>
<span class="sourceLineNo">9610</span> }<a name="line.9610"></a>
<span class="sourceLineNo">9611</span> }<a name="line.9611"></a>
<span class="sourceLineNo">9612</span> oai16data[it.oIndex] = ox;<a name="line.9612"></a>
<span class="sourceLineNo">9613</span> for (int j = 1; j &lt; is; j++) {<a name="line.9613"></a>
<span class="sourceLineNo">9614</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.9614"></a>
<span class="sourceLineNo">9615</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.9615"></a>
<span class="sourceLineNo">9616</span> if (ibx == 0) {<a name="line.9616"></a>
<span class="sourceLineNo">9617</span> ox = 0;<a name="line.9617"></a>
<span class="sourceLineNo">9618</span> } else {<a name="line.9618"></a>
<span class="sourceLineNo">9619</span> ox = (short) (iax / ibx);<a name="line.9619"></a>
<span class="sourceLineNo">9620</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9620"></a>
<span class="sourceLineNo">9621</span> ox--;<a name="line.9621"></a>
<span class="sourceLineNo">9622</span> }<a name="line.9622"></a>
<span class="sourceLineNo">9623</span> }<a name="line.9623"></a>
<span class="sourceLineNo">9624</span> oai16data[it.oIndex + j] = ox;<a name="line.9624"></a>
<span class="sourceLineNo">9625</span> }<a name="line.9625"></a>
<span class="sourceLineNo">9626</span> }<a name="line.9626"></a>
<span class="sourceLineNo">9627</span> }<a name="line.9627"></a>
<span class="sourceLineNo">9628</span> }<a name="line.9628"></a>
<span class="sourceLineNo">9629</span> break;<a name="line.9629"></a>
<span class="sourceLineNo">9630</span> case Dataset.ARRAYINT64:<a name="line.9630"></a>
<span class="sourceLineNo">9631</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.9631"></a>
<span class="sourceLineNo">9632</span> if (is == 1) {<a name="line.9632"></a>
<span class="sourceLineNo">9633</span> if (it.isOutputDouble()) {<a name="line.9633"></a>
<span class="sourceLineNo">9634</span> while (it.hasNext()) {<a name="line.9634"></a>
<span class="sourceLineNo">9635</span> final double iax = it.aDouble;<a name="line.9635"></a>
<span class="sourceLineNo">9636</span> final double ibx = it.bDouble;<a name="line.9636"></a>
<span class="sourceLineNo">9637</span> long ox;<a name="line.9637"></a>
<span class="sourceLineNo">9638</span> if (ibx == 0) {<a name="line.9638"></a>
<span class="sourceLineNo">9639</span> ox = 0;<a name="line.9639"></a>
<span class="sourceLineNo">9640</span> } else {<a name="line.9640"></a>
<span class="sourceLineNo">9641</span> ox = toLong(iax / ibx);<a name="line.9641"></a>
<span class="sourceLineNo">9642</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9642"></a>
<span class="sourceLineNo">9643</span> ox--;<a name="line.9643"></a>
<span class="sourceLineNo">9644</span> }<a name="line.9644"></a>
<span class="sourceLineNo">9645</span> }<a name="line.9645"></a>
<span class="sourceLineNo">9646</span> oai64data[it.oIndex] = ox;<a name="line.9646"></a>
<span class="sourceLineNo">9647</span> }<a name="line.9647"></a>
<span class="sourceLineNo">9648</span> } else {<a name="line.9648"></a>
<span class="sourceLineNo">9649</span> while (it.hasNext()) {<a name="line.9649"></a>
<span class="sourceLineNo">9650</span> final long iax = it.aLong;<a name="line.9650"></a>
<span class="sourceLineNo">9651</span> final long ibx = it.bLong;<a name="line.9651"></a>
<span class="sourceLineNo">9652</span> long ox;<a name="line.9652"></a>
<span class="sourceLineNo">9653</span> if (ibx == 0) {<a name="line.9653"></a>
<span class="sourceLineNo">9654</span> ox = 0;<a name="line.9654"></a>
<span class="sourceLineNo">9655</span> } else {<a name="line.9655"></a>
<span class="sourceLineNo">9656</span> ox = (iax / ibx);<a name="line.9656"></a>
<span class="sourceLineNo">9657</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9657"></a>
<span class="sourceLineNo">9658</span> ox--;<a name="line.9658"></a>
<span class="sourceLineNo">9659</span> }<a name="line.9659"></a>
<span class="sourceLineNo">9660</span> }<a name="line.9660"></a>
<span class="sourceLineNo">9661</span> oai64data[it.oIndex] = ox;<a name="line.9661"></a>
<span class="sourceLineNo">9662</span> }<a name="line.9662"></a>
<span class="sourceLineNo">9663</span> }<a name="line.9663"></a>
<span class="sourceLineNo">9664</span> } else if (as &lt; bs) {<a name="line.9664"></a>
<span class="sourceLineNo">9665</span> if (it.isOutputDouble()) {<a name="line.9665"></a>
<span class="sourceLineNo">9666</span> while (it.hasNext()) {<a name="line.9666"></a>
<span class="sourceLineNo">9667</span> final double iax = it.aDouble;<a name="line.9667"></a>
<span class="sourceLineNo">9668</span> double ibx = it.bDouble;<a name="line.9668"></a>
<span class="sourceLineNo">9669</span> long ox;<a name="line.9669"></a>
<span class="sourceLineNo">9670</span> if (ibx == 0) {<a name="line.9670"></a>
<span class="sourceLineNo">9671</span> ox = 0;<a name="line.9671"></a>
<span class="sourceLineNo">9672</span> } else {<a name="line.9672"></a>
<span class="sourceLineNo">9673</span> ox = toLong(iax / ibx);<a name="line.9673"></a>
<span class="sourceLineNo">9674</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9674"></a>
<span class="sourceLineNo">9675</span> ox--;<a name="line.9675"></a>
<span class="sourceLineNo">9676</span> }<a name="line.9676"></a>
<span class="sourceLineNo">9677</span> }<a name="line.9677"></a>
<span class="sourceLineNo">9678</span> oai64data[it.oIndex] = ox;<a name="line.9678"></a>
<span class="sourceLineNo">9679</span> for (int j = 1; j &lt; is; j++) {<a name="line.9679"></a>
<span class="sourceLineNo">9680</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.9680"></a>
<span class="sourceLineNo">9681</span> if (ibx == 0) {<a name="line.9681"></a>
<span class="sourceLineNo">9682</span> ox = 0;<a name="line.9682"></a>
<span class="sourceLineNo">9683</span> } else {<a name="line.9683"></a>
<span class="sourceLineNo">9684</span> ox = toLong(iax / ibx);<a name="line.9684"></a>
<span class="sourceLineNo">9685</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9685"></a>
<span class="sourceLineNo">9686</span> ox--;<a name="line.9686"></a>
<span class="sourceLineNo">9687</span> }<a name="line.9687"></a>
<span class="sourceLineNo">9688</span> }<a name="line.9688"></a>
<span class="sourceLineNo">9689</span> oai64data[it.oIndex + j] = ox;<a name="line.9689"></a>
<span class="sourceLineNo">9690</span> }<a name="line.9690"></a>
<span class="sourceLineNo">9691</span> }<a name="line.9691"></a>
<span class="sourceLineNo">9692</span> } else {<a name="line.9692"></a>
<span class="sourceLineNo">9693</span> while (it.hasNext()) {<a name="line.9693"></a>
<span class="sourceLineNo">9694</span> final long iax = it.aLong;<a name="line.9694"></a>
<span class="sourceLineNo">9695</span> long ibx = it.bLong;<a name="line.9695"></a>
<span class="sourceLineNo">9696</span> long ox;<a name="line.9696"></a>
<span class="sourceLineNo">9697</span> if (ibx == 0) {<a name="line.9697"></a>
<span class="sourceLineNo">9698</span> ox = 0;<a name="line.9698"></a>
<span class="sourceLineNo">9699</span> } else {<a name="line.9699"></a>
<span class="sourceLineNo">9700</span> ox = (iax / ibx);<a name="line.9700"></a>
<span class="sourceLineNo">9701</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9701"></a>
<span class="sourceLineNo">9702</span> ox--;<a name="line.9702"></a>
<span class="sourceLineNo">9703</span> }<a name="line.9703"></a>
<span class="sourceLineNo">9704</span> }<a name="line.9704"></a>
<span class="sourceLineNo">9705</span> oai64data[it.oIndex] = ox;<a name="line.9705"></a>
<span class="sourceLineNo">9706</span> for (int j = 1; j &lt; is; j++) {<a name="line.9706"></a>
<span class="sourceLineNo">9707</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.9707"></a>
<span class="sourceLineNo">9708</span> if (ibx == 0) {<a name="line.9708"></a>
<span class="sourceLineNo">9709</span> ox = 0;<a name="line.9709"></a>
<span class="sourceLineNo">9710</span> } else {<a name="line.9710"></a>
<span class="sourceLineNo">9711</span> ox = (iax / ibx);<a name="line.9711"></a>
<span class="sourceLineNo">9712</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9712"></a>
<span class="sourceLineNo">9713</span> ox--;<a name="line.9713"></a>
<span class="sourceLineNo">9714</span> }<a name="line.9714"></a>
<span class="sourceLineNo">9715</span> }<a name="line.9715"></a>
<span class="sourceLineNo">9716</span> oai64data[it.oIndex + j] = ox;<a name="line.9716"></a>
<span class="sourceLineNo">9717</span> }<a name="line.9717"></a>
<span class="sourceLineNo">9718</span> }<a name="line.9718"></a>
<span class="sourceLineNo">9719</span> }<a name="line.9719"></a>
<span class="sourceLineNo">9720</span> } else if (as &gt; bs) {<a name="line.9720"></a>
<span class="sourceLineNo">9721</span> if (it.isOutputDouble()) {<a name="line.9721"></a>
<span class="sourceLineNo">9722</span> while (it.hasNext()) {<a name="line.9722"></a>
<span class="sourceLineNo">9723</span> double iax = it.aDouble;<a name="line.9723"></a>
<span class="sourceLineNo">9724</span> final double ibx = it.bDouble;<a name="line.9724"></a>
<span class="sourceLineNo">9725</span> long ox;<a name="line.9725"></a>
<span class="sourceLineNo">9726</span> if (ibx == 0) {<a name="line.9726"></a>
<span class="sourceLineNo">9727</span> ox = 0;<a name="line.9727"></a>
<span class="sourceLineNo">9728</span> } else {<a name="line.9728"></a>
<span class="sourceLineNo">9729</span> ox = toLong(iax / ibx);<a name="line.9729"></a>
<span class="sourceLineNo">9730</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9730"></a>
<span class="sourceLineNo">9731</span> ox--;<a name="line.9731"></a>
<span class="sourceLineNo">9732</span> }<a name="line.9732"></a>
<span class="sourceLineNo">9733</span> }<a name="line.9733"></a>
<span class="sourceLineNo">9734</span> oai64data[it.oIndex] = ox;<a name="line.9734"></a>
<span class="sourceLineNo">9735</span> for (int j = 1; j &lt; is; j++) {<a name="line.9735"></a>
<span class="sourceLineNo">9736</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.9736"></a>
<span class="sourceLineNo">9737</span> if (ibx == 0) {<a name="line.9737"></a>
<span class="sourceLineNo">9738</span> ox = 0;<a name="line.9738"></a>
<span class="sourceLineNo">9739</span> } else {<a name="line.9739"></a>
<span class="sourceLineNo">9740</span> ox = toLong(iax / ibx);<a name="line.9740"></a>
<span class="sourceLineNo">9741</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9741"></a>
<span class="sourceLineNo">9742</span> ox--;<a name="line.9742"></a>
<span class="sourceLineNo">9743</span> }<a name="line.9743"></a>
<span class="sourceLineNo">9744</span> }<a name="line.9744"></a>
<span class="sourceLineNo">9745</span> oai64data[it.oIndex + j] = ox;<a name="line.9745"></a>
<span class="sourceLineNo">9746</span> }<a name="line.9746"></a>
<span class="sourceLineNo">9747</span> }<a name="line.9747"></a>
<span class="sourceLineNo">9748</span> } else {<a name="line.9748"></a>
<span class="sourceLineNo">9749</span> while (it.hasNext()) {<a name="line.9749"></a>
<span class="sourceLineNo">9750</span> long iax = it.aLong;<a name="line.9750"></a>
<span class="sourceLineNo">9751</span> final long ibx = it.bLong;<a name="line.9751"></a>
<span class="sourceLineNo">9752</span> long ox;<a name="line.9752"></a>
<span class="sourceLineNo">9753</span> if (ibx == 0) {<a name="line.9753"></a>
<span class="sourceLineNo">9754</span> ox = 0;<a name="line.9754"></a>
<span class="sourceLineNo">9755</span> } else {<a name="line.9755"></a>
<span class="sourceLineNo">9756</span> ox = (iax / ibx);<a name="line.9756"></a>
<span class="sourceLineNo">9757</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9757"></a>
<span class="sourceLineNo">9758</span> ox--;<a name="line.9758"></a>
<span class="sourceLineNo">9759</span> }<a name="line.9759"></a>
<span class="sourceLineNo">9760</span> }<a name="line.9760"></a>
<span class="sourceLineNo">9761</span> oai64data[it.oIndex] = ox;<a name="line.9761"></a>
<span class="sourceLineNo">9762</span> for (int j = 1; j &lt; is; j++) {<a name="line.9762"></a>
<span class="sourceLineNo">9763</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.9763"></a>
<span class="sourceLineNo">9764</span> if (ibx == 0) {<a name="line.9764"></a>
<span class="sourceLineNo">9765</span> ox = 0;<a name="line.9765"></a>
<span class="sourceLineNo">9766</span> } else {<a name="line.9766"></a>
<span class="sourceLineNo">9767</span> ox = (iax / ibx);<a name="line.9767"></a>
<span class="sourceLineNo">9768</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9768"></a>
<span class="sourceLineNo">9769</span> ox--;<a name="line.9769"></a>
<span class="sourceLineNo">9770</span> }<a name="line.9770"></a>
<span class="sourceLineNo">9771</span> }<a name="line.9771"></a>
<span class="sourceLineNo">9772</span> oai64data[it.oIndex + j] = ox;<a name="line.9772"></a>
<span class="sourceLineNo">9773</span> }<a name="line.9773"></a>
<span class="sourceLineNo">9774</span> }<a name="line.9774"></a>
<span class="sourceLineNo">9775</span> }<a name="line.9775"></a>
<span class="sourceLineNo">9776</span> } else if (as == 1) {<a name="line.9776"></a>
<span class="sourceLineNo">9777</span> if (it.isOutputDouble()) {<a name="line.9777"></a>
<span class="sourceLineNo">9778</span> while (it.hasNext()) {<a name="line.9778"></a>
<span class="sourceLineNo">9779</span> final double iax = it.aDouble;<a name="line.9779"></a>
<span class="sourceLineNo">9780</span> final double ibx = it.bDouble;<a name="line.9780"></a>
<span class="sourceLineNo">9781</span> long ox;<a name="line.9781"></a>
<span class="sourceLineNo">9782</span> if (ibx == 0) {<a name="line.9782"></a>
<span class="sourceLineNo">9783</span> ox = 0;<a name="line.9783"></a>
<span class="sourceLineNo">9784</span> } else {<a name="line.9784"></a>
<span class="sourceLineNo">9785</span> ox = toLong(iax / ibx);<a name="line.9785"></a>
<span class="sourceLineNo">9786</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9786"></a>
<span class="sourceLineNo">9787</span> ox--;<a name="line.9787"></a>
<span class="sourceLineNo">9788</span> }<a name="line.9788"></a>
<span class="sourceLineNo">9789</span> }<a name="line.9789"></a>
<span class="sourceLineNo">9790</span> for (int j = 0; j &lt; is; j++) {<a name="line.9790"></a>
<span class="sourceLineNo">9791</span> oai64data[it.oIndex + j] = ox;<a name="line.9791"></a>
<span class="sourceLineNo">9792</span> }<a name="line.9792"></a>
<span class="sourceLineNo">9793</span> }<a name="line.9793"></a>
<span class="sourceLineNo">9794</span> } else {<a name="line.9794"></a>
<span class="sourceLineNo">9795</span> while (it.hasNext()) {<a name="line.9795"></a>
<span class="sourceLineNo">9796</span> final long iax = it.aLong;<a name="line.9796"></a>
<span class="sourceLineNo">9797</span> final long ibx = it.bLong;<a name="line.9797"></a>
<span class="sourceLineNo">9798</span> long ox;<a name="line.9798"></a>
<span class="sourceLineNo">9799</span> if (ibx == 0) {<a name="line.9799"></a>
<span class="sourceLineNo">9800</span> ox = 0;<a name="line.9800"></a>
<span class="sourceLineNo">9801</span> } else {<a name="line.9801"></a>
<span class="sourceLineNo">9802</span> ox = (iax / ibx);<a name="line.9802"></a>
<span class="sourceLineNo">9803</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9803"></a>
<span class="sourceLineNo">9804</span> ox--;<a name="line.9804"></a>
<span class="sourceLineNo">9805</span> }<a name="line.9805"></a>
<span class="sourceLineNo">9806</span> }<a name="line.9806"></a>
<span class="sourceLineNo">9807</span> for (int j = 0; j &lt; is; j++) {<a name="line.9807"></a>
<span class="sourceLineNo">9808</span> oai64data[it.oIndex + j] = ox;<a name="line.9808"></a>
<span class="sourceLineNo">9809</span> }<a name="line.9809"></a>
<span class="sourceLineNo">9810</span> }<a name="line.9810"></a>
<span class="sourceLineNo">9811</span> }<a name="line.9811"></a>
<span class="sourceLineNo">9812</span> } else {<a name="line.9812"></a>
<span class="sourceLineNo">9813</span> if (it.isOutputDouble()) {<a name="line.9813"></a>
<span class="sourceLineNo">9814</span> while (it.hasNext()) {<a name="line.9814"></a>
<span class="sourceLineNo">9815</span> double iax = it.aDouble;<a name="line.9815"></a>
<span class="sourceLineNo">9816</span> double ibx = it.bDouble;<a name="line.9816"></a>
<span class="sourceLineNo">9817</span> long ox;<a name="line.9817"></a>
<span class="sourceLineNo">9818</span> if (ibx == 0) {<a name="line.9818"></a>
<span class="sourceLineNo">9819</span> ox = 0;<a name="line.9819"></a>
<span class="sourceLineNo">9820</span> } else {<a name="line.9820"></a>
<span class="sourceLineNo">9821</span> ox = toLong(iax / ibx);<a name="line.9821"></a>
<span class="sourceLineNo">9822</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9822"></a>
<span class="sourceLineNo">9823</span> ox--;<a name="line.9823"></a>
<span class="sourceLineNo">9824</span> }<a name="line.9824"></a>
<span class="sourceLineNo">9825</span> }<a name="line.9825"></a>
<span class="sourceLineNo">9826</span> oai64data[it.oIndex] = ox;<a name="line.9826"></a>
<span class="sourceLineNo">9827</span> for (int j = 1; j &lt; is; j++) {<a name="line.9827"></a>
<span class="sourceLineNo">9828</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.9828"></a>
<span class="sourceLineNo">9829</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.9829"></a>
<span class="sourceLineNo">9830</span> if (ibx == 0) {<a name="line.9830"></a>
<span class="sourceLineNo">9831</span> ox = 0;<a name="line.9831"></a>
<span class="sourceLineNo">9832</span> } else {<a name="line.9832"></a>
<span class="sourceLineNo">9833</span> ox = toLong(iax / ibx);<a name="line.9833"></a>
<span class="sourceLineNo">9834</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9834"></a>
<span class="sourceLineNo">9835</span> ox--;<a name="line.9835"></a>
<span class="sourceLineNo">9836</span> }<a name="line.9836"></a>
<span class="sourceLineNo">9837</span> }<a name="line.9837"></a>
<span class="sourceLineNo">9838</span> oai64data[it.oIndex + j] = ox;<a name="line.9838"></a>
<span class="sourceLineNo">9839</span> }<a name="line.9839"></a>
<span class="sourceLineNo">9840</span> }<a name="line.9840"></a>
<span class="sourceLineNo">9841</span> } else {<a name="line.9841"></a>
<span class="sourceLineNo">9842</span> while (it.hasNext()) {<a name="line.9842"></a>
<span class="sourceLineNo">9843</span> long iax = it.aLong;<a name="line.9843"></a>
<span class="sourceLineNo">9844</span> long ibx = it.bLong;<a name="line.9844"></a>
<span class="sourceLineNo">9845</span> long ox;<a name="line.9845"></a>
<span class="sourceLineNo">9846</span> if (ibx == 0) {<a name="line.9846"></a>
<span class="sourceLineNo">9847</span> ox = 0;<a name="line.9847"></a>
<span class="sourceLineNo">9848</span> } else {<a name="line.9848"></a>
<span class="sourceLineNo">9849</span> ox = (iax / ibx);<a name="line.9849"></a>
<span class="sourceLineNo">9850</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9850"></a>
<span class="sourceLineNo">9851</span> ox--;<a name="line.9851"></a>
<span class="sourceLineNo">9852</span> }<a name="line.9852"></a>
<span class="sourceLineNo">9853</span> }<a name="line.9853"></a>
<span class="sourceLineNo">9854</span> oai64data[it.oIndex] = ox;<a name="line.9854"></a>
<span class="sourceLineNo">9855</span> for (int j = 1; j &lt; is; j++) {<a name="line.9855"></a>
<span class="sourceLineNo">9856</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.9856"></a>
<span class="sourceLineNo">9857</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.9857"></a>
<span class="sourceLineNo">9858</span> if (ibx == 0) {<a name="line.9858"></a>
<span class="sourceLineNo">9859</span> ox = 0;<a name="line.9859"></a>
<span class="sourceLineNo">9860</span> } else {<a name="line.9860"></a>
<span class="sourceLineNo">9861</span> ox = (iax / ibx);<a name="line.9861"></a>
<span class="sourceLineNo">9862</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9862"></a>
<span class="sourceLineNo">9863</span> ox--;<a name="line.9863"></a>
<span class="sourceLineNo">9864</span> }<a name="line.9864"></a>
<span class="sourceLineNo">9865</span> }<a name="line.9865"></a>
<span class="sourceLineNo">9866</span> oai64data[it.oIndex + j] = ox;<a name="line.9866"></a>
<span class="sourceLineNo">9867</span> }<a name="line.9867"></a>
<span class="sourceLineNo">9868</span> }<a name="line.9868"></a>
<span class="sourceLineNo">9869</span> }<a name="line.9869"></a>
<span class="sourceLineNo">9870</span> }<a name="line.9870"></a>
<span class="sourceLineNo">9871</span> break;<a name="line.9871"></a>
<span class="sourceLineNo">9872</span> case Dataset.ARRAYINT32:<a name="line.9872"></a>
<span class="sourceLineNo">9873</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.9873"></a>
<span class="sourceLineNo">9874</span> if (is == 1) {<a name="line.9874"></a>
<span class="sourceLineNo">9875</span> if (it.isOutputDouble()) {<a name="line.9875"></a>
<span class="sourceLineNo">9876</span> while (it.hasNext()) {<a name="line.9876"></a>
<span class="sourceLineNo">9877</span> final double iax = it.aDouble;<a name="line.9877"></a>
<span class="sourceLineNo">9878</span> final double ibx = it.bDouble;<a name="line.9878"></a>
<span class="sourceLineNo">9879</span> int ox;<a name="line.9879"></a>
<span class="sourceLineNo">9880</span> if (ibx == 0) {<a name="line.9880"></a>
<span class="sourceLineNo">9881</span> ox = 0;<a name="line.9881"></a>
<span class="sourceLineNo">9882</span> } else {<a name="line.9882"></a>
<span class="sourceLineNo">9883</span> ox = (int) toLong(iax / ibx);<a name="line.9883"></a>
<span class="sourceLineNo">9884</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9884"></a>
<span class="sourceLineNo">9885</span> ox--;<a name="line.9885"></a>
<span class="sourceLineNo">9886</span> }<a name="line.9886"></a>
<span class="sourceLineNo">9887</span> }<a name="line.9887"></a>
<span class="sourceLineNo">9888</span> oai32data[it.oIndex] = ox;<a name="line.9888"></a>
<span class="sourceLineNo">9889</span> }<a name="line.9889"></a>
<span class="sourceLineNo">9890</span> } else {<a name="line.9890"></a>
<span class="sourceLineNo">9891</span> while (it.hasNext()) {<a name="line.9891"></a>
<span class="sourceLineNo">9892</span> final long iax = it.aLong;<a name="line.9892"></a>
<span class="sourceLineNo">9893</span> final long ibx = it.bLong;<a name="line.9893"></a>
<span class="sourceLineNo">9894</span> int ox;<a name="line.9894"></a>
<span class="sourceLineNo">9895</span> if (ibx == 0) {<a name="line.9895"></a>
<span class="sourceLineNo">9896</span> ox = 0;<a name="line.9896"></a>
<span class="sourceLineNo">9897</span> } else {<a name="line.9897"></a>
<span class="sourceLineNo">9898</span> ox = (int) (iax / ibx);<a name="line.9898"></a>
<span class="sourceLineNo">9899</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9899"></a>
<span class="sourceLineNo">9900</span> ox--;<a name="line.9900"></a>
<span class="sourceLineNo">9901</span> }<a name="line.9901"></a>
<span class="sourceLineNo">9902</span> }<a name="line.9902"></a>
<span class="sourceLineNo">9903</span> oai32data[it.oIndex] = ox;<a name="line.9903"></a>
<span class="sourceLineNo">9904</span> }<a name="line.9904"></a>
<span class="sourceLineNo">9905</span> }<a name="line.9905"></a>
<span class="sourceLineNo">9906</span> } else if (as &lt; bs) {<a name="line.9906"></a>
<span class="sourceLineNo">9907</span> if (it.isOutputDouble()) {<a name="line.9907"></a>
<span class="sourceLineNo">9908</span> while (it.hasNext()) {<a name="line.9908"></a>
<span class="sourceLineNo">9909</span> final double iax = it.aDouble;<a name="line.9909"></a>
<span class="sourceLineNo">9910</span> double ibx = it.bDouble;<a name="line.9910"></a>
<span class="sourceLineNo">9911</span> int ox;<a name="line.9911"></a>
<span class="sourceLineNo">9912</span> if (ibx == 0) {<a name="line.9912"></a>
<span class="sourceLineNo">9913</span> ox = 0;<a name="line.9913"></a>
<span class="sourceLineNo">9914</span> } else {<a name="line.9914"></a>
<span class="sourceLineNo">9915</span> ox = (int) toLong(iax / ibx);<a name="line.9915"></a>
<span class="sourceLineNo">9916</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9916"></a>
<span class="sourceLineNo">9917</span> ox--;<a name="line.9917"></a>
<span class="sourceLineNo">9918</span> }<a name="line.9918"></a>
<span class="sourceLineNo">9919</span> }<a name="line.9919"></a>
<span class="sourceLineNo">9920</span> oai32data[it.oIndex] = ox;<a name="line.9920"></a>
<span class="sourceLineNo">9921</span> for (int j = 1; j &lt; is; j++) {<a name="line.9921"></a>
<span class="sourceLineNo">9922</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.9922"></a>
<span class="sourceLineNo">9923</span> if (ibx == 0) {<a name="line.9923"></a>
<span class="sourceLineNo">9924</span> ox = 0;<a name="line.9924"></a>
<span class="sourceLineNo">9925</span> } else {<a name="line.9925"></a>
<span class="sourceLineNo">9926</span> ox = (int) toLong(iax / ibx);<a name="line.9926"></a>
<span class="sourceLineNo">9927</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9927"></a>
<span class="sourceLineNo">9928</span> ox--;<a name="line.9928"></a>
<span class="sourceLineNo">9929</span> }<a name="line.9929"></a>
<span class="sourceLineNo">9930</span> }<a name="line.9930"></a>
<span class="sourceLineNo">9931</span> oai32data[it.oIndex + j] = ox;<a name="line.9931"></a>
<span class="sourceLineNo">9932</span> }<a name="line.9932"></a>
<span class="sourceLineNo">9933</span> }<a name="line.9933"></a>
<span class="sourceLineNo">9934</span> } else {<a name="line.9934"></a>
<span class="sourceLineNo">9935</span> while (it.hasNext()) {<a name="line.9935"></a>
<span class="sourceLineNo">9936</span> final long iax = it.aLong;<a name="line.9936"></a>
<span class="sourceLineNo">9937</span> long ibx = it.bLong;<a name="line.9937"></a>
<span class="sourceLineNo">9938</span> int ox;<a name="line.9938"></a>
<span class="sourceLineNo">9939</span> if (ibx == 0) {<a name="line.9939"></a>
<span class="sourceLineNo">9940</span> ox = 0;<a name="line.9940"></a>
<span class="sourceLineNo">9941</span> } else {<a name="line.9941"></a>
<span class="sourceLineNo">9942</span> ox = (int) (iax / ibx);<a name="line.9942"></a>
<span class="sourceLineNo">9943</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9943"></a>
<span class="sourceLineNo">9944</span> ox--;<a name="line.9944"></a>
<span class="sourceLineNo">9945</span> }<a name="line.9945"></a>
<span class="sourceLineNo">9946</span> }<a name="line.9946"></a>
<span class="sourceLineNo">9947</span> oai32data[it.oIndex] = ox;<a name="line.9947"></a>
<span class="sourceLineNo">9948</span> for (int j = 1; j &lt; is; j++) {<a name="line.9948"></a>
<span class="sourceLineNo">9949</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.9949"></a>
<span class="sourceLineNo">9950</span> if (ibx == 0) {<a name="line.9950"></a>
<span class="sourceLineNo">9951</span> ox = 0;<a name="line.9951"></a>
<span class="sourceLineNo">9952</span> } else {<a name="line.9952"></a>
<span class="sourceLineNo">9953</span> ox = (int) (iax / ibx);<a name="line.9953"></a>
<span class="sourceLineNo">9954</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9954"></a>
<span class="sourceLineNo">9955</span> ox--;<a name="line.9955"></a>
<span class="sourceLineNo">9956</span> }<a name="line.9956"></a>
<span class="sourceLineNo">9957</span> }<a name="line.9957"></a>
<span class="sourceLineNo">9958</span> oai32data[it.oIndex + j] = ox;<a name="line.9958"></a>
<span class="sourceLineNo">9959</span> }<a name="line.9959"></a>
<span class="sourceLineNo">9960</span> }<a name="line.9960"></a>
<span class="sourceLineNo">9961</span> }<a name="line.9961"></a>
<span class="sourceLineNo">9962</span> } else if (as &gt; bs) {<a name="line.9962"></a>
<span class="sourceLineNo">9963</span> if (it.isOutputDouble()) {<a name="line.9963"></a>
<span class="sourceLineNo">9964</span> while (it.hasNext()) {<a name="line.9964"></a>
<span class="sourceLineNo">9965</span> double iax = it.aDouble;<a name="line.9965"></a>
<span class="sourceLineNo">9966</span> final double ibx = it.bDouble;<a name="line.9966"></a>
<span class="sourceLineNo">9967</span> int ox;<a name="line.9967"></a>
<span class="sourceLineNo">9968</span> if (ibx == 0) {<a name="line.9968"></a>
<span class="sourceLineNo">9969</span> ox = 0;<a name="line.9969"></a>
<span class="sourceLineNo">9970</span> } else {<a name="line.9970"></a>
<span class="sourceLineNo">9971</span> ox = (int) toLong(iax / ibx);<a name="line.9971"></a>
<span class="sourceLineNo">9972</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9972"></a>
<span class="sourceLineNo">9973</span> ox--;<a name="line.9973"></a>
<span class="sourceLineNo">9974</span> }<a name="line.9974"></a>
<span class="sourceLineNo">9975</span> }<a name="line.9975"></a>
<span class="sourceLineNo">9976</span> oai32data[it.oIndex] = ox;<a name="line.9976"></a>
<span class="sourceLineNo">9977</span> for (int j = 1; j &lt; is; j++) {<a name="line.9977"></a>
<span class="sourceLineNo">9978</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.9978"></a>
<span class="sourceLineNo">9979</span> if (ibx == 0) {<a name="line.9979"></a>
<span class="sourceLineNo">9980</span> ox = 0;<a name="line.9980"></a>
<span class="sourceLineNo">9981</span> } else {<a name="line.9981"></a>
<span class="sourceLineNo">9982</span> ox = (int) toLong(iax / ibx);<a name="line.9982"></a>
<span class="sourceLineNo">9983</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9983"></a>
<span class="sourceLineNo">9984</span> ox--;<a name="line.9984"></a>
<span class="sourceLineNo">9985</span> }<a name="line.9985"></a>
<span class="sourceLineNo">9986</span> }<a name="line.9986"></a>
<span class="sourceLineNo">9987</span> oai32data[it.oIndex + j] = ox;<a name="line.9987"></a>
<span class="sourceLineNo">9988</span> }<a name="line.9988"></a>
<span class="sourceLineNo">9989</span> }<a name="line.9989"></a>
<span class="sourceLineNo">9990</span> } else {<a name="line.9990"></a>
<span class="sourceLineNo">9991</span> while (it.hasNext()) {<a name="line.9991"></a>
<span class="sourceLineNo">9992</span> long iax = it.aLong;<a name="line.9992"></a>
<span class="sourceLineNo">9993</span> final long ibx = it.bLong;<a name="line.9993"></a>
<span class="sourceLineNo">9994</span> int ox;<a name="line.9994"></a>
<span class="sourceLineNo">9995</span> if (ibx == 0) {<a name="line.9995"></a>
<span class="sourceLineNo">9996</span> ox = 0;<a name="line.9996"></a>
<span class="sourceLineNo">9997</span> } else {<a name="line.9997"></a>
<span class="sourceLineNo">9998</span> ox = (int) (iax / ibx);<a name="line.9998"></a>
<span class="sourceLineNo">9999</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.9999"></a>
<span class="sourceLineNo">10000</span> ox--;<a name="line.10000"></a>
<span class="sourceLineNo">10001</span> }<a name="line.10001"></a>
<span class="sourceLineNo">10002</span> }<a name="line.10002"></a>
<span class="sourceLineNo">10003</span> oai32data[it.oIndex] = ox;<a name="line.10003"></a>
<span class="sourceLineNo">10004</span> for (int j = 1; j &lt; is; j++) {<a name="line.10004"></a>
<span class="sourceLineNo">10005</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.10005"></a>
<span class="sourceLineNo">10006</span> if (ibx == 0) {<a name="line.10006"></a>
<span class="sourceLineNo">10007</span> ox = 0;<a name="line.10007"></a>
<span class="sourceLineNo">10008</span> } else {<a name="line.10008"></a>
<span class="sourceLineNo">10009</span> ox = (int) (iax / ibx);<a name="line.10009"></a>
<span class="sourceLineNo">10010</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.10010"></a>
<span class="sourceLineNo">10011</span> ox--;<a name="line.10011"></a>
<span class="sourceLineNo">10012</span> }<a name="line.10012"></a>
<span class="sourceLineNo">10013</span> }<a name="line.10013"></a>
<span class="sourceLineNo">10014</span> oai32data[it.oIndex + j] = ox;<a name="line.10014"></a>
<span class="sourceLineNo">10015</span> }<a name="line.10015"></a>
<span class="sourceLineNo">10016</span> }<a name="line.10016"></a>
<span class="sourceLineNo">10017</span> }<a name="line.10017"></a>
<span class="sourceLineNo">10018</span> } else if (as == 1) {<a name="line.10018"></a>
<span class="sourceLineNo">10019</span> if (it.isOutputDouble()) {<a name="line.10019"></a>
<span class="sourceLineNo">10020</span> while (it.hasNext()) {<a name="line.10020"></a>
<span class="sourceLineNo">10021</span> final double iax = it.aDouble;<a name="line.10021"></a>
<span class="sourceLineNo">10022</span> final double ibx = it.bDouble;<a name="line.10022"></a>
<span class="sourceLineNo">10023</span> int ox;<a name="line.10023"></a>
<span class="sourceLineNo">10024</span> if (ibx == 0) {<a name="line.10024"></a>
<span class="sourceLineNo">10025</span> ox = 0;<a name="line.10025"></a>
<span class="sourceLineNo">10026</span> } else {<a name="line.10026"></a>
<span class="sourceLineNo">10027</span> ox = (int) toLong(iax / ibx);<a name="line.10027"></a>
<span class="sourceLineNo">10028</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.10028"></a>
<span class="sourceLineNo">10029</span> ox--;<a name="line.10029"></a>
<span class="sourceLineNo">10030</span> }<a name="line.10030"></a>
<span class="sourceLineNo">10031</span> }<a name="line.10031"></a>
<span class="sourceLineNo">10032</span> for (int j = 0; j &lt; is; j++) {<a name="line.10032"></a>
<span class="sourceLineNo">10033</span> oai32data[it.oIndex + j] = ox;<a name="line.10033"></a>
<span class="sourceLineNo">10034</span> }<a name="line.10034"></a>
<span class="sourceLineNo">10035</span> }<a name="line.10035"></a>
<span class="sourceLineNo">10036</span> } else {<a name="line.10036"></a>
<span class="sourceLineNo">10037</span> while (it.hasNext()) {<a name="line.10037"></a>
<span class="sourceLineNo">10038</span> final long iax = it.aLong;<a name="line.10038"></a>
<span class="sourceLineNo">10039</span> final long ibx = it.bLong;<a name="line.10039"></a>
<span class="sourceLineNo">10040</span> int ox;<a name="line.10040"></a>
<span class="sourceLineNo">10041</span> if (ibx == 0) {<a name="line.10041"></a>
<span class="sourceLineNo">10042</span> ox = 0;<a name="line.10042"></a>
<span class="sourceLineNo">10043</span> } else {<a name="line.10043"></a>
<span class="sourceLineNo">10044</span> ox = (int) (iax / ibx);<a name="line.10044"></a>
<span class="sourceLineNo">10045</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.10045"></a>
<span class="sourceLineNo">10046</span> ox--;<a name="line.10046"></a>
<span class="sourceLineNo">10047</span> }<a name="line.10047"></a>
<span class="sourceLineNo">10048</span> }<a name="line.10048"></a>
<span class="sourceLineNo">10049</span> for (int j = 0; j &lt; is; j++) {<a name="line.10049"></a>
<span class="sourceLineNo">10050</span> oai32data[it.oIndex + j] = ox;<a name="line.10050"></a>
<span class="sourceLineNo">10051</span> }<a name="line.10051"></a>
<span class="sourceLineNo">10052</span> }<a name="line.10052"></a>
<span class="sourceLineNo">10053</span> }<a name="line.10053"></a>
<span class="sourceLineNo">10054</span> } else {<a name="line.10054"></a>
<span class="sourceLineNo">10055</span> if (it.isOutputDouble()) {<a name="line.10055"></a>
<span class="sourceLineNo">10056</span> while (it.hasNext()) {<a name="line.10056"></a>
<span class="sourceLineNo">10057</span> double iax = it.aDouble;<a name="line.10057"></a>
<span class="sourceLineNo">10058</span> double ibx = it.bDouble;<a name="line.10058"></a>
<span class="sourceLineNo">10059</span> int ox;<a name="line.10059"></a>
<span class="sourceLineNo">10060</span> if (ibx == 0) {<a name="line.10060"></a>
<span class="sourceLineNo">10061</span> ox = 0;<a name="line.10061"></a>
<span class="sourceLineNo">10062</span> } else {<a name="line.10062"></a>
<span class="sourceLineNo">10063</span> ox = (int) toLong(iax / ibx);<a name="line.10063"></a>
<span class="sourceLineNo">10064</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.10064"></a>
<span class="sourceLineNo">10065</span> ox--;<a name="line.10065"></a>
<span class="sourceLineNo">10066</span> }<a name="line.10066"></a>
<span class="sourceLineNo">10067</span> }<a name="line.10067"></a>
<span class="sourceLineNo">10068</span> oai32data[it.oIndex] = ox;<a name="line.10068"></a>
<span class="sourceLineNo">10069</span> for (int j = 1; j &lt; is; j++) {<a name="line.10069"></a>
<span class="sourceLineNo">10070</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.10070"></a>
<span class="sourceLineNo">10071</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.10071"></a>
<span class="sourceLineNo">10072</span> if (ibx == 0) {<a name="line.10072"></a>
<span class="sourceLineNo">10073</span> ox = 0;<a name="line.10073"></a>
<span class="sourceLineNo">10074</span> } else {<a name="line.10074"></a>
<span class="sourceLineNo">10075</span> ox = (int) toLong(iax / ibx);<a name="line.10075"></a>
<span class="sourceLineNo">10076</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.10076"></a>
<span class="sourceLineNo">10077</span> ox--;<a name="line.10077"></a>
<span class="sourceLineNo">10078</span> }<a name="line.10078"></a>
<span class="sourceLineNo">10079</span> }<a name="line.10079"></a>
<span class="sourceLineNo">10080</span> oai32data[it.oIndex + j] = ox;<a name="line.10080"></a>
<span class="sourceLineNo">10081</span> }<a name="line.10081"></a>
<span class="sourceLineNo">10082</span> }<a name="line.10082"></a>
<span class="sourceLineNo">10083</span> } else {<a name="line.10083"></a>
<span class="sourceLineNo">10084</span> while (it.hasNext()) {<a name="line.10084"></a>
<span class="sourceLineNo">10085</span> long iax = it.aLong;<a name="line.10085"></a>
<span class="sourceLineNo">10086</span> long ibx = it.bLong;<a name="line.10086"></a>
<span class="sourceLineNo">10087</span> int ox;<a name="line.10087"></a>
<span class="sourceLineNo">10088</span> if (ibx == 0) {<a name="line.10088"></a>
<span class="sourceLineNo">10089</span> ox = 0;<a name="line.10089"></a>
<span class="sourceLineNo">10090</span> } else {<a name="line.10090"></a>
<span class="sourceLineNo">10091</span> ox = (int) (iax / ibx);<a name="line.10091"></a>
<span class="sourceLineNo">10092</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.10092"></a>
<span class="sourceLineNo">10093</span> ox--;<a name="line.10093"></a>
<span class="sourceLineNo">10094</span> }<a name="line.10094"></a>
<span class="sourceLineNo">10095</span> }<a name="line.10095"></a>
<span class="sourceLineNo">10096</span> oai32data[it.oIndex] = ox;<a name="line.10096"></a>
<span class="sourceLineNo">10097</span> for (int j = 1; j &lt; is; j++) {<a name="line.10097"></a>
<span class="sourceLineNo">10098</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.10098"></a>
<span class="sourceLineNo">10099</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.10099"></a>
<span class="sourceLineNo">10100</span> if (ibx == 0) {<a name="line.10100"></a>
<span class="sourceLineNo">10101</span> ox = 0;<a name="line.10101"></a>
<span class="sourceLineNo">10102</span> } else {<a name="line.10102"></a>
<span class="sourceLineNo">10103</span> ox = (int) (iax / ibx);<a name="line.10103"></a>
<span class="sourceLineNo">10104</span> if (iax != ox * ibx &amp;&amp; ((iax &lt; 0) ^ (ibx &lt; 0))) {<a name="line.10104"></a>
<span class="sourceLineNo">10105</span> ox--;<a name="line.10105"></a>
<span class="sourceLineNo">10106</span> }<a name="line.10106"></a>
<span class="sourceLineNo">10107</span> }<a name="line.10107"></a>
<span class="sourceLineNo">10108</span> oai32data[it.oIndex + j] = ox;<a name="line.10108"></a>
<span class="sourceLineNo">10109</span> }<a name="line.10109"></a>
<span class="sourceLineNo">10110</span> }<a name="line.10110"></a>
<span class="sourceLineNo">10111</span> }<a name="line.10111"></a>
<span class="sourceLineNo">10112</span> }<a name="line.10112"></a>
<span class="sourceLineNo">10113</span> break;<a name="line.10113"></a>
<span class="sourceLineNo">10114</span> case Dataset.FLOAT32:<a name="line.10114"></a>
<span class="sourceLineNo">10115</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.10115"></a>
<span class="sourceLineNo">10116</span> if (it.isOutputDouble()) {<a name="line.10116"></a>
<span class="sourceLineNo">10117</span> while (it.hasNext()) {<a name="line.10117"></a>
<span class="sourceLineNo">10118</span> final double iax = it.aDouble;<a name="line.10118"></a>
<span class="sourceLineNo">10119</span> final double ibx = it.bDouble;<a name="line.10119"></a>
<span class="sourceLineNo">10120</span> float ox;<a name="line.10120"></a>
<span class="sourceLineNo">10121</span> ox = (float) (iax / ibx);<a name="line.10121"></a>
<span class="sourceLineNo">10122</span> of32data[it.oIndex] = ox;<a name="line.10122"></a>
<span class="sourceLineNo">10123</span> }<a name="line.10123"></a>
<span class="sourceLineNo">10124</span> } else {<a name="line.10124"></a>
<span class="sourceLineNo">10125</span> while (it.hasNext()) {<a name="line.10125"></a>
<span class="sourceLineNo">10126</span> final long iax = it.aLong;<a name="line.10126"></a>
<span class="sourceLineNo">10127</span> final long ibx = it.bLong;<a name="line.10127"></a>
<span class="sourceLineNo">10128</span> float ox;<a name="line.10128"></a>
<span class="sourceLineNo">10129</span> ox = (iax / ibx);<a name="line.10129"></a>
<span class="sourceLineNo">10130</span> of32data[it.oIndex] = ox;<a name="line.10130"></a>
<span class="sourceLineNo">10131</span> }<a name="line.10131"></a>
<span class="sourceLineNo">10132</span> }<a name="line.10132"></a>
<span class="sourceLineNo">10133</span> break;<a name="line.10133"></a>
<span class="sourceLineNo">10134</span> case Dataset.FLOAT64:<a name="line.10134"></a>
<span class="sourceLineNo">10135</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.10135"></a>
<span class="sourceLineNo">10136</span> if (it.isOutputDouble()) {<a name="line.10136"></a>
<span class="sourceLineNo">10137</span> while (it.hasNext()) {<a name="line.10137"></a>
<span class="sourceLineNo">10138</span> final double iax = it.aDouble;<a name="line.10138"></a>
<span class="sourceLineNo">10139</span> final double ibx = it.bDouble;<a name="line.10139"></a>
<span class="sourceLineNo">10140</span> double ox;<a name="line.10140"></a>
<span class="sourceLineNo">10141</span> ox = (iax / ibx);<a name="line.10141"></a>
<span class="sourceLineNo">10142</span> of64data[it.oIndex] = ox;<a name="line.10142"></a>
<span class="sourceLineNo">10143</span> }<a name="line.10143"></a>
<span class="sourceLineNo">10144</span> } else {<a name="line.10144"></a>
<span class="sourceLineNo">10145</span> while (it.hasNext()) {<a name="line.10145"></a>
<span class="sourceLineNo">10146</span> final long iax = it.aLong;<a name="line.10146"></a>
<span class="sourceLineNo">10147</span> final long ibx = it.bLong;<a name="line.10147"></a>
<span class="sourceLineNo">10148</span> double ox;<a name="line.10148"></a>
<span class="sourceLineNo">10149</span> ox = (iax / ibx);<a name="line.10149"></a>
<span class="sourceLineNo">10150</span> of64data[it.oIndex] = ox;<a name="line.10150"></a>
<span class="sourceLineNo">10151</span> }<a name="line.10151"></a>
<span class="sourceLineNo">10152</span> }<a name="line.10152"></a>
<span class="sourceLineNo">10153</span> break;<a name="line.10153"></a>
<span class="sourceLineNo">10154</span> case Dataset.ARRAYFLOAT32:<a name="line.10154"></a>
<span class="sourceLineNo">10155</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.10155"></a>
<span class="sourceLineNo">10156</span> if (is == 1) {<a name="line.10156"></a>
<span class="sourceLineNo">10157</span> if (it.isOutputDouble()) {<a name="line.10157"></a>
<span class="sourceLineNo">10158</span> while (it.hasNext()) {<a name="line.10158"></a>
<span class="sourceLineNo">10159</span> final double iax = it.aDouble;<a name="line.10159"></a>
<span class="sourceLineNo">10160</span> final double ibx = it.bDouble;<a name="line.10160"></a>
<span class="sourceLineNo">10161</span> float ox;<a name="line.10161"></a>
<span class="sourceLineNo">10162</span> ox = (float) (iax / ibx);<a name="line.10162"></a>
<span class="sourceLineNo">10163</span> oaf32data[it.oIndex] = ox;<a name="line.10163"></a>
<span class="sourceLineNo">10164</span> }<a name="line.10164"></a>
<span class="sourceLineNo">10165</span> } else {<a name="line.10165"></a>
<span class="sourceLineNo">10166</span> while (it.hasNext()) {<a name="line.10166"></a>
<span class="sourceLineNo">10167</span> final long iax = it.aLong;<a name="line.10167"></a>
<span class="sourceLineNo">10168</span> final long ibx = it.bLong;<a name="line.10168"></a>
<span class="sourceLineNo">10169</span> float ox;<a name="line.10169"></a>
<span class="sourceLineNo">10170</span> ox = (iax / ibx);<a name="line.10170"></a>
<span class="sourceLineNo">10171</span> oaf32data[it.oIndex] = ox;<a name="line.10171"></a>
<span class="sourceLineNo">10172</span> }<a name="line.10172"></a>
<span class="sourceLineNo">10173</span> }<a name="line.10173"></a>
<span class="sourceLineNo">10174</span> } else if (as &lt; bs) {<a name="line.10174"></a>
<span class="sourceLineNo">10175</span> if (it.isOutputDouble()) {<a name="line.10175"></a>
<span class="sourceLineNo">10176</span> while (it.hasNext()) {<a name="line.10176"></a>
<span class="sourceLineNo">10177</span> final double iax = it.aDouble;<a name="line.10177"></a>
<span class="sourceLineNo">10178</span> double ibx = it.bDouble;<a name="line.10178"></a>
<span class="sourceLineNo">10179</span> float ox;<a name="line.10179"></a>
<span class="sourceLineNo">10180</span> ox = (float) (iax / ibx);<a name="line.10180"></a>
<span class="sourceLineNo">10181</span> oaf32data[it.oIndex] = ox;<a name="line.10181"></a>
<span class="sourceLineNo">10182</span> for (int j = 1; j &lt; is; j++) {<a name="line.10182"></a>
<span class="sourceLineNo">10183</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.10183"></a>
<span class="sourceLineNo">10184</span> ox = (float) (iax / ibx);<a name="line.10184"></a>
<span class="sourceLineNo">10185</span> oaf32data[it.oIndex + j] = ox;<a name="line.10185"></a>
<span class="sourceLineNo">10186</span> }<a name="line.10186"></a>
<span class="sourceLineNo">10187</span> }<a name="line.10187"></a>
<span class="sourceLineNo">10188</span> } else {<a name="line.10188"></a>
<span class="sourceLineNo">10189</span> while (it.hasNext()) {<a name="line.10189"></a>
<span class="sourceLineNo">10190</span> final long iax = it.aLong;<a name="line.10190"></a>
<span class="sourceLineNo">10191</span> long ibx = it.bLong;<a name="line.10191"></a>
<span class="sourceLineNo">10192</span> float ox;<a name="line.10192"></a>
<span class="sourceLineNo">10193</span> ox = (iax / ibx);<a name="line.10193"></a>
<span class="sourceLineNo">10194</span> oaf32data[it.oIndex] = ox;<a name="line.10194"></a>
<span class="sourceLineNo">10195</span> for (int j = 1; j &lt; is; j++) {<a name="line.10195"></a>
<span class="sourceLineNo">10196</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.10196"></a>
<span class="sourceLineNo">10197</span> ox = (iax / ibx);<a name="line.10197"></a>
<span class="sourceLineNo">10198</span> oaf32data[it.oIndex + j] = ox;<a name="line.10198"></a>
<span class="sourceLineNo">10199</span> }<a name="line.10199"></a>
<span class="sourceLineNo">10200</span> }<a name="line.10200"></a>
<span class="sourceLineNo">10201</span> }<a name="line.10201"></a>
<span class="sourceLineNo">10202</span> } else if (as &gt; bs) {<a name="line.10202"></a>
<span class="sourceLineNo">10203</span> if (it.isOutputDouble()) {<a name="line.10203"></a>
<span class="sourceLineNo">10204</span> while (it.hasNext()) {<a name="line.10204"></a>
<span class="sourceLineNo">10205</span> double iax = it.aDouble;<a name="line.10205"></a>
<span class="sourceLineNo">10206</span> final double ibx = it.bDouble;<a name="line.10206"></a>
<span class="sourceLineNo">10207</span> float ox;<a name="line.10207"></a>
<span class="sourceLineNo">10208</span> ox = (float) (iax / ibx);<a name="line.10208"></a>
<span class="sourceLineNo">10209</span> oaf32data[it.oIndex] = ox;<a name="line.10209"></a>
<span class="sourceLineNo">10210</span> for (int j = 1; j &lt; is; j++) {<a name="line.10210"></a>
<span class="sourceLineNo">10211</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.10211"></a>
<span class="sourceLineNo">10212</span> ox = (float) (iax / ibx);<a name="line.10212"></a>
<span class="sourceLineNo">10213</span> oaf32data[it.oIndex + j] = ox;<a name="line.10213"></a>
<span class="sourceLineNo">10214</span> }<a name="line.10214"></a>
<span class="sourceLineNo">10215</span> }<a name="line.10215"></a>
<span class="sourceLineNo">10216</span> } else {<a name="line.10216"></a>
<span class="sourceLineNo">10217</span> while (it.hasNext()) {<a name="line.10217"></a>
<span class="sourceLineNo">10218</span> long iax = it.aLong;<a name="line.10218"></a>
<span class="sourceLineNo">10219</span> final long ibx = it.bLong;<a name="line.10219"></a>
<span class="sourceLineNo">10220</span> float ox;<a name="line.10220"></a>
<span class="sourceLineNo">10221</span> ox = (iax / ibx);<a name="line.10221"></a>
<span class="sourceLineNo">10222</span> oaf32data[it.oIndex] = ox;<a name="line.10222"></a>
<span class="sourceLineNo">10223</span> for (int j = 1; j &lt; is; j++) {<a name="line.10223"></a>
<span class="sourceLineNo">10224</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.10224"></a>
<span class="sourceLineNo">10225</span> ox = (iax / ibx);<a name="line.10225"></a>
<span class="sourceLineNo">10226</span> oaf32data[it.oIndex + j] = ox;<a name="line.10226"></a>
<span class="sourceLineNo">10227</span> }<a name="line.10227"></a>
<span class="sourceLineNo">10228</span> }<a name="line.10228"></a>
<span class="sourceLineNo">10229</span> }<a name="line.10229"></a>
<span class="sourceLineNo">10230</span> } else if (as == 1) {<a name="line.10230"></a>
<span class="sourceLineNo">10231</span> if (it.isOutputDouble()) {<a name="line.10231"></a>
<span class="sourceLineNo">10232</span> while (it.hasNext()) {<a name="line.10232"></a>
<span class="sourceLineNo">10233</span> final double iax = it.aDouble;<a name="line.10233"></a>
<span class="sourceLineNo">10234</span> final double ibx = it.bDouble;<a name="line.10234"></a>
<span class="sourceLineNo">10235</span> float ox;<a name="line.10235"></a>
<span class="sourceLineNo">10236</span> ox = (float) (iax / ibx);<a name="line.10236"></a>
<span class="sourceLineNo">10237</span> for (int j = 0; j &lt; is; j++) {<a name="line.10237"></a>
<span class="sourceLineNo">10238</span> oaf32data[it.oIndex + j] = ox;<a name="line.10238"></a>
<span class="sourceLineNo">10239</span> }<a name="line.10239"></a>
<span class="sourceLineNo">10240</span> }<a name="line.10240"></a>
<span class="sourceLineNo">10241</span> } else {<a name="line.10241"></a>
<span class="sourceLineNo">10242</span> while (it.hasNext()) {<a name="line.10242"></a>
<span class="sourceLineNo">10243</span> final long iax = it.aLong;<a name="line.10243"></a>
<span class="sourceLineNo">10244</span> final long ibx = it.bLong;<a name="line.10244"></a>
<span class="sourceLineNo">10245</span> float ox;<a name="line.10245"></a>
<span class="sourceLineNo">10246</span> ox = (iax / ibx);<a name="line.10246"></a>
<span class="sourceLineNo">10247</span> for (int j = 0; j &lt; is; j++) {<a name="line.10247"></a>
<span class="sourceLineNo">10248</span> oaf32data[it.oIndex + j] = ox;<a name="line.10248"></a>
<span class="sourceLineNo">10249</span> }<a name="line.10249"></a>
<span class="sourceLineNo">10250</span> }<a name="line.10250"></a>
<span class="sourceLineNo">10251</span> }<a name="line.10251"></a>
<span class="sourceLineNo">10252</span> } else {<a name="line.10252"></a>
<span class="sourceLineNo">10253</span> if (it.isOutputDouble()) {<a name="line.10253"></a>
<span class="sourceLineNo">10254</span> while (it.hasNext()) {<a name="line.10254"></a>
<span class="sourceLineNo">10255</span> double iax = it.aDouble;<a name="line.10255"></a>
<span class="sourceLineNo">10256</span> double ibx = it.bDouble;<a name="line.10256"></a>
<span class="sourceLineNo">10257</span> float ox;<a name="line.10257"></a>
<span class="sourceLineNo">10258</span> ox = (float) (iax / ibx);<a name="line.10258"></a>
<span class="sourceLineNo">10259</span> oaf32data[it.oIndex] = ox;<a name="line.10259"></a>
<span class="sourceLineNo">10260</span> for (int j = 1; j &lt; is; j++) {<a name="line.10260"></a>
<span class="sourceLineNo">10261</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.10261"></a>
<span class="sourceLineNo">10262</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.10262"></a>
<span class="sourceLineNo">10263</span> ox = (float) (iax / ibx);<a name="line.10263"></a>
<span class="sourceLineNo">10264</span> oaf32data[it.oIndex + j] = ox;<a name="line.10264"></a>
<span class="sourceLineNo">10265</span> }<a name="line.10265"></a>
<span class="sourceLineNo">10266</span> }<a name="line.10266"></a>
<span class="sourceLineNo">10267</span> } else {<a name="line.10267"></a>
<span class="sourceLineNo">10268</span> while (it.hasNext()) {<a name="line.10268"></a>
<span class="sourceLineNo">10269</span> long iax = it.aLong;<a name="line.10269"></a>
<span class="sourceLineNo">10270</span> long ibx = it.bLong;<a name="line.10270"></a>
<span class="sourceLineNo">10271</span> float ox;<a name="line.10271"></a>
<span class="sourceLineNo">10272</span> ox = (iax / ibx);<a name="line.10272"></a>
<span class="sourceLineNo">10273</span> oaf32data[it.oIndex] = ox;<a name="line.10273"></a>
<span class="sourceLineNo">10274</span> for (int j = 1; j &lt; is; j++) {<a name="line.10274"></a>
<span class="sourceLineNo">10275</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.10275"></a>
<span class="sourceLineNo">10276</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.10276"></a>
<span class="sourceLineNo">10277</span> ox = (iax / ibx);<a name="line.10277"></a>
<span class="sourceLineNo">10278</span> oaf32data[it.oIndex + j] = ox;<a name="line.10278"></a>
<span class="sourceLineNo">10279</span> }<a name="line.10279"></a>
<span class="sourceLineNo">10280</span> }<a name="line.10280"></a>
<span class="sourceLineNo">10281</span> }<a name="line.10281"></a>
<span class="sourceLineNo">10282</span> }<a name="line.10282"></a>
<span class="sourceLineNo">10283</span> break;<a name="line.10283"></a>
<span class="sourceLineNo">10284</span> case Dataset.ARRAYFLOAT64:<a name="line.10284"></a>
<span class="sourceLineNo">10285</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.10285"></a>
<span class="sourceLineNo">10286</span> if (is == 1) {<a name="line.10286"></a>
<span class="sourceLineNo">10287</span> if (it.isOutputDouble()) {<a name="line.10287"></a>
<span class="sourceLineNo">10288</span> while (it.hasNext()) {<a name="line.10288"></a>
<span class="sourceLineNo">10289</span> final double iax = it.aDouble;<a name="line.10289"></a>
<span class="sourceLineNo">10290</span> final double ibx = it.bDouble;<a name="line.10290"></a>
<span class="sourceLineNo">10291</span> double ox;<a name="line.10291"></a>
<span class="sourceLineNo">10292</span> ox = (iax / ibx);<a name="line.10292"></a>
<span class="sourceLineNo">10293</span> oaf64data[it.oIndex] = ox;<a name="line.10293"></a>
<span class="sourceLineNo">10294</span> }<a name="line.10294"></a>
<span class="sourceLineNo">10295</span> } else {<a name="line.10295"></a>
<span class="sourceLineNo">10296</span> while (it.hasNext()) {<a name="line.10296"></a>
<span class="sourceLineNo">10297</span> final long iax = it.aLong;<a name="line.10297"></a>
<span class="sourceLineNo">10298</span> final long ibx = it.bLong;<a name="line.10298"></a>
<span class="sourceLineNo">10299</span> double ox;<a name="line.10299"></a>
<span class="sourceLineNo">10300</span> ox = (iax / ibx);<a name="line.10300"></a>
<span class="sourceLineNo">10301</span> oaf64data[it.oIndex] = ox;<a name="line.10301"></a>
<span class="sourceLineNo">10302</span> }<a name="line.10302"></a>
<span class="sourceLineNo">10303</span> }<a name="line.10303"></a>
<span class="sourceLineNo">10304</span> } else if (as &lt; bs) {<a name="line.10304"></a>
<span class="sourceLineNo">10305</span> if (it.isOutputDouble()) {<a name="line.10305"></a>
<span class="sourceLineNo">10306</span> while (it.hasNext()) {<a name="line.10306"></a>
<span class="sourceLineNo">10307</span> final double iax = it.aDouble;<a name="line.10307"></a>
<span class="sourceLineNo">10308</span> double ibx = it.bDouble;<a name="line.10308"></a>
<span class="sourceLineNo">10309</span> double ox;<a name="line.10309"></a>
<span class="sourceLineNo">10310</span> ox = (iax / ibx);<a name="line.10310"></a>
<span class="sourceLineNo">10311</span> oaf64data[it.oIndex] = ox;<a name="line.10311"></a>
<span class="sourceLineNo">10312</span> for (int j = 1; j &lt; is; j++) {<a name="line.10312"></a>
<span class="sourceLineNo">10313</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.10313"></a>
<span class="sourceLineNo">10314</span> ox = (iax / ibx);<a name="line.10314"></a>
<span class="sourceLineNo">10315</span> oaf64data[it.oIndex + j] = ox;<a name="line.10315"></a>
<span class="sourceLineNo">10316</span> }<a name="line.10316"></a>
<span class="sourceLineNo">10317</span> }<a name="line.10317"></a>
<span class="sourceLineNo">10318</span> } else {<a name="line.10318"></a>
<span class="sourceLineNo">10319</span> while (it.hasNext()) {<a name="line.10319"></a>
<span class="sourceLineNo">10320</span> final long iax = it.aLong;<a name="line.10320"></a>
<span class="sourceLineNo">10321</span> long ibx = it.bLong;<a name="line.10321"></a>
<span class="sourceLineNo">10322</span> double ox;<a name="line.10322"></a>
<span class="sourceLineNo">10323</span> ox = (iax / ibx);<a name="line.10323"></a>
<span class="sourceLineNo">10324</span> oaf64data[it.oIndex] = ox;<a name="line.10324"></a>
<span class="sourceLineNo">10325</span> for (int j = 1; j &lt; is; j++) {<a name="line.10325"></a>
<span class="sourceLineNo">10326</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.10326"></a>
<span class="sourceLineNo">10327</span> ox = (iax / ibx);<a name="line.10327"></a>
<span class="sourceLineNo">10328</span> oaf64data[it.oIndex + j] = ox;<a name="line.10328"></a>
<span class="sourceLineNo">10329</span> }<a name="line.10329"></a>
<span class="sourceLineNo">10330</span> }<a name="line.10330"></a>
<span class="sourceLineNo">10331</span> }<a name="line.10331"></a>
<span class="sourceLineNo">10332</span> } else if (as &gt; bs) {<a name="line.10332"></a>
<span class="sourceLineNo">10333</span> if (it.isOutputDouble()) {<a name="line.10333"></a>
<span class="sourceLineNo">10334</span> while (it.hasNext()) {<a name="line.10334"></a>
<span class="sourceLineNo">10335</span> double iax = it.aDouble;<a name="line.10335"></a>
<span class="sourceLineNo">10336</span> final double ibx = it.bDouble;<a name="line.10336"></a>
<span class="sourceLineNo">10337</span> double ox;<a name="line.10337"></a>
<span class="sourceLineNo">10338</span> ox = (iax / ibx);<a name="line.10338"></a>
<span class="sourceLineNo">10339</span> oaf64data[it.oIndex] = ox;<a name="line.10339"></a>
<span class="sourceLineNo">10340</span> for (int j = 1; j &lt; is; j++) {<a name="line.10340"></a>
<span class="sourceLineNo">10341</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.10341"></a>
<span class="sourceLineNo">10342</span> ox = (iax / ibx);<a name="line.10342"></a>
<span class="sourceLineNo">10343</span> oaf64data[it.oIndex + j] = ox;<a name="line.10343"></a>
<span class="sourceLineNo">10344</span> }<a name="line.10344"></a>
<span class="sourceLineNo">10345</span> }<a name="line.10345"></a>
<span class="sourceLineNo">10346</span> } else {<a name="line.10346"></a>
<span class="sourceLineNo">10347</span> while (it.hasNext()) {<a name="line.10347"></a>
<span class="sourceLineNo">10348</span> long iax = it.aLong;<a name="line.10348"></a>
<span class="sourceLineNo">10349</span> final long ibx = it.bLong;<a name="line.10349"></a>
<span class="sourceLineNo">10350</span> double ox;<a name="line.10350"></a>
<span class="sourceLineNo">10351</span> ox = (iax / ibx);<a name="line.10351"></a>
<span class="sourceLineNo">10352</span> oaf64data[it.oIndex] = ox;<a name="line.10352"></a>
<span class="sourceLineNo">10353</span> for (int j = 1; j &lt; is; j++) {<a name="line.10353"></a>
<span class="sourceLineNo">10354</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.10354"></a>
<span class="sourceLineNo">10355</span> ox = (iax / ibx);<a name="line.10355"></a>
<span class="sourceLineNo">10356</span> oaf64data[it.oIndex + j] = ox;<a name="line.10356"></a>
<span class="sourceLineNo">10357</span> }<a name="line.10357"></a>
<span class="sourceLineNo">10358</span> }<a name="line.10358"></a>
<span class="sourceLineNo">10359</span> }<a name="line.10359"></a>
<span class="sourceLineNo">10360</span> } else if (as == 1) {<a name="line.10360"></a>
<span class="sourceLineNo">10361</span> if (it.isOutputDouble()) {<a name="line.10361"></a>
<span class="sourceLineNo">10362</span> while (it.hasNext()) {<a name="line.10362"></a>
<span class="sourceLineNo">10363</span> final double iax = it.aDouble;<a name="line.10363"></a>
<span class="sourceLineNo">10364</span> final double ibx = it.bDouble;<a name="line.10364"></a>
<span class="sourceLineNo">10365</span> double ox;<a name="line.10365"></a>
<span class="sourceLineNo">10366</span> ox = (iax / ibx);<a name="line.10366"></a>
<span class="sourceLineNo">10367</span> for (int j = 0; j &lt; is; j++) {<a name="line.10367"></a>
<span class="sourceLineNo">10368</span> oaf64data[it.oIndex + j] = ox;<a name="line.10368"></a>
<span class="sourceLineNo">10369</span> }<a name="line.10369"></a>
<span class="sourceLineNo">10370</span> }<a name="line.10370"></a>
<span class="sourceLineNo">10371</span> } else {<a name="line.10371"></a>
<span class="sourceLineNo">10372</span> while (it.hasNext()) {<a name="line.10372"></a>
<span class="sourceLineNo">10373</span> final long iax = it.aLong;<a name="line.10373"></a>
<span class="sourceLineNo">10374</span> final long ibx = it.bLong;<a name="line.10374"></a>
<span class="sourceLineNo">10375</span> double ox;<a name="line.10375"></a>
<span class="sourceLineNo">10376</span> ox = (iax / ibx);<a name="line.10376"></a>
<span class="sourceLineNo">10377</span> for (int j = 0; j &lt; is; j++) {<a name="line.10377"></a>
<span class="sourceLineNo">10378</span> oaf64data[it.oIndex + j] = ox;<a name="line.10378"></a>
<span class="sourceLineNo">10379</span> }<a name="line.10379"></a>
<span class="sourceLineNo">10380</span> }<a name="line.10380"></a>
<span class="sourceLineNo">10381</span> }<a name="line.10381"></a>
<span class="sourceLineNo">10382</span> } else {<a name="line.10382"></a>
<span class="sourceLineNo">10383</span> if (it.isOutputDouble()) {<a name="line.10383"></a>
<span class="sourceLineNo">10384</span> while (it.hasNext()) {<a name="line.10384"></a>
<span class="sourceLineNo">10385</span> double iax = it.aDouble;<a name="line.10385"></a>
<span class="sourceLineNo">10386</span> double ibx = it.bDouble;<a name="line.10386"></a>
<span class="sourceLineNo">10387</span> double ox;<a name="line.10387"></a>
<span class="sourceLineNo">10388</span> ox = (iax / ibx);<a name="line.10388"></a>
<span class="sourceLineNo">10389</span> oaf64data[it.oIndex] = ox;<a name="line.10389"></a>
<span class="sourceLineNo">10390</span> for (int j = 1; j &lt; is; j++) {<a name="line.10390"></a>
<span class="sourceLineNo">10391</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.10391"></a>
<span class="sourceLineNo">10392</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.10392"></a>
<span class="sourceLineNo">10393</span> ox = (iax / ibx);<a name="line.10393"></a>
<span class="sourceLineNo">10394</span> oaf64data[it.oIndex + j] = ox;<a name="line.10394"></a>
<span class="sourceLineNo">10395</span> }<a name="line.10395"></a>
<span class="sourceLineNo">10396</span> }<a name="line.10396"></a>
<span class="sourceLineNo">10397</span> } else {<a name="line.10397"></a>
<span class="sourceLineNo">10398</span> while (it.hasNext()) {<a name="line.10398"></a>
<span class="sourceLineNo">10399</span> long iax = it.aLong;<a name="line.10399"></a>
<span class="sourceLineNo">10400</span> long ibx = it.bLong;<a name="line.10400"></a>
<span class="sourceLineNo">10401</span> double ox;<a name="line.10401"></a>
<span class="sourceLineNo">10402</span> ox = (iax / ibx);<a name="line.10402"></a>
<span class="sourceLineNo">10403</span> oaf64data[it.oIndex] = ox;<a name="line.10403"></a>
<span class="sourceLineNo">10404</span> for (int j = 1; j &lt; is; j++) {<a name="line.10404"></a>
<span class="sourceLineNo">10405</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.10405"></a>
<span class="sourceLineNo">10406</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.10406"></a>
<span class="sourceLineNo">10407</span> ox = (iax / ibx);<a name="line.10407"></a>
<span class="sourceLineNo">10408</span> oaf64data[it.oIndex + j] = ox;<a name="line.10408"></a>
<span class="sourceLineNo">10409</span> }<a name="line.10409"></a>
<span class="sourceLineNo">10410</span> }<a name="line.10410"></a>
<span class="sourceLineNo">10411</span> }<a name="line.10411"></a>
<span class="sourceLineNo">10412</span> }<a name="line.10412"></a>
<span class="sourceLineNo">10413</span> break;<a name="line.10413"></a>
<span class="sourceLineNo">10414</span> case Dataset.COMPLEX64:<a name="line.10414"></a>
<span class="sourceLineNo">10415</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.10415"></a>
<span class="sourceLineNo">10416</span> if (!da.isComplex()) {<a name="line.10416"></a>
<span class="sourceLineNo">10417</span> if (it.isOutputDouble()) {<a name="line.10417"></a>
<span class="sourceLineNo">10418</span> final double iay = 0;<a name="line.10418"></a>
<span class="sourceLineNo">10419</span> if (db.isComplex()) {<a name="line.10419"></a>
<span class="sourceLineNo">10420</span> while (it.hasNext()) {<a name="line.10420"></a>
<span class="sourceLineNo">10421</span> final double iax = it.aDouble;<a name="line.10421"></a>
<span class="sourceLineNo">10422</span> final double ibx = it.bDouble;<a name="line.10422"></a>
<span class="sourceLineNo">10423</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.10423"></a>
<span class="sourceLineNo">10424</span> float ox;<a name="line.10424"></a>
<span class="sourceLineNo">10425</span> float oy;<a name="line.10425"></a>
<span class="sourceLineNo">10426</span> float q;<a name="line.10426"></a>
<span class="sourceLineNo">10427</span> float den;<a name="line.10427"></a>
<span class="sourceLineNo">10428</span> if (iby == 0) {<a name="line.10428"></a>
<span class="sourceLineNo">10429</span> ox = (float) (iax / ibx);<a name="line.10429"></a>
<span class="sourceLineNo">10430</span> oy = (float) (iay / ibx);<a name="line.10430"></a>
<span class="sourceLineNo">10431</span> } else if (ibx == 0) {<a name="line.10431"></a>
<span class="sourceLineNo">10432</span> ox = (float) (iay / iby);<a name="line.10432"></a>
<span class="sourceLineNo">10433</span> oy = (float) (-iax / iby);<a name="line.10433"></a>
<span class="sourceLineNo">10434</span> } else if (Math.abs(ibx) &lt; Math.abs(iby)) {<a name="line.10434"></a>
<span class="sourceLineNo">10435</span> q = (float) (ibx / iby);<a name="line.10435"></a>
<span class="sourceLineNo">10436</span> den = (float) (ibx * q + iby);<a name="line.10436"></a>
<span class="sourceLineNo">10437</span> ox = (float) ((iax * q + iay) / den);<a name="line.10437"></a>
<span class="sourceLineNo">10438</span> oy = (float) ((iay * q - ibx) / den);<a name="line.10438"></a>
<span class="sourceLineNo">10439</span> } else {<a name="line.10439"></a>
<span class="sourceLineNo">10440</span> q = (float) (iby / ibx);<a name="line.10440"></a>
<span class="sourceLineNo">10441</span> den = (float) (iby * q + ibx);<a name="line.10441"></a>
<span class="sourceLineNo">10442</span> ox = (float) ((iay * q + iax) / den);<a name="line.10442"></a>
<span class="sourceLineNo">10443</span> oy = (float) ((iay - iax * q) / den);<a name="line.10443"></a>
<span class="sourceLineNo">10444</span> }<a name="line.10444"></a>
<span class="sourceLineNo">10445</span> oc64data[it.oIndex] = ox;<a name="line.10445"></a>
<span class="sourceLineNo">10446</span> oc64data[it.oIndex + 1] = oy;<a name="line.10446"></a>
<span class="sourceLineNo">10447</span> }<a name="line.10447"></a>
<span class="sourceLineNo">10448</span> } else {<a name="line.10448"></a>
<span class="sourceLineNo">10449</span> while (it.hasNext()) {<a name="line.10449"></a>
<span class="sourceLineNo">10450</span> final double iax = it.aDouble;<a name="line.10450"></a>
<span class="sourceLineNo">10451</span> final double ibx = it.bDouble;<a name="line.10451"></a>
<span class="sourceLineNo">10452</span> final double iby = 0;<a name="line.10452"></a>
<span class="sourceLineNo">10453</span> float ox;<a name="line.10453"></a>
<span class="sourceLineNo">10454</span> float oy;<a name="line.10454"></a>
<span class="sourceLineNo">10455</span> float q;<a name="line.10455"></a>
<span class="sourceLineNo">10456</span> float den;<a name="line.10456"></a>
<span class="sourceLineNo">10457</span> if (iby == 0) {<a name="line.10457"></a>
<span class="sourceLineNo">10458</span> ox = (float) (iax / ibx);<a name="line.10458"></a>
<span class="sourceLineNo">10459</span> oy = (float) (iay / ibx);<a name="line.10459"></a>
<span class="sourceLineNo">10460</span> } else if (ibx == 0) {<a name="line.10460"></a>
<span class="sourceLineNo">10461</span> ox = (float) (iay / iby);<a name="line.10461"></a>
<span class="sourceLineNo">10462</span> oy = (float) (-iax / iby);<a name="line.10462"></a>
<span class="sourceLineNo">10463</span> } else if (Math.abs(ibx) &lt; Math.abs(iby)) {<a name="line.10463"></a>
<span class="sourceLineNo">10464</span> q = (float) (ibx / iby);<a name="line.10464"></a>
<span class="sourceLineNo">10465</span> den = (float) (ibx * q + iby);<a name="line.10465"></a>
<span class="sourceLineNo">10466</span> ox = (float) ((iax * q + iay) / den);<a name="line.10466"></a>
<span class="sourceLineNo">10467</span> oy = (float) ((iay * q - ibx) / den);<a name="line.10467"></a>
<span class="sourceLineNo">10468</span> } else {<a name="line.10468"></a>
<span class="sourceLineNo">10469</span> q = (float) (iby / ibx);<a name="line.10469"></a>
<span class="sourceLineNo">10470</span> den = (float) (iby * q + ibx);<a name="line.10470"></a>
<span class="sourceLineNo">10471</span> ox = (float) ((iay * q + iax) / den);<a name="line.10471"></a>
<span class="sourceLineNo">10472</span> oy = (float) ((iay - iax * q) / den);<a name="line.10472"></a>
<span class="sourceLineNo">10473</span> }<a name="line.10473"></a>
<span class="sourceLineNo">10474</span> oc64data[it.oIndex] = ox;<a name="line.10474"></a>
<span class="sourceLineNo">10475</span> oc64data[it.oIndex + 1] = oy;<a name="line.10475"></a>
<span class="sourceLineNo">10476</span> }<a name="line.10476"></a>
<span class="sourceLineNo">10477</span> }<a name="line.10477"></a>
<span class="sourceLineNo">10478</span> } else {<a name="line.10478"></a>
<span class="sourceLineNo">10479</span> final long iay = 0;<a name="line.10479"></a>
<span class="sourceLineNo">10480</span> while (it.hasNext()) {<a name="line.10480"></a>
<span class="sourceLineNo">10481</span> final long iax = it.aLong;<a name="line.10481"></a>
<span class="sourceLineNo">10482</span> final long ibx = it.bLong;<a name="line.10482"></a>
<span class="sourceLineNo">10483</span> final long iby = 0;<a name="line.10483"></a>
<span class="sourceLineNo">10484</span> float ox;<a name="line.10484"></a>
<span class="sourceLineNo">10485</span> float oy;<a name="line.10485"></a>
<span class="sourceLineNo">10486</span> float q;<a name="line.10486"></a>
<span class="sourceLineNo">10487</span> float den;<a name="line.10487"></a>
<span class="sourceLineNo">10488</span> if (iby == 0) {<a name="line.10488"></a>
<span class="sourceLineNo">10489</span> ox = (float) (iax / ibx);<a name="line.10489"></a>
<span class="sourceLineNo">10490</span> oy = (float) (iay / ibx);<a name="line.10490"></a>
<span class="sourceLineNo">10491</span> } else if (ibx == 0) {<a name="line.10491"></a>
<span class="sourceLineNo">10492</span> ox = (float) (iay / iby);<a name="line.10492"></a>
<span class="sourceLineNo">10493</span> oy = (float) (-iax / iby);<a name="line.10493"></a>
<span class="sourceLineNo">10494</span> } else if (Math.abs(ibx) &lt; Math.abs(iby)) {<a name="line.10494"></a>
<span class="sourceLineNo">10495</span> q = (float) (ibx / iby);<a name="line.10495"></a>
<span class="sourceLineNo">10496</span> den = (float) (ibx * q + iby);<a name="line.10496"></a>
<span class="sourceLineNo">10497</span> ox = (float) ((iax * q + iay) / den);<a name="line.10497"></a>
<span class="sourceLineNo">10498</span> oy = (float) ((iay * q - ibx) / den);<a name="line.10498"></a>
<span class="sourceLineNo">10499</span> } else {<a name="line.10499"></a>
<span class="sourceLineNo">10500</span> q = (float) (iby / ibx);<a name="line.10500"></a>
<span class="sourceLineNo">10501</span> den = (float) (iby * q + ibx);<a name="line.10501"></a>
<span class="sourceLineNo">10502</span> ox = (float) ((iay * q + iax) / den);<a name="line.10502"></a>
<span class="sourceLineNo">10503</span> oy = (float) ((iay - iax * q) / den);<a name="line.10503"></a>
<span class="sourceLineNo">10504</span> }<a name="line.10504"></a>
<span class="sourceLineNo">10505</span> oc64data[it.oIndex] = ox;<a name="line.10505"></a>
<span class="sourceLineNo">10506</span> oc64data[it.oIndex + 1] = oy;<a name="line.10506"></a>
<span class="sourceLineNo">10507</span> }<a name="line.10507"></a>
<span class="sourceLineNo">10508</span> }<a name="line.10508"></a>
<span class="sourceLineNo">10509</span> } else if (!db.isComplex()) {<a name="line.10509"></a>
<span class="sourceLineNo">10510</span> final double iby = 0;<a name="line.10510"></a>
<span class="sourceLineNo">10511</span> while (it.hasNext()) {<a name="line.10511"></a>
<span class="sourceLineNo">10512</span> final double iax = it.aDouble;<a name="line.10512"></a>
<span class="sourceLineNo">10513</span> final double ibx = it.bDouble;<a name="line.10513"></a>
<span class="sourceLineNo">10514</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.10514"></a>
<span class="sourceLineNo">10515</span> float ox;<a name="line.10515"></a>
<span class="sourceLineNo">10516</span> float oy;<a name="line.10516"></a>
<span class="sourceLineNo">10517</span> float q;<a name="line.10517"></a>
<span class="sourceLineNo">10518</span> float den;<a name="line.10518"></a>
<span class="sourceLineNo">10519</span> if (iby == 0) {<a name="line.10519"></a>
<span class="sourceLineNo">10520</span> ox = (float) (iax / ibx);<a name="line.10520"></a>
<span class="sourceLineNo">10521</span> oy = (float) (iay / ibx);<a name="line.10521"></a>
<span class="sourceLineNo">10522</span> } else if (ibx == 0) {<a name="line.10522"></a>
<span class="sourceLineNo">10523</span> ox = (float) (iay / iby);<a name="line.10523"></a>
<span class="sourceLineNo">10524</span> oy = (float) (-iax / iby);<a name="line.10524"></a>
<span class="sourceLineNo">10525</span> } else if (Math.abs(ibx) &lt; Math.abs(iby)) {<a name="line.10525"></a>
<span class="sourceLineNo">10526</span> q = (float) (ibx / iby);<a name="line.10526"></a>
<span class="sourceLineNo">10527</span> den = (float) (ibx * q + iby);<a name="line.10527"></a>
<span class="sourceLineNo">10528</span> ox = (float) ((iax * q + iay) / den);<a name="line.10528"></a>
<span class="sourceLineNo">10529</span> oy = (float) ((iay * q - ibx) / den);<a name="line.10529"></a>
<span class="sourceLineNo">10530</span> } else {<a name="line.10530"></a>
<span class="sourceLineNo">10531</span> q = (float) (iby / ibx);<a name="line.10531"></a>
<span class="sourceLineNo">10532</span> den = (float) (iby * q + ibx);<a name="line.10532"></a>
<span class="sourceLineNo">10533</span> ox = (float) ((iay * q + iax) / den);<a name="line.10533"></a>
<span class="sourceLineNo">10534</span> oy = (float) ((iay - iax * q) / den);<a name="line.10534"></a>
<span class="sourceLineNo">10535</span> }<a name="line.10535"></a>
<span class="sourceLineNo">10536</span> oc64data[it.oIndex] = ox;<a name="line.10536"></a>
<span class="sourceLineNo">10537</span> oc64data[it.oIndex + 1] = oy;<a name="line.10537"></a>
<span class="sourceLineNo">10538</span> }<a name="line.10538"></a>
<span class="sourceLineNo">10539</span> } else {<a name="line.10539"></a>
<span class="sourceLineNo">10540</span> while (it.hasNext()) {<a name="line.10540"></a>
<span class="sourceLineNo">10541</span> final double iax = it.aDouble;<a name="line.10541"></a>
<span class="sourceLineNo">10542</span> final double ibx = it.bDouble;<a name="line.10542"></a>
<span class="sourceLineNo">10543</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.10543"></a>
<span class="sourceLineNo">10544</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.10544"></a>
<span class="sourceLineNo">10545</span> float ox;<a name="line.10545"></a>
<span class="sourceLineNo">10546</span> float oy;<a name="line.10546"></a>
<span class="sourceLineNo">10547</span> float q;<a name="line.10547"></a>
<span class="sourceLineNo">10548</span> float den;<a name="line.10548"></a>
<span class="sourceLineNo">10549</span> if (iby == 0) {<a name="line.10549"></a>
<span class="sourceLineNo">10550</span> ox = (float) (iax / ibx);<a name="line.10550"></a>
<span class="sourceLineNo">10551</span> oy = (float) (iay / ibx);<a name="line.10551"></a>
<span class="sourceLineNo">10552</span> } else if (ibx == 0) {<a name="line.10552"></a>
<span class="sourceLineNo">10553</span> ox = (float) (iay / iby);<a name="line.10553"></a>
<span class="sourceLineNo">10554</span> oy = (float) (-iax / iby);<a name="line.10554"></a>
<span class="sourceLineNo">10555</span> } else if (Math.abs(ibx) &lt; Math.abs(iby)) {<a name="line.10555"></a>
<span class="sourceLineNo">10556</span> q = (float) (ibx / iby);<a name="line.10556"></a>
<span class="sourceLineNo">10557</span> den = (float) (ibx * q + iby);<a name="line.10557"></a>
<span class="sourceLineNo">10558</span> ox = (float) ((iax * q + iay) / den);<a name="line.10558"></a>
<span class="sourceLineNo">10559</span> oy = (float) ((iay * q - ibx) / den);<a name="line.10559"></a>
<span class="sourceLineNo">10560</span> } else {<a name="line.10560"></a>
<span class="sourceLineNo">10561</span> q = (float) (iby / ibx);<a name="line.10561"></a>
<span class="sourceLineNo">10562</span> den = (float) (iby * q + ibx);<a name="line.10562"></a>
<span class="sourceLineNo">10563</span> ox = (float) ((iay * q + iax) / den);<a name="line.10563"></a>
<span class="sourceLineNo">10564</span> oy = (float) ((iay - iax * q) / den);<a name="line.10564"></a>
<span class="sourceLineNo">10565</span> }<a name="line.10565"></a>
<span class="sourceLineNo">10566</span> oc64data[it.oIndex] = ox;<a name="line.10566"></a>
<span class="sourceLineNo">10567</span> oc64data[it.oIndex + 1] = oy;<a name="line.10567"></a>
<span class="sourceLineNo">10568</span> }<a name="line.10568"></a>
<span class="sourceLineNo">10569</span> }<a name="line.10569"></a>
<span class="sourceLineNo">10570</span> break;<a name="line.10570"></a>
<span class="sourceLineNo">10571</span> case Dataset.COMPLEX128:<a name="line.10571"></a>
<span class="sourceLineNo">10572</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.10572"></a>
<span class="sourceLineNo">10573</span> if (!da.isComplex()) {<a name="line.10573"></a>
<span class="sourceLineNo">10574</span> if (it.isOutputDouble()) {<a name="line.10574"></a>
<span class="sourceLineNo">10575</span> final double iay = 0;<a name="line.10575"></a>
<span class="sourceLineNo">10576</span> if (db.isComplex()) {<a name="line.10576"></a>
<span class="sourceLineNo">10577</span> while (it.hasNext()) {<a name="line.10577"></a>
<span class="sourceLineNo">10578</span> final double iax = it.aDouble;<a name="line.10578"></a>
<span class="sourceLineNo">10579</span> final double ibx = it.bDouble;<a name="line.10579"></a>
<span class="sourceLineNo">10580</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.10580"></a>
<span class="sourceLineNo">10581</span> double ox;<a name="line.10581"></a>
<span class="sourceLineNo">10582</span> double oy;<a name="line.10582"></a>
<span class="sourceLineNo">10583</span> double q;<a name="line.10583"></a>
<span class="sourceLineNo">10584</span> double den;<a name="line.10584"></a>
<span class="sourceLineNo">10585</span> if (iby == 0) {<a name="line.10585"></a>
<span class="sourceLineNo">10586</span> ox = (iax / ibx);<a name="line.10586"></a>
<span class="sourceLineNo">10587</span> oy = (iay / ibx);<a name="line.10587"></a>
<span class="sourceLineNo">10588</span> } else if (ibx == 0) {<a name="line.10588"></a>
<span class="sourceLineNo">10589</span> ox = (iay / iby);<a name="line.10589"></a>
<span class="sourceLineNo">10590</span> oy = (-iax / iby);<a name="line.10590"></a>
<span class="sourceLineNo">10591</span> } else if (Math.abs(ibx) &lt; Math.abs(iby)) {<a name="line.10591"></a>
<span class="sourceLineNo">10592</span> q = (ibx / iby);<a name="line.10592"></a>
<span class="sourceLineNo">10593</span> den = (ibx * q + iby);<a name="line.10593"></a>
<span class="sourceLineNo">10594</span> ox = ((iax * q + iay) / den);<a name="line.10594"></a>
<span class="sourceLineNo">10595</span> oy = ((iay * q - ibx) / den);<a name="line.10595"></a>
<span class="sourceLineNo">10596</span> } else {<a name="line.10596"></a>
<span class="sourceLineNo">10597</span> q = (iby / ibx);<a name="line.10597"></a>
<span class="sourceLineNo">10598</span> den = (iby * q + ibx);<a name="line.10598"></a>
<span class="sourceLineNo">10599</span> ox = ((iay * q + iax) / den);<a name="line.10599"></a>
<span class="sourceLineNo">10600</span> oy = ((iay - iax * q) / den);<a name="line.10600"></a>
<span class="sourceLineNo">10601</span> }<a name="line.10601"></a>
<span class="sourceLineNo">10602</span> oc128data[it.oIndex] = ox;<a name="line.10602"></a>
<span class="sourceLineNo">10603</span> oc128data[it.oIndex + 1] = oy;<a name="line.10603"></a>
<span class="sourceLineNo">10604</span> }<a name="line.10604"></a>
<span class="sourceLineNo">10605</span> } else {<a name="line.10605"></a>
<span class="sourceLineNo">10606</span> while (it.hasNext()) {<a name="line.10606"></a>
<span class="sourceLineNo">10607</span> final double iax = it.aDouble;<a name="line.10607"></a>
<span class="sourceLineNo">10608</span> final double ibx = it.bDouble;<a name="line.10608"></a>
<span class="sourceLineNo">10609</span> final double iby = 0;<a name="line.10609"></a>
<span class="sourceLineNo">10610</span> double ox;<a name="line.10610"></a>
<span class="sourceLineNo">10611</span> double oy;<a name="line.10611"></a>
<span class="sourceLineNo">10612</span> double q;<a name="line.10612"></a>
<span class="sourceLineNo">10613</span> double den;<a name="line.10613"></a>
<span class="sourceLineNo">10614</span> if (iby == 0) {<a name="line.10614"></a>
<span class="sourceLineNo">10615</span> ox = (iax / ibx);<a name="line.10615"></a>
<span class="sourceLineNo">10616</span> oy = (iay / ibx);<a name="line.10616"></a>
<span class="sourceLineNo">10617</span> } else if (ibx == 0) {<a name="line.10617"></a>
<span class="sourceLineNo">10618</span> ox = (iay / iby);<a name="line.10618"></a>
<span class="sourceLineNo">10619</span> oy = (-iax / iby);<a name="line.10619"></a>
<span class="sourceLineNo">10620</span> } else if (Math.abs(ibx) &lt; Math.abs(iby)) {<a name="line.10620"></a>
<span class="sourceLineNo">10621</span> q = (ibx / iby);<a name="line.10621"></a>
<span class="sourceLineNo">10622</span> den = (ibx * q + iby);<a name="line.10622"></a>
<span class="sourceLineNo">10623</span> ox = ((iax * q + iay) / den);<a name="line.10623"></a>
<span class="sourceLineNo">10624</span> oy = ((iay * q - ibx) / den);<a name="line.10624"></a>
<span class="sourceLineNo">10625</span> } else {<a name="line.10625"></a>
<span class="sourceLineNo">10626</span> q = (iby / ibx);<a name="line.10626"></a>
<span class="sourceLineNo">10627</span> den = (iby * q + ibx);<a name="line.10627"></a>
<span class="sourceLineNo">10628</span> ox = ((iay * q + iax) / den);<a name="line.10628"></a>
<span class="sourceLineNo">10629</span> oy = ((iay - iax * q) / den);<a name="line.10629"></a>
<span class="sourceLineNo">10630</span> }<a name="line.10630"></a>
<span class="sourceLineNo">10631</span> oc128data[it.oIndex] = ox;<a name="line.10631"></a>
<span class="sourceLineNo">10632</span> oc128data[it.oIndex + 1] = oy;<a name="line.10632"></a>
<span class="sourceLineNo">10633</span> }<a name="line.10633"></a>
<span class="sourceLineNo">10634</span> }<a name="line.10634"></a>
<span class="sourceLineNo">10635</span> } else {<a name="line.10635"></a>
<span class="sourceLineNo">10636</span> final long iay = 0;<a name="line.10636"></a>
<span class="sourceLineNo">10637</span> while (it.hasNext()) {<a name="line.10637"></a>
<span class="sourceLineNo">10638</span> final long iax = it.aLong;<a name="line.10638"></a>
<span class="sourceLineNo">10639</span> final long ibx = it.bLong;<a name="line.10639"></a>
<span class="sourceLineNo">10640</span> final long iby = 0;<a name="line.10640"></a>
<span class="sourceLineNo">10641</span> double ox;<a name="line.10641"></a>
<span class="sourceLineNo">10642</span> double oy;<a name="line.10642"></a>
<span class="sourceLineNo">10643</span> double q;<a name="line.10643"></a>
<span class="sourceLineNo">10644</span> double den;<a name="line.10644"></a>
<span class="sourceLineNo">10645</span> if (iby == 0) {<a name="line.10645"></a>
<span class="sourceLineNo">10646</span> ox = (iax / ibx);<a name="line.10646"></a>
<span class="sourceLineNo">10647</span> oy = (iay / ibx);<a name="line.10647"></a>
<span class="sourceLineNo">10648</span> } else if (ibx == 0) {<a name="line.10648"></a>
<span class="sourceLineNo">10649</span> ox = (iay / iby);<a name="line.10649"></a>
<span class="sourceLineNo">10650</span> oy = (-iax / iby);<a name="line.10650"></a>
<span class="sourceLineNo">10651</span> } else if (Math.abs(ibx) &lt; Math.abs(iby)) {<a name="line.10651"></a>
<span class="sourceLineNo">10652</span> q = (ibx / iby);<a name="line.10652"></a>
<span class="sourceLineNo">10653</span> den = (ibx * q + iby);<a name="line.10653"></a>
<span class="sourceLineNo">10654</span> ox = ((iax * q + iay) / den);<a name="line.10654"></a>
<span class="sourceLineNo">10655</span> oy = ((iay * q - ibx) / den);<a name="line.10655"></a>
<span class="sourceLineNo">10656</span> } else {<a name="line.10656"></a>
<span class="sourceLineNo">10657</span> q = (iby / ibx);<a name="line.10657"></a>
<span class="sourceLineNo">10658</span> den = (iby * q + ibx);<a name="line.10658"></a>
<span class="sourceLineNo">10659</span> ox = ((iay * q + iax) / den);<a name="line.10659"></a>
<span class="sourceLineNo">10660</span> oy = ((iay - iax * q) / den);<a name="line.10660"></a>
<span class="sourceLineNo">10661</span> }<a name="line.10661"></a>
<span class="sourceLineNo">10662</span> oc128data[it.oIndex] = ox;<a name="line.10662"></a>
<span class="sourceLineNo">10663</span> oc128data[it.oIndex + 1] = oy;<a name="line.10663"></a>
<span class="sourceLineNo">10664</span> }<a name="line.10664"></a>
<span class="sourceLineNo">10665</span> }<a name="line.10665"></a>
<span class="sourceLineNo">10666</span> } else if (!db.isComplex()) {<a name="line.10666"></a>
<span class="sourceLineNo">10667</span> final double iby = 0;<a name="line.10667"></a>
<span class="sourceLineNo">10668</span> while (it.hasNext()) {<a name="line.10668"></a>
<span class="sourceLineNo">10669</span> final double iax = it.aDouble;<a name="line.10669"></a>
<span class="sourceLineNo">10670</span> final double ibx = it.bDouble;<a name="line.10670"></a>
<span class="sourceLineNo">10671</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.10671"></a>
<span class="sourceLineNo">10672</span> double ox;<a name="line.10672"></a>
<span class="sourceLineNo">10673</span> double oy;<a name="line.10673"></a>
<span class="sourceLineNo">10674</span> double q;<a name="line.10674"></a>
<span class="sourceLineNo">10675</span> double den;<a name="line.10675"></a>
<span class="sourceLineNo">10676</span> if (iby == 0) {<a name="line.10676"></a>
<span class="sourceLineNo">10677</span> ox = (iax / ibx);<a name="line.10677"></a>
<span class="sourceLineNo">10678</span> oy = (iay / ibx);<a name="line.10678"></a>
<span class="sourceLineNo">10679</span> } else if (ibx == 0) {<a name="line.10679"></a>
<span class="sourceLineNo">10680</span> ox = (iay / iby);<a name="line.10680"></a>
<span class="sourceLineNo">10681</span> oy = (-iax / iby);<a name="line.10681"></a>
<span class="sourceLineNo">10682</span> } else if (Math.abs(ibx) &lt; Math.abs(iby)) {<a name="line.10682"></a>
<span class="sourceLineNo">10683</span> q = (ibx / iby);<a name="line.10683"></a>
<span class="sourceLineNo">10684</span> den = (ibx * q + iby);<a name="line.10684"></a>
<span class="sourceLineNo">10685</span> ox = ((iax * q + iay) / den);<a name="line.10685"></a>
<span class="sourceLineNo">10686</span> oy = ((iay * q - ibx) / den);<a name="line.10686"></a>
<span class="sourceLineNo">10687</span> } else {<a name="line.10687"></a>
<span class="sourceLineNo">10688</span> q = (iby / ibx);<a name="line.10688"></a>
<span class="sourceLineNo">10689</span> den = (iby * q + ibx);<a name="line.10689"></a>
<span class="sourceLineNo">10690</span> ox = ((iay * q + iax) / den);<a name="line.10690"></a>
<span class="sourceLineNo">10691</span> oy = ((iay - iax * q) / den);<a name="line.10691"></a>
<span class="sourceLineNo">10692</span> }<a name="line.10692"></a>
<span class="sourceLineNo">10693</span> oc128data[it.oIndex] = ox;<a name="line.10693"></a>
<span class="sourceLineNo">10694</span> oc128data[it.oIndex + 1] = oy;<a name="line.10694"></a>
<span class="sourceLineNo">10695</span> }<a name="line.10695"></a>
<span class="sourceLineNo">10696</span> } else {<a name="line.10696"></a>
<span class="sourceLineNo">10697</span> while (it.hasNext()) {<a name="line.10697"></a>
<span class="sourceLineNo">10698</span> final double iax = it.aDouble;<a name="line.10698"></a>
<span class="sourceLineNo">10699</span> final double ibx = it.bDouble;<a name="line.10699"></a>
<span class="sourceLineNo">10700</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.10700"></a>
<span class="sourceLineNo">10701</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.10701"></a>
<span class="sourceLineNo">10702</span> double ox;<a name="line.10702"></a>
<span class="sourceLineNo">10703</span> double oy;<a name="line.10703"></a>
<span class="sourceLineNo">10704</span> double q;<a name="line.10704"></a>
<span class="sourceLineNo">10705</span> double den;<a name="line.10705"></a>
<span class="sourceLineNo">10706</span> if (iby == 0) {<a name="line.10706"></a>
<span class="sourceLineNo">10707</span> ox = (iax / ibx);<a name="line.10707"></a>
<span class="sourceLineNo">10708</span> oy = (iay / ibx);<a name="line.10708"></a>
<span class="sourceLineNo">10709</span> } else if (ibx == 0) {<a name="line.10709"></a>
<span class="sourceLineNo">10710</span> ox = (iay / iby);<a name="line.10710"></a>
<span class="sourceLineNo">10711</span> oy = (-iax / iby);<a name="line.10711"></a>
<span class="sourceLineNo">10712</span> } else if (Math.abs(ibx) &lt; Math.abs(iby)) {<a name="line.10712"></a>
<span class="sourceLineNo">10713</span> q = (ibx / iby);<a name="line.10713"></a>
<span class="sourceLineNo">10714</span> den = (ibx * q + iby);<a name="line.10714"></a>
<span class="sourceLineNo">10715</span> ox = ((iax * q + iay) / den);<a name="line.10715"></a>
<span class="sourceLineNo">10716</span> oy = ((iay * q - ibx) / den);<a name="line.10716"></a>
<span class="sourceLineNo">10717</span> } else {<a name="line.10717"></a>
<span class="sourceLineNo">10718</span> q = (iby / ibx);<a name="line.10718"></a>
<span class="sourceLineNo">10719</span> den = (iby * q + ibx);<a name="line.10719"></a>
<span class="sourceLineNo">10720</span> ox = ((iay * q + iax) / den);<a name="line.10720"></a>
<span class="sourceLineNo">10721</span> oy = ((iay - iax * q) / den);<a name="line.10721"></a>
<span class="sourceLineNo">10722</span> }<a name="line.10722"></a>
<span class="sourceLineNo">10723</span> oc128data[it.oIndex] = ox;<a name="line.10723"></a>
<span class="sourceLineNo">10724</span> oc128data[it.oIndex + 1] = oy;<a name="line.10724"></a>
<span class="sourceLineNo">10725</span> }<a name="line.10725"></a>
<span class="sourceLineNo">10726</span> }<a name="line.10726"></a>
<span class="sourceLineNo">10727</span> break;<a name="line.10727"></a>
<span class="sourceLineNo">10728</span> default:<a name="line.10728"></a>
<span class="sourceLineNo">10729</span> throw new IllegalArgumentException("divideTowardsFloor supports integer, compound integer, real, compound real, complex datasets only");<a name="line.10729"></a>
<span class="sourceLineNo">10730</span> }<a name="line.10730"></a>
<span class="sourceLineNo">10731</span><a name="line.10731"></a>
<span class="sourceLineNo">10732</span> addBinaryOperatorName(da, db, result, "/");<a name="line.10732"></a>
<span class="sourceLineNo">10733</span> return result;<a name="line.10733"></a>
<span class="sourceLineNo">10734</span> }<a name="line.10734"></a>
<span class="sourceLineNo">10735</span><a name="line.10735"></a>
<span class="sourceLineNo">10736</span> /**<a name="line.10736"></a>
<span class="sourceLineNo">10737</span> * power operator<a name="line.10737"></a>
<span class="sourceLineNo">10738</span> * @param a<a name="line.10738"></a>
<span class="sourceLineNo">10739</span> * @param b<a name="line.10739"></a>
<span class="sourceLineNo">10740</span> * @return {@code a ** b}, raise a to power of b<a name="line.10740"></a>
<span class="sourceLineNo">10741</span> */<a name="line.10741"></a>
<span class="sourceLineNo">10742</span> public static Dataset power(final Object a, final Object b) {<a name="line.10742"></a>
<span class="sourceLineNo">10743</span> return power(a, b, null);<a name="line.10743"></a>
<span class="sourceLineNo">10744</span> }<a name="line.10744"></a>
<span class="sourceLineNo">10745</span><a name="line.10745"></a>
<span class="sourceLineNo">10746</span> /**<a name="line.10746"></a>
<span class="sourceLineNo">10747</span> * power operator<a name="line.10747"></a>
<span class="sourceLineNo">10748</span> * @param a<a name="line.10748"></a>
<span class="sourceLineNo">10749</span> * @param b<a name="line.10749"></a>
<span class="sourceLineNo">10750</span> * @param o output can be null - in which case, a new dataset is created<a name="line.10750"></a>
<span class="sourceLineNo">10751</span> * @return {@code a ** b}, raise a to power of b<a name="line.10751"></a>
<span class="sourceLineNo">10752</span> */<a name="line.10752"></a>
<span class="sourceLineNo">10753</span> public static Dataset power(final Object a, final Object b, final Dataset o) {<a name="line.10753"></a>
<span class="sourceLineNo">10754</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.10754"></a>
<span class="sourceLineNo">10755</span> Dataset db = b instanceof Dataset ? (Dataset) b : DatasetFactory.createFromObject(b);<a name="line.10755"></a>
<span class="sourceLineNo">10756</span> BroadcastIterator it = BroadcastIterator.createIterator(da, db, o, true);<a name="line.10756"></a>
<span class="sourceLineNo">10757</span> final Dataset result = it.getOutput();<a name="line.10757"></a>
<span class="sourceLineNo">10758</span> if (!result.isComplex()) {<a name="line.10758"></a>
<span class="sourceLineNo">10759</span> boolean change = false;<a name="line.10759"></a>
<span class="sourceLineNo">10760</span> if (da.isComplex()) {<a name="line.10760"></a>
<span class="sourceLineNo">10761</span> da = da.getRealView();<a name="line.10761"></a>
<span class="sourceLineNo">10762</span> change = true;<a name="line.10762"></a>
<span class="sourceLineNo">10763</span> }<a name="line.10763"></a>
<span class="sourceLineNo">10764</span> if (db.isComplex()) {<a name="line.10764"></a>
<span class="sourceLineNo">10765</span> db = db.getRealView();<a name="line.10765"></a>
<span class="sourceLineNo">10766</span> change = true;<a name="line.10766"></a>
<span class="sourceLineNo">10767</span> }<a name="line.10767"></a>
<span class="sourceLineNo">10768</span> if (change) {<a name="line.10768"></a>
<span class="sourceLineNo">10769</span> it = BroadcastIterator.createIterator(da, db, result, true);<a name="line.10769"></a>
<span class="sourceLineNo">10770</span> }<a name="line.10770"></a>
<span class="sourceLineNo">10771</span> }<a name="line.10771"></a>
<span class="sourceLineNo">10772</span> final int is = result.getElementsPerItem();<a name="line.10772"></a>
<span class="sourceLineNo">10773</span> final int as = da.getElementsPerItem();<a name="line.10773"></a>
<span class="sourceLineNo">10774</span> final int bs = db.getElementsPerItem();<a name="line.10774"></a>
<span class="sourceLineNo">10775</span> final int dt = result.getDType();<a name="line.10775"></a>
<span class="sourceLineNo">10776</span><a name="line.10776"></a>
<span class="sourceLineNo">10777</span> switch(dt) {<a name="line.10777"></a>
<span class="sourceLineNo">10778</span> case Dataset.INT8:<a name="line.10778"></a>
<span class="sourceLineNo">10779</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.10779"></a>
<span class="sourceLineNo">10780</span> if (it.isOutputDouble()) {<a name="line.10780"></a>
<span class="sourceLineNo">10781</span> while (it.hasNext()) {<a name="line.10781"></a>
<span class="sourceLineNo">10782</span> final double iax = it.aDouble;<a name="line.10782"></a>
<span class="sourceLineNo">10783</span> final double ibx = it.bDouble;<a name="line.10783"></a>
<span class="sourceLineNo">10784</span> byte ox;<a name="line.10784"></a>
<span class="sourceLineNo">10785</span> ox = (byte) toLong(Math.pow(iax, ibx));<a name="line.10785"></a>
<span class="sourceLineNo">10786</span> oi8data[it.oIndex] = ox;<a name="line.10786"></a>
<span class="sourceLineNo">10787</span> }<a name="line.10787"></a>
<span class="sourceLineNo">10788</span> } else {<a name="line.10788"></a>
<span class="sourceLineNo">10789</span> while (it.hasNext()) {<a name="line.10789"></a>
<span class="sourceLineNo">10790</span> final long iax = it.aLong;<a name="line.10790"></a>
<span class="sourceLineNo">10791</span> final long ibx = it.bLong;<a name="line.10791"></a>
<span class="sourceLineNo">10792</span> byte ox;<a name="line.10792"></a>
<span class="sourceLineNo">10793</span> ox = (byte) toLong(Math.pow(iax, ibx));<a name="line.10793"></a>
<span class="sourceLineNo">10794</span> oi8data[it.oIndex] = ox;<a name="line.10794"></a>
<span class="sourceLineNo">10795</span> }<a name="line.10795"></a>
<span class="sourceLineNo">10796</span> }<a name="line.10796"></a>
<span class="sourceLineNo">10797</span> break;<a name="line.10797"></a>
<span class="sourceLineNo">10798</span> case Dataset.INT16:<a name="line.10798"></a>
<span class="sourceLineNo">10799</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.10799"></a>
<span class="sourceLineNo">10800</span> if (it.isOutputDouble()) {<a name="line.10800"></a>
<span class="sourceLineNo">10801</span> while (it.hasNext()) {<a name="line.10801"></a>
<span class="sourceLineNo">10802</span> final double iax = it.aDouble;<a name="line.10802"></a>
<span class="sourceLineNo">10803</span> final double ibx = it.bDouble;<a name="line.10803"></a>
<span class="sourceLineNo">10804</span> short ox;<a name="line.10804"></a>
<span class="sourceLineNo">10805</span> ox = (short) toLong(Math.pow(iax, ibx));<a name="line.10805"></a>
<span class="sourceLineNo">10806</span> oi16data[it.oIndex] = ox;<a name="line.10806"></a>
<span class="sourceLineNo">10807</span> }<a name="line.10807"></a>
<span class="sourceLineNo">10808</span> } else {<a name="line.10808"></a>
<span class="sourceLineNo">10809</span> while (it.hasNext()) {<a name="line.10809"></a>
<span class="sourceLineNo">10810</span> final long iax = it.aLong;<a name="line.10810"></a>
<span class="sourceLineNo">10811</span> final long ibx = it.bLong;<a name="line.10811"></a>
<span class="sourceLineNo">10812</span> short ox;<a name="line.10812"></a>
<span class="sourceLineNo">10813</span> ox = (short) toLong(Math.pow(iax, ibx));<a name="line.10813"></a>
<span class="sourceLineNo">10814</span> oi16data[it.oIndex] = ox;<a name="line.10814"></a>
<span class="sourceLineNo">10815</span> }<a name="line.10815"></a>
<span class="sourceLineNo">10816</span> }<a name="line.10816"></a>
<span class="sourceLineNo">10817</span> break;<a name="line.10817"></a>
<span class="sourceLineNo">10818</span> case Dataset.INT64:<a name="line.10818"></a>
<span class="sourceLineNo">10819</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.10819"></a>
<span class="sourceLineNo">10820</span> if (it.isOutputDouble()) {<a name="line.10820"></a>
<span class="sourceLineNo">10821</span> while (it.hasNext()) {<a name="line.10821"></a>
<span class="sourceLineNo">10822</span> final double iax = it.aDouble;<a name="line.10822"></a>
<span class="sourceLineNo">10823</span> final double ibx = it.bDouble;<a name="line.10823"></a>
<span class="sourceLineNo">10824</span> long ox;<a name="line.10824"></a>
<span class="sourceLineNo">10825</span> ox = toLong(Math.pow(iax, ibx));<a name="line.10825"></a>
<span class="sourceLineNo">10826</span> oi64data[it.oIndex] = ox;<a name="line.10826"></a>
<span class="sourceLineNo">10827</span> }<a name="line.10827"></a>
<span class="sourceLineNo">10828</span> } else {<a name="line.10828"></a>
<span class="sourceLineNo">10829</span> while (it.hasNext()) {<a name="line.10829"></a>
<span class="sourceLineNo">10830</span> final long iax = it.aLong;<a name="line.10830"></a>
<span class="sourceLineNo">10831</span> final long ibx = it.bLong;<a name="line.10831"></a>
<span class="sourceLineNo">10832</span> long ox;<a name="line.10832"></a>
<span class="sourceLineNo">10833</span> ox = toLong(Math.pow(iax, ibx));<a name="line.10833"></a>
<span class="sourceLineNo">10834</span> oi64data[it.oIndex] = ox;<a name="line.10834"></a>
<span class="sourceLineNo">10835</span> }<a name="line.10835"></a>
<span class="sourceLineNo">10836</span> }<a name="line.10836"></a>
<span class="sourceLineNo">10837</span> break;<a name="line.10837"></a>
<span class="sourceLineNo">10838</span> case Dataset.INT32:<a name="line.10838"></a>
<span class="sourceLineNo">10839</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.10839"></a>
<span class="sourceLineNo">10840</span> if (it.isOutputDouble()) {<a name="line.10840"></a>
<span class="sourceLineNo">10841</span> while (it.hasNext()) {<a name="line.10841"></a>
<span class="sourceLineNo">10842</span> final double iax = it.aDouble;<a name="line.10842"></a>
<span class="sourceLineNo">10843</span> final double ibx = it.bDouble;<a name="line.10843"></a>
<span class="sourceLineNo">10844</span> int ox;<a name="line.10844"></a>
<span class="sourceLineNo">10845</span> ox = (int) toLong(Math.pow(iax, ibx));<a name="line.10845"></a>
<span class="sourceLineNo">10846</span> oi32data[it.oIndex] = ox;<a name="line.10846"></a>
<span class="sourceLineNo">10847</span> }<a name="line.10847"></a>
<span class="sourceLineNo">10848</span> } else {<a name="line.10848"></a>
<span class="sourceLineNo">10849</span> while (it.hasNext()) {<a name="line.10849"></a>
<span class="sourceLineNo">10850</span> final long iax = it.aLong;<a name="line.10850"></a>
<span class="sourceLineNo">10851</span> final long ibx = it.bLong;<a name="line.10851"></a>
<span class="sourceLineNo">10852</span> int ox;<a name="line.10852"></a>
<span class="sourceLineNo">10853</span> ox = (int) toLong(Math.pow(iax, ibx));<a name="line.10853"></a>
<span class="sourceLineNo">10854</span> oi32data[it.oIndex] = ox;<a name="line.10854"></a>
<span class="sourceLineNo">10855</span> }<a name="line.10855"></a>
<span class="sourceLineNo">10856</span> }<a name="line.10856"></a>
<span class="sourceLineNo">10857</span> break;<a name="line.10857"></a>
<span class="sourceLineNo">10858</span> case Dataset.ARRAYINT8:<a name="line.10858"></a>
<span class="sourceLineNo">10859</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.10859"></a>
<span class="sourceLineNo">10860</span> if (is == 1) {<a name="line.10860"></a>
<span class="sourceLineNo">10861</span> if (it.isOutputDouble()) {<a name="line.10861"></a>
<span class="sourceLineNo">10862</span> while (it.hasNext()) {<a name="line.10862"></a>
<span class="sourceLineNo">10863</span> final double iax = it.aDouble;<a name="line.10863"></a>
<span class="sourceLineNo">10864</span> final double ibx = it.bDouble;<a name="line.10864"></a>
<span class="sourceLineNo">10865</span> byte ox;<a name="line.10865"></a>
<span class="sourceLineNo">10866</span> ox = (byte) toLong(Math.pow(iax, ibx));<a name="line.10866"></a>
<span class="sourceLineNo">10867</span> oai8data[it.oIndex] = ox;<a name="line.10867"></a>
<span class="sourceLineNo">10868</span> }<a name="line.10868"></a>
<span class="sourceLineNo">10869</span> } else {<a name="line.10869"></a>
<span class="sourceLineNo">10870</span> while (it.hasNext()) {<a name="line.10870"></a>
<span class="sourceLineNo">10871</span> final long iax = it.aLong;<a name="line.10871"></a>
<span class="sourceLineNo">10872</span> final long ibx = it.bLong;<a name="line.10872"></a>
<span class="sourceLineNo">10873</span> byte ox;<a name="line.10873"></a>
<span class="sourceLineNo">10874</span> ox = (byte) toLong(Math.pow(iax, ibx));<a name="line.10874"></a>
<span class="sourceLineNo">10875</span> oai8data[it.oIndex] = ox;<a name="line.10875"></a>
<span class="sourceLineNo">10876</span> }<a name="line.10876"></a>
<span class="sourceLineNo">10877</span> }<a name="line.10877"></a>
<span class="sourceLineNo">10878</span> } else if (as &lt; bs) {<a name="line.10878"></a>
<span class="sourceLineNo">10879</span> if (it.isOutputDouble()) {<a name="line.10879"></a>
<span class="sourceLineNo">10880</span> while (it.hasNext()) {<a name="line.10880"></a>
<span class="sourceLineNo">10881</span> final double iax = it.aDouble;<a name="line.10881"></a>
<span class="sourceLineNo">10882</span> double ibx = it.bDouble;<a name="line.10882"></a>
<span class="sourceLineNo">10883</span> byte ox;<a name="line.10883"></a>
<span class="sourceLineNo">10884</span> ox = (byte) toLong(Math.pow(iax, ibx));<a name="line.10884"></a>
<span class="sourceLineNo">10885</span> oai8data[it.oIndex] = ox;<a name="line.10885"></a>
<span class="sourceLineNo">10886</span> for (int j = 1; j &lt; is; j++) {<a name="line.10886"></a>
<span class="sourceLineNo">10887</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.10887"></a>
<span class="sourceLineNo">10888</span> ox = (byte) toLong(Math.pow(iax, ibx));<a name="line.10888"></a>
<span class="sourceLineNo">10889</span> oai8data[it.oIndex + j] = ox;<a name="line.10889"></a>
<span class="sourceLineNo">10890</span> }<a name="line.10890"></a>
<span class="sourceLineNo">10891</span> }<a name="line.10891"></a>
<span class="sourceLineNo">10892</span> } else {<a name="line.10892"></a>
<span class="sourceLineNo">10893</span> while (it.hasNext()) {<a name="line.10893"></a>
<span class="sourceLineNo">10894</span> final long iax = it.aLong;<a name="line.10894"></a>
<span class="sourceLineNo">10895</span> long ibx = it.bLong;<a name="line.10895"></a>
<span class="sourceLineNo">10896</span> byte ox;<a name="line.10896"></a>
<span class="sourceLineNo">10897</span> ox = (byte) toLong(Math.pow(iax, ibx));<a name="line.10897"></a>
<span class="sourceLineNo">10898</span> oai8data[it.oIndex] = ox;<a name="line.10898"></a>
<span class="sourceLineNo">10899</span> for (int j = 1; j &lt; is; j++) {<a name="line.10899"></a>
<span class="sourceLineNo">10900</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.10900"></a>
<span class="sourceLineNo">10901</span> ox = (byte) toLong(Math.pow(iax, ibx));<a name="line.10901"></a>
<span class="sourceLineNo">10902</span> oai8data[it.oIndex + j] = ox;<a name="line.10902"></a>
<span class="sourceLineNo">10903</span> }<a name="line.10903"></a>
<span class="sourceLineNo">10904</span> }<a name="line.10904"></a>
<span class="sourceLineNo">10905</span> }<a name="line.10905"></a>
<span class="sourceLineNo">10906</span> } else if (as &gt; bs) {<a name="line.10906"></a>
<span class="sourceLineNo">10907</span> if (it.isOutputDouble()) {<a name="line.10907"></a>
<span class="sourceLineNo">10908</span> while (it.hasNext()) {<a name="line.10908"></a>
<span class="sourceLineNo">10909</span> double iax = it.aDouble;<a name="line.10909"></a>
<span class="sourceLineNo">10910</span> final double ibx = it.bDouble;<a name="line.10910"></a>
<span class="sourceLineNo">10911</span> byte ox;<a name="line.10911"></a>
<span class="sourceLineNo">10912</span> ox = (byte) toLong(Math.pow(iax, ibx));<a name="line.10912"></a>
<span class="sourceLineNo">10913</span> oai8data[it.oIndex] = ox;<a name="line.10913"></a>
<span class="sourceLineNo">10914</span> for (int j = 1; j &lt; is; j++) {<a name="line.10914"></a>
<span class="sourceLineNo">10915</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.10915"></a>
<span class="sourceLineNo">10916</span> ox = (byte) toLong(Math.pow(iax, ibx));<a name="line.10916"></a>
<span class="sourceLineNo">10917</span> oai8data[it.oIndex + j] = ox;<a name="line.10917"></a>
<span class="sourceLineNo">10918</span> }<a name="line.10918"></a>
<span class="sourceLineNo">10919</span> }<a name="line.10919"></a>
<span class="sourceLineNo">10920</span> } else {<a name="line.10920"></a>
<span class="sourceLineNo">10921</span> while (it.hasNext()) {<a name="line.10921"></a>
<span class="sourceLineNo">10922</span> long iax = it.aLong;<a name="line.10922"></a>
<span class="sourceLineNo">10923</span> final long ibx = it.bLong;<a name="line.10923"></a>
<span class="sourceLineNo">10924</span> byte ox;<a name="line.10924"></a>
<span class="sourceLineNo">10925</span> ox = (byte) toLong(Math.pow(iax, ibx));<a name="line.10925"></a>
<span class="sourceLineNo">10926</span> oai8data[it.oIndex] = ox;<a name="line.10926"></a>
<span class="sourceLineNo">10927</span> for (int j = 1; j &lt; is; j++) {<a name="line.10927"></a>
<span class="sourceLineNo">10928</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.10928"></a>
<span class="sourceLineNo">10929</span> ox = (byte) toLong(Math.pow(iax, ibx));<a name="line.10929"></a>
<span class="sourceLineNo">10930</span> oai8data[it.oIndex + j] = ox;<a name="line.10930"></a>
<span class="sourceLineNo">10931</span> }<a name="line.10931"></a>
<span class="sourceLineNo">10932</span> }<a name="line.10932"></a>
<span class="sourceLineNo">10933</span> }<a name="line.10933"></a>
<span class="sourceLineNo">10934</span> } else if (as == 1) {<a name="line.10934"></a>
<span class="sourceLineNo">10935</span> if (it.isOutputDouble()) {<a name="line.10935"></a>
<span class="sourceLineNo">10936</span> while (it.hasNext()) {<a name="line.10936"></a>
<span class="sourceLineNo">10937</span> final double iax = it.aDouble;<a name="line.10937"></a>
<span class="sourceLineNo">10938</span> final double ibx = it.bDouble;<a name="line.10938"></a>
<span class="sourceLineNo">10939</span> byte ox;<a name="line.10939"></a>
<span class="sourceLineNo">10940</span> ox = (byte) toLong(Math.pow(iax, ibx));<a name="line.10940"></a>
<span class="sourceLineNo">10941</span> for (int j = 0; j &lt; is; j++) {<a name="line.10941"></a>
<span class="sourceLineNo">10942</span> oai8data[it.oIndex + j] = ox;<a name="line.10942"></a>
<span class="sourceLineNo">10943</span> }<a name="line.10943"></a>
<span class="sourceLineNo">10944</span> }<a name="line.10944"></a>
<span class="sourceLineNo">10945</span> } else {<a name="line.10945"></a>
<span class="sourceLineNo">10946</span> while (it.hasNext()) {<a name="line.10946"></a>
<span class="sourceLineNo">10947</span> final long iax = it.aLong;<a name="line.10947"></a>
<span class="sourceLineNo">10948</span> final long ibx = it.bLong;<a name="line.10948"></a>
<span class="sourceLineNo">10949</span> byte ox;<a name="line.10949"></a>
<span class="sourceLineNo">10950</span> ox = (byte) toLong(Math.pow(iax, ibx));<a name="line.10950"></a>
<span class="sourceLineNo">10951</span> for (int j = 0; j &lt; is; j++) {<a name="line.10951"></a>
<span class="sourceLineNo">10952</span> oai8data[it.oIndex + j] = ox;<a name="line.10952"></a>
<span class="sourceLineNo">10953</span> }<a name="line.10953"></a>
<span class="sourceLineNo">10954</span> }<a name="line.10954"></a>
<span class="sourceLineNo">10955</span> }<a name="line.10955"></a>
<span class="sourceLineNo">10956</span> } else {<a name="line.10956"></a>
<span class="sourceLineNo">10957</span> if (it.isOutputDouble()) {<a name="line.10957"></a>
<span class="sourceLineNo">10958</span> while (it.hasNext()) {<a name="line.10958"></a>
<span class="sourceLineNo">10959</span> double iax = it.aDouble;<a name="line.10959"></a>
<span class="sourceLineNo">10960</span> double ibx = it.bDouble;<a name="line.10960"></a>
<span class="sourceLineNo">10961</span> byte ox;<a name="line.10961"></a>
<span class="sourceLineNo">10962</span> ox = (byte) toLong(Math.pow(iax, ibx));<a name="line.10962"></a>
<span class="sourceLineNo">10963</span> oai8data[it.oIndex] = ox;<a name="line.10963"></a>
<span class="sourceLineNo">10964</span> for (int j = 1; j &lt; is; j++) {<a name="line.10964"></a>
<span class="sourceLineNo">10965</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.10965"></a>
<span class="sourceLineNo">10966</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.10966"></a>
<span class="sourceLineNo">10967</span> ox = (byte) toLong(Math.pow(iax, ibx));<a name="line.10967"></a>
<span class="sourceLineNo">10968</span> oai8data[it.oIndex + j] = ox;<a name="line.10968"></a>
<span class="sourceLineNo">10969</span> }<a name="line.10969"></a>
<span class="sourceLineNo">10970</span> }<a name="line.10970"></a>
<span class="sourceLineNo">10971</span> } else {<a name="line.10971"></a>
<span class="sourceLineNo">10972</span> while (it.hasNext()) {<a name="line.10972"></a>
<span class="sourceLineNo">10973</span> long iax = it.aLong;<a name="line.10973"></a>
<span class="sourceLineNo">10974</span> long ibx = it.bLong;<a name="line.10974"></a>
<span class="sourceLineNo">10975</span> byte ox;<a name="line.10975"></a>
<span class="sourceLineNo">10976</span> ox = (byte) toLong(Math.pow(iax, ibx));<a name="line.10976"></a>
<span class="sourceLineNo">10977</span> oai8data[it.oIndex] = ox;<a name="line.10977"></a>
<span class="sourceLineNo">10978</span> for (int j = 1; j &lt; is; j++) {<a name="line.10978"></a>
<span class="sourceLineNo">10979</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.10979"></a>
<span class="sourceLineNo">10980</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.10980"></a>
<span class="sourceLineNo">10981</span> ox = (byte) toLong(Math.pow(iax, ibx));<a name="line.10981"></a>
<span class="sourceLineNo">10982</span> oai8data[it.oIndex + j] = ox;<a name="line.10982"></a>
<span class="sourceLineNo">10983</span> }<a name="line.10983"></a>
<span class="sourceLineNo">10984</span> }<a name="line.10984"></a>
<span class="sourceLineNo">10985</span> }<a name="line.10985"></a>
<span class="sourceLineNo">10986</span> }<a name="line.10986"></a>
<span class="sourceLineNo">10987</span> break;<a name="line.10987"></a>
<span class="sourceLineNo">10988</span> case Dataset.ARRAYINT16:<a name="line.10988"></a>
<span class="sourceLineNo">10989</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.10989"></a>
<span class="sourceLineNo">10990</span> if (is == 1) {<a name="line.10990"></a>
<span class="sourceLineNo">10991</span> if (it.isOutputDouble()) {<a name="line.10991"></a>
<span class="sourceLineNo">10992</span> while (it.hasNext()) {<a name="line.10992"></a>
<span class="sourceLineNo">10993</span> final double iax = it.aDouble;<a name="line.10993"></a>
<span class="sourceLineNo">10994</span> final double ibx = it.bDouble;<a name="line.10994"></a>
<span class="sourceLineNo">10995</span> short ox;<a name="line.10995"></a>
<span class="sourceLineNo">10996</span> ox = (short) toLong(Math.pow(iax, ibx));<a name="line.10996"></a>
<span class="sourceLineNo">10997</span> oai16data[it.oIndex] = ox;<a name="line.10997"></a>
<span class="sourceLineNo">10998</span> }<a name="line.10998"></a>
<span class="sourceLineNo">10999</span> } else {<a name="line.10999"></a>
<span class="sourceLineNo">11000</span> while (it.hasNext()) {<a name="line.11000"></a>
<span class="sourceLineNo">11001</span> final long iax = it.aLong;<a name="line.11001"></a>
<span class="sourceLineNo">11002</span> final long ibx = it.bLong;<a name="line.11002"></a>
<span class="sourceLineNo">11003</span> short ox;<a name="line.11003"></a>
<span class="sourceLineNo">11004</span> ox = (short) toLong(Math.pow(iax, ibx));<a name="line.11004"></a>
<span class="sourceLineNo">11005</span> oai16data[it.oIndex] = ox;<a name="line.11005"></a>
<span class="sourceLineNo">11006</span> }<a name="line.11006"></a>
<span class="sourceLineNo">11007</span> }<a name="line.11007"></a>
<span class="sourceLineNo">11008</span> } else if (as &lt; bs) {<a name="line.11008"></a>
<span class="sourceLineNo">11009</span> if (it.isOutputDouble()) {<a name="line.11009"></a>
<span class="sourceLineNo">11010</span> while (it.hasNext()) {<a name="line.11010"></a>
<span class="sourceLineNo">11011</span> final double iax = it.aDouble;<a name="line.11011"></a>
<span class="sourceLineNo">11012</span> double ibx = it.bDouble;<a name="line.11012"></a>
<span class="sourceLineNo">11013</span> short ox;<a name="line.11013"></a>
<span class="sourceLineNo">11014</span> ox = (short) toLong(Math.pow(iax, ibx));<a name="line.11014"></a>
<span class="sourceLineNo">11015</span> oai16data[it.oIndex] = ox;<a name="line.11015"></a>
<span class="sourceLineNo">11016</span> for (int j = 1; j &lt; is; j++) {<a name="line.11016"></a>
<span class="sourceLineNo">11017</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.11017"></a>
<span class="sourceLineNo">11018</span> ox = (short) toLong(Math.pow(iax, ibx));<a name="line.11018"></a>
<span class="sourceLineNo">11019</span> oai16data[it.oIndex + j] = ox;<a name="line.11019"></a>
<span class="sourceLineNo">11020</span> }<a name="line.11020"></a>
<span class="sourceLineNo">11021</span> }<a name="line.11021"></a>
<span class="sourceLineNo">11022</span> } else {<a name="line.11022"></a>
<span class="sourceLineNo">11023</span> while (it.hasNext()) {<a name="line.11023"></a>
<span class="sourceLineNo">11024</span> final long iax = it.aLong;<a name="line.11024"></a>
<span class="sourceLineNo">11025</span> long ibx = it.bLong;<a name="line.11025"></a>
<span class="sourceLineNo">11026</span> short ox;<a name="line.11026"></a>
<span class="sourceLineNo">11027</span> ox = (short) toLong(Math.pow(iax, ibx));<a name="line.11027"></a>
<span class="sourceLineNo">11028</span> oai16data[it.oIndex] = ox;<a name="line.11028"></a>
<span class="sourceLineNo">11029</span> for (int j = 1; j &lt; is; j++) {<a name="line.11029"></a>
<span class="sourceLineNo">11030</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.11030"></a>
<span class="sourceLineNo">11031</span> ox = (short) toLong(Math.pow(iax, ibx));<a name="line.11031"></a>
<span class="sourceLineNo">11032</span> oai16data[it.oIndex + j] = ox;<a name="line.11032"></a>
<span class="sourceLineNo">11033</span> }<a name="line.11033"></a>
<span class="sourceLineNo">11034</span> }<a name="line.11034"></a>
<span class="sourceLineNo">11035</span> }<a name="line.11035"></a>
<span class="sourceLineNo">11036</span> } else if (as &gt; bs) {<a name="line.11036"></a>
<span class="sourceLineNo">11037</span> if (it.isOutputDouble()) {<a name="line.11037"></a>
<span class="sourceLineNo">11038</span> while (it.hasNext()) {<a name="line.11038"></a>
<span class="sourceLineNo">11039</span> double iax = it.aDouble;<a name="line.11039"></a>
<span class="sourceLineNo">11040</span> final double ibx = it.bDouble;<a name="line.11040"></a>
<span class="sourceLineNo">11041</span> short ox;<a name="line.11041"></a>
<span class="sourceLineNo">11042</span> ox = (short) toLong(Math.pow(iax, ibx));<a name="line.11042"></a>
<span class="sourceLineNo">11043</span> oai16data[it.oIndex] = ox;<a name="line.11043"></a>
<span class="sourceLineNo">11044</span> for (int j = 1; j &lt; is; j++) {<a name="line.11044"></a>
<span class="sourceLineNo">11045</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.11045"></a>
<span class="sourceLineNo">11046</span> ox = (short) toLong(Math.pow(iax, ibx));<a name="line.11046"></a>
<span class="sourceLineNo">11047</span> oai16data[it.oIndex + j] = ox;<a name="line.11047"></a>
<span class="sourceLineNo">11048</span> }<a name="line.11048"></a>
<span class="sourceLineNo">11049</span> }<a name="line.11049"></a>
<span class="sourceLineNo">11050</span> } else {<a name="line.11050"></a>
<span class="sourceLineNo">11051</span> while (it.hasNext()) {<a name="line.11051"></a>
<span class="sourceLineNo">11052</span> long iax = it.aLong;<a name="line.11052"></a>
<span class="sourceLineNo">11053</span> final long ibx = it.bLong;<a name="line.11053"></a>
<span class="sourceLineNo">11054</span> short ox;<a name="line.11054"></a>
<span class="sourceLineNo">11055</span> ox = (short) toLong(Math.pow(iax, ibx));<a name="line.11055"></a>
<span class="sourceLineNo">11056</span> oai16data[it.oIndex] = ox;<a name="line.11056"></a>
<span class="sourceLineNo">11057</span> for (int j = 1; j &lt; is; j++) {<a name="line.11057"></a>
<span class="sourceLineNo">11058</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.11058"></a>
<span class="sourceLineNo">11059</span> ox = (short) toLong(Math.pow(iax, ibx));<a name="line.11059"></a>
<span class="sourceLineNo">11060</span> oai16data[it.oIndex + j] = ox;<a name="line.11060"></a>
<span class="sourceLineNo">11061</span> }<a name="line.11061"></a>
<span class="sourceLineNo">11062</span> }<a name="line.11062"></a>
<span class="sourceLineNo">11063</span> }<a name="line.11063"></a>
<span class="sourceLineNo">11064</span> } else if (as == 1) {<a name="line.11064"></a>
<span class="sourceLineNo">11065</span> if (it.isOutputDouble()) {<a name="line.11065"></a>
<span class="sourceLineNo">11066</span> while (it.hasNext()) {<a name="line.11066"></a>
<span class="sourceLineNo">11067</span> final double iax = it.aDouble;<a name="line.11067"></a>
<span class="sourceLineNo">11068</span> final double ibx = it.bDouble;<a name="line.11068"></a>
<span class="sourceLineNo">11069</span> short ox;<a name="line.11069"></a>
<span class="sourceLineNo">11070</span> ox = (short) toLong(Math.pow(iax, ibx));<a name="line.11070"></a>
<span class="sourceLineNo">11071</span> for (int j = 0; j &lt; is; j++) {<a name="line.11071"></a>
<span class="sourceLineNo">11072</span> oai16data[it.oIndex + j] = ox;<a name="line.11072"></a>
<span class="sourceLineNo">11073</span> }<a name="line.11073"></a>
<span class="sourceLineNo">11074</span> }<a name="line.11074"></a>
<span class="sourceLineNo">11075</span> } else {<a name="line.11075"></a>
<span class="sourceLineNo">11076</span> while (it.hasNext()) {<a name="line.11076"></a>
<span class="sourceLineNo">11077</span> final long iax = it.aLong;<a name="line.11077"></a>
<span class="sourceLineNo">11078</span> final long ibx = it.bLong;<a name="line.11078"></a>
<span class="sourceLineNo">11079</span> short ox;<a name="line.11079"></a>
<span class="sourceLineNo">11080</span> ox = (short) toLong(Math.pow(iax, ibx));<a name="line.11080"></a>
<span class="sourceLineNo">11081</span> for (int j = 0; j &lt; is; j++) {<a name="line.11081"></a>
<span class="sourceLineNo">11082</span> oai16data[it.oIndex + j] = ox;<a name="line.11082"></a>
<span class="sourceLineNo">11083</span> }<a name="line.11083"></a>
<span class="sourceLineNo">11084</span> }<a name="line.11084"></a>
<span class="sourceLineNo">11085</span> }<a name="line.11085"></a>
<span class="sourceLineNo">11086</span> } else {<a name="line.11086"></a>
<span class="sourceLineNo">11087</span> if (it.isOutputDouble()) {<a name="line.11087"></a>
<span class="sourceLineNo">11088</span> while (it.hasNext()) {<a name="line.11088"></a>
<span class="sourceLineNo">11089</span> double iax = it.aDouble;<a name="line.11089"></a>
<span class="sourceLineNo">11090</span> double ibx = it.bDouble;<a name="line.11090"></a>
<span class="sourceLineNo">11091</span> short ox;<a name="line.11091"></a>
<span class="sourceLineNo">11092</span> ox = (short) toLong(Math.pow(iax, ibx));<a name="line.11092"></a>
<span class="sourceLineNo">11093</span> oai16data[it.oIndex] = ox;<a name="line.11093"></a>
<span class="sourceLineNo">11094</span> for (int j = 1; j &lt; is; j++) {<a name="line.11094"></a>
<span class="sourceLineNo">11095</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.11095"></a>
<span class="sourceLineNo">11096</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.11096"></a>
<span class="sourceLineNo">11097</span> ox = (short) toLong(Math.pow(iax, ibx));<a name="line.11097"></a>
<span class="sourceLineNo">11098</span> oai16data[it.oIndex + j] = ox;<a name="line.11098"></a>
<span class="sourceLineNo">11099</span> }<a name="line.11099"></a>
<span class="sourceLineNo">11100</span> }<a name="line.11100"></a>
<span class="sourceLineNo">11101</span> } else {<a name="line.11101"></a>
<span class="sourceLineNo">11102</span> while (it.hasNext()) {<a name="line.11102"></a>
<span class="sourceLineNo">11103</span> long iax = it.aLong;<a name="line.11103"></a>
<span class="sourceLineNo">11104</span> long ibx = it.bLong;<a name="line.11104"></a>
<span class="sourceLineNo">11105</span> short ox;<a name="line.11105"></a>
<span class="sourceLineNo">11106</span> ox = (short) toLong(Math.pow(iax, ibx));<a name="line.11106"></a>
<span class="sourceLineNo">11107</span> oai16data[it.oIndex] = ox;<a name="line.11107"></a>
<span class="sourceLineNo">11108</span> for (int j = 1; j &lt; is; j++) {<a name="line.11108"></a>
<span class="sourceLineNo">11109</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.11109"></a>
<span class="sourceLineNo">11110</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.11110"></a>
<span class="sourceLineNo">11111</span> ox = (short) toLong(Math.pow(iax, ibx));<a name="line.11111"></a>
<span class="sourceLineNo">11112</span> oai16data[it.oIndex + j] = ox;<a name="line.11112"></a>
<span class="sourceLineNo">11113</span> }<a name="line.11113"></a>
<span class="sourceLineNo">11114</span> }<a name="line.11114"></a>
<span class="sourceLineNo">11115</span> }<a name="line.11115"></a>
<span class="sourceLineNo">11116</span> }<a name="line.11116"></a>
<span class="sourceLineNo">11117</span> break;<a name="line.11117"></a>
<span class="sourceLineNo">11118</span> case Dataset.ARRAYINT64:<a name="line.11118"></a>
<span class="sourceLineNo">11119</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.11119"></a>
<span class="sourceLineNo">11120</span> if (is == 1) {<a name="line.11120"></a>
<span class="sourceLineNo">11121</span> if (it.isOutputDouble()) {<a name="line.11121"></a>
<span class="sourceLineNo">11122</span> while (it.hasNext()) {<a name="line.11122"></a>
<span class="sourceLineNo">11123</span> final double iax = it.aDouble;<a name="line.11123"></a>
<span class="sourceLineNo">11124</span> final double ibx = it.bDouble;<a name="line.11124"></a>
<span class="sourceLineNo">11125</span> long ox;<a name="line.11125"></a>
<span class="sourceLineNo">11126</span> ox = toLong(Math.pow(iax, ibx));<a name="line.11126"></a>
<span class="sourceLineNo">11127</span> oai64data[it.oIndex] = ox;<a name="line.11127"></a>
<span class="sourceLineNo">11128</span> }<a name="line.11128"></a>
<span class="sourceLineNo">11129</span> } else {<a name="line.11129"></a>
<span class="sourceLineNo">11130</span> while (it.hasNext()) {<a name="line.11130"></a>
<span class="sourceLineNo">11131</span> final long iax = it.aLong;<a name="line.11131"></a>
<span class="sourceLineNo">11132</span> final long ibx = it.bLong;<a name="line.11132"></a>
<span class="sourceLineNo">11133</span> long ox;<a name="line.11133"></a>
<span class="sourceLineNo">11134</span> ox = toLong(Math.pow(iax, ibx));<a name="line.11134"></a>
<span class="sourceLineNo">11135</span> oai64data[it.oIndex] = ox;<a name="line.11135"></a>
<span class="sourceLineNo">11136</span> }<a name="line.11136"></a>
<span class="sourceLineNo">11137</span> }<a name="line.11137"></a>
<span class="sourceLineNo">11138</span> } else if (as &lt; bs) {<a name="line.11138"></a>
<span class="sourceLineNo">11139</span> if (it.isOutputDouble()) {<a name="line.11139"></a>
<span class="sourceLineNo">11140</span> while (it.hasNext()) {<a name="line.11140"></a>
<span class="sourceLineNo">11141</span> final double iax = it.aDouble;<a name="line.11141"></a>
<span class="sourceLineNo">11142</span> double ibx = it.bDouble;<a name="line.11142"></a>
<span class="sourceLineNo">11143</span> long ox;<a name="line.11143"></a>
<span class="sourceLineNo">11144</span> ox = toLong(Math.pow(iax, ibx));<a name="line.11144"></a>
<span class="sourceLineNo">11145</span> oai64data[it.oIndex] = ox;<a name="line.11145"></a>
<span class="sourceLineNo">11146</span> for (int j = 1; j &lt; is; j++) {<a name="line.11146"></a>
<span class="sourceLineNo">11147</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.11147"></a>
<span class="sourceLineNo">11148</span> ox = toLong(Math.pow(iax, ibx));<a name="line.11148"></a>
<span class="sourceLineNo">11149</span> oai64data[it.oIndex + j] = ox;<a name="line.11149"></a>
<span class="sourceLineNo">11150</span> }<a name="line.11150"></a>
<span class="sourceLineNo">11151</span> }<a name="line.11151"></a>
<span class="sourceLineNo">11152</span> } else {<a name="line.11152"></a>
<span class="sourceLineNo">11153</span> while (it.hasNext()) {<a name="line.11153"></a>
<span class="sourceLineNo">11154</span> final long iax = it.aLong;<a name="line.11154"></a>
<span class="sourceLineNo">11155</span> long ibx = it.bLong;<a name="line.11155"></a>
<span class="sourceLineNo">11156</span> long ox;<a name="line.11156"></a>
<span class="sourceLineNo">11157</span> ox = toLong(Math.pow(iax, ibx));<a name="line.11157"></a>
<span class="sourceLineNo">11158</span> oai64data[it.oIndex] = ox;<a name="line.11158"></a>
<span class="sourceLineNo">11159</span> for (int j = 1; j &lt; is; j++) {<a name="line.11159"></a>
<span class="sourceLineNo">11160</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.11160"></a>
<span class="sourceLineNo">11161</span> ox = toLong(Math.pow(iax, ibx));<a name="line.11161"></a>
<span class="sourceLineNo">11162</span> oai64data[it.oIndex + j] = ox;<a name="line.11162"></a>
<span class="sourceLineNo">11163</span> }<a name="line.11163"></a>
<span class="sourceLineNo">11164</span> }<a name="line.11164"></a>
<span class="sourceLineNo">11165</span> }<a name="line.11165"></a>
<span class="sourceLineNo">11166</span> } else if (as &gt; bs) {<a name="line.11166"></a>
<span class="sourceLineNo">11167</span> if (it.isOutputDouble()) {<a name="line.11167"></a>
<span class="sourceLineNo">11168</span> while (it.hasNext()) {<a name="line.11168"></a>
<span class="sourceLineNo">11169</span> double iax = it.aDouble;<a name="line.11169"></a>
<span class="sourceLineNo">11170</span> final double ibx = it.bDouble;<a name="line.11170"></a>
<span class="sourceLineNo">11171</span> long ox;<a name="line.11171"></a>
<span class="sourceLineNo">11172</span> ox = toLong(Math.pow(iax, ibx));<a name="line.11172"></a>
<span class="sourceLineNo">11173</span> oai64data[it.oIndex] = ox;<a name="line.11173"></a>
<span class="sourceLineNo">11174</span> for (int j = 1; j &lt; is; j++) {<a name="line.11174"></a>
<span class="sourceLineNo">11175</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.11175"></a>
<span class="sourceLineNo">11176</span> ox = toLong(Math.pow(iax, ibx));<a name="line.11176"></a>
<span class="sourceLineNo">11177</span> oai64data[it.oIndex + j] = ox;<a name="line.11177"></a>
<span class="sourceLineNo">11178</span> }<a name="line.11178"></a>
<span class="sourceLineNo">11179</span> }<a name="line.11179"></a>
<span class="sourceLineNo">11180</span> } else {<a name="line.11180"></a>
<span class="sourceLineNo">11181</span> while (it.hasNext()) {<a name="line.11181"></a>
<span class="sourceLineNo">11182</span> long iax = it.aLong;<a name="line.11182"></a>
<span class="sourceLineNo">11183</span> final long ibx = it.bLong;<a name="line.11183"></a>
<span class="sourceLineNo">11184</span> long ox;<a name="line.11184"></a>
<span class="sourceLineNo">11185</span> ox = toLong(Math.pow(iax, ibx));<a name="line.11185"></a>
<span class="sourceLineNo">11186</span> oai64data[it.oIndex] = ox;<a name="line.11186"></a>
<span class="sourceLineNo">11187</span> for (int j = 1; j &lt; is; j++) {<a name="line.11187"></a>
<span class="sourceLineNo">11188</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.11188"></a>
<span class="sourceLineNo">11189</span> ox = toLong(Math.pow(iax, ibx));<a name="line.11189"></a>
<span class="sourceLineNo">11190</span> oai64data[it.oIndex + j] = ox;<a name="line.11190"></a>
<span class="sourceLineNo">11191</span> }<a name="line.11191"></a>
<span class="sourceLineNo">11192</span> }<a name="line.11192"></a>
<span class="sourceLineNo">11193</span> }<a name="line.11193"></a>
<span class="sourceLineNo">11194</span> } else if (as == 1) {<a name="line.11194"></a>
<span class="sourceLineNo">11195</span> if (it.isOutputDouble()) {<a name="line.11195"></a>
<span class="sourceLineNo">11196</span> while (it.hasNext()) {<a name="line.11196"></a>
<span class="sourceLineNo">11197</span> final double iax = it.aDouble;<a name="line.11197"></a>
<span class="sourceLineNo">11198</span> final double ibx = it.bDouble;<a name="line.11198"></a>
<span class="sourceLineNo">11199</span> long ox;<a name="line.11199"></a>
<span class="sourceLineNo">11200</span> ox = toLong(Math.pow(iax, ibx));<a name="line.11200"></a>
<span class="sourceLineNo">11201</span> for (int j = 0; j &lt; is; j++) {<a name="line.11201"></a>
<span class="sourceLineNo">11202</span> oai64data[it.oIndex + j] = ox;<a name="line.11202"></a>
<span class="sourceLineNo">11203</span> }<a name="line.11203"></a>
<span class="sourceLineNo">11204</span> }<a name="line.11204"></a>
<span class="sourceLineNo">11205</span> } else {<a name="line.11205"></a>
<span class="sourceLineNo">11206</span> while (it.hasNext()) {<a name="line.11206"></a>
<span class="sourceLineNo">11207</span> final long iax = it.aLong;<a name="line.11207"></a>
<span class="sourceLineNo">11208</span> final long ibx = it.bLong;<a name="line.11208"></a>
<span class="sourceLineNo">11209</span> long ox;<a name="line.11209"></a>
<span class="sourceLineNo">11210</span> ox = toLong(Math.pow(iax, ibx));<a name="line.11210"></a>
<span class="sourceLineNo">11211</span> for (int j = 0; j &lt; is; j++) {<a name="line.11211"></a>
<span class="sourceLineNo">11212</span> oai64data[it.oIndex + j] = ox;<a name="line.11212"></a>
<span class="sourceLineNo">11213</span> }<a name="line.11213"></a>
<span class="sourceLineNo">11214</span> }<a name="line.11214"></a>
<span class="sourceLineNo">11215</span> }<a name="line.11215"></a>
<span class="sourceLineNo">11216</span> } else {<a name="line.11216"></a>
<span class="sourceLineNo">11217</span> if (it.isOutputDouble()) {<a name="line.11217"></a>
<span class="sourceLineNo">11218</span> while (it.hasNext()) {<a name="line.11218"></a>
<span class="sourceLineNo">11219</span> double iax = it.aDouble;<a name="line.11219"></a>
<span class="sourceLineNo">11220</span> double ibx = it.bDouble;<a name="line.11220"></a>
<span class="sourceLineNo">11221</span> long ox;<a name="line.11221"></a>
<span class="sourceLineNo">11222</span> ox = toLong(Math.pow(iax, ibx));<a name="line.11222"></a>
<span class="sourceLineNo">11223</span> oai64data[it.oIndex] = ox;<a name="line.11223"></a>
<span class="sourceLineNo">11224</span> for (int j = 1; j &lt; is; j++) {<a name="line.11224"></a>
<span class="sourceLineNo">11225</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.11225"></a>
<span class="sourceLineNo">11226</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.11226"></a>
<span class="sourceLineNo">11227</span> ox = toLong(Math.pow(iax, ibx));<a name="line.11227"></a>
<span class="sourceLineNo">11228</span> oai64data[it.oIndex + j] = ox;<a name="line.11228"></a>
<span class="sourceLineNo">11229</span> }<a name="line.11229"></a>
<span class="sourceLineNo">11230</span> }<a name="line.11230"></a>
<span class="sourceLineNo">11231</span> } else {<a name="line.11231"></a>
<span class="sourceLineNo">11232</span> while (it.hasNext()) {<a name="line.11232"></a>
<span class="sourceLineNo">11233</span> long iax = it.aLong;<a name="line.11233"></a>
<span class="sourceLineNo">11234</span> long ibx = it.bLong;<a name="line.11234"></a>
<span class="sourceLineNo">11235</span> long ox;<a name="line.11235"></a>
<span class="sourceLineNo">11236</span> ox = toLong(Math.pow(iax, ibx));<a name="line.11236"></a>
<span class="sourceLineNo">11237</span> oai64data[it.oIndex] = ox;<a name="line.11237"></a>
<span class="sourceLineNo">11238</span> for (int j = 1; j &lt; is; j++) {<a name="line.11238"></a>
<span class="sourceLineNo">11239</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.11239"></a>
<span class="sourceLineNo">11240</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.11240"></a>
<span class="sourceLineNo">11241</span> ox = toLong(Math.pow(iax, ibx));<a name="line.11241"></a>
<span class="sourceLineNo">11242</span> oai64data[it.oIndex + j] = ox;<a name="line.11242"></a>
<span class="sourceLineNo">11243</span> }<a name="line.11243"></a>
<span class="sourceLineNo">11244</span> }<a name="line.11244"></a>
<span class="sourceLineNo">11245</span> }<a name="line.11245"></a>
<span class="sourceLineNo">11246</span> }<a name="line.11246"></a>
<span class="sourceLineNo">11247</span> break;<a name="line.11247"></a>
<span class="sourceLineNo">11248</span> case Dataset.ARRAYINT32:<a name="line.11248"></a>
<span class="sourceLineNo">11249</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.11249"></a>
<span class="sourceLineNo">11250</span> if (is == 1) {<a name="line.11250"></a>
<span class="sourceLineNo">11251</span> if (it.isOutputDouble()) {<a name="line.11251"></a>
<span class="sourceLineNo">11252</span> while (it.hasNext()) {<a name="line.11252"></a>
<span class="sourceLineNo">11253</span> final double iax = it.aDouble;<a name="line.11253"></a>
<span class="sourceLineNo">11254</span> final double ibx = it.bDouble;<a name="line.11254"></a>
<span class="sourceLineNo">11255</span> int ox;<a name="line.11255"></a>
<span class="sourceLineNo">11256</span> ox = (int) toLong(Math.pow(iax, ibx));<a name="line.11256"></a>
<span class="sourceLineNo">11257</span> oai32data[it.oIndex] = ox;<a name="line.11257"></a>
<span class="sourceLineNo">11258</span> }<a name="line.11258"></a>
<span class="sourceLineNo">11259</span> } else {<a name="line.11259"></a>
<span class="sourceLineNo">11260</span> while (it.hasNext()) {<a name="line.11260"></a>
<span class="sourceLineNo">11261</span> final long iax = it.aLong;<a name="line.11261"></a>
<span class="sourceLineNo">11262</span> final long ibx = it.bLong;<a name="line.11262"></a>
<span class="sourceLineNo">11263</span> int ox;<a name="line.11263"></a>
<span class="sourceLineNo">11264</span> ox = (int) toLong(Math.pow(iax, ibx));<a name="line.11264"></a>
<span class="sourceLineNo">11265</span> oai32data[it.oIndex] = ox;<a name="line.11265"></a>
<span class="sourceLineNo">11266</span> }<a name="line.11266"></a>
<span class="sourceLineNo">11267</span> }<a name="line.11267"></a>
<span class="sourceLineNo">11268</span> } else if (as &lt; bs) {<a name="line.11268"></a>
<span class="sourceLineNo">11269</span> if (it.isOutputDouble()) {<a name="line.11269"></a>
<span class="sourceLineNo">11270</span> while (it.hasNext()) {<a name="line.11270"></a>
<span class="sourceLineNo">11271</span> final double iax = it.aDouble;<a name="line.11271"></a>
<span class="sourceLineNo">11272</span> double ibx = it.bDouble;<a name="line.11272"></a>
<span class="sourceLineNo">11273</span> int ox;<a name="line.11273"></a>
<span class="sourceLineNo">11274</span> ox = (int) toLong(Math.pow(iax, ibx));<a name="line.11274"></a>
<span class="sourceLineNo">11275</span> oai32data[it.oIndex] = ox;<a name="line.11275"></a>
<span class="sourceLineNo">11276</span> for (int j = 1; j &lt; is; j++) {<a name="line.11276"></a>
<span class="sourceLineNo">11277</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.11277"></a>
<span class="sourceLineNo">11278</span> ox = (int) toLong(Math.pow(iax, ibx));<a name="line.11278"></a>
<span class="sourceLineNo">11279</span> oai32data[it.oIndex + j] = ox;<a name="line.11279"></a>
<span class="sourceLineNo">11280</span> }<a name="line.11280"></a>
<span class="sourceLineNo">11281</span> }<a name="line.11281"></a>
<span class="sourceLineNo">11282</span> } else {<a name="line.11282"></a>
<span class="sourceLineNo">11283</span> while (it.hasNext()) {<a name="line.11283"></a>
<span class="sourceLineNo">11284</span> final long iax = it.aLong;<a name="line.11284"></a>
<span class="sourceLineNo">11285</span> long ibx = it.bLong;<a name="line.11285"></a>
<span class="sourceLineNo">11286</span> int ox;<a name="line.11286"></a>
<span class="sourceLineNo">11287</span> ox = (int) toLong(Math.pow(iax, ibx));<a name="line.11287"></a>
<span class="sourceLineNo">11288</span> oai32data[it.oIndex] = ox;<a name="line.11288"></a>
<span class="sourceLineNo">11289</span> for (int j = 1; j &lt; is; j++) {<a name="line.11289"></a>
<span class="sourceLineNo">11290</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.11290"></a>
<span class="sourceLineNo">11291</span> ox = (int) toLong(Math.pow(iax, ibx));<a name="line.11291"></a>
<span class="sourceLineNo">11292</span> oai32data[it.oIndex + j] = ox;<a name="line.11292"></a>
<span class="sourceLineNo">11293</span> }<a name="line.11293"></a>
<span class="sourceLineNo">11294</span> }<a name="line.11294"></a>
<span class="sourceLineNo">11295</span> }<a name="line.11295"></a>
<span class="sourceLineNo">11296</span> } else if (as &gt; bs) {<a name="line.11296"></a>
<span class="sourceLineNo">11297</span> if (it.isOutputDouble()) {<a name="line.11297"></a>
<span class="sourceLineNo">11298</span> while (it.hasNext()) {<a name="line.11298"></a>
<span class="sourceLineNo">11299</span> double iax = it.aDouble;<a name="line.11299"></a>
<span class="sourceLineNo">11300</span> final double ibx = it.bDouble;<a name="line.11300"></a>
<span class="sourceLineNo">11301</span> int ox;<a name="line.11301"></a>
<span class="sourceLineNo">11302</span> ox = (int) toLong(Math.pow(iax, ibx));<a name="line.11302"></a>
<span class="sourceLineNo">11303</span> oai32data[it.oIndex] = ox;<a name="line.11303"></a>
<span class="sourceLineNo">11304</span> for (int j = 1; j &lt; is; j++) {<a name="line.11304"></a>
<span class="sourceLineNo">11305</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.11305"></a>
<span class="sourceLineNo">11306</span> ox = (int) toLong(Math.pow(iax, ibx));<a name="line.11306"></a>
<span class="sourceLineNo">11307</span> oai32data[it.oIndex + j] = ox;<a name="line.11307"></a>
<span class="sourceLineNo">11308</span> }<a name="line.11308"></a>
<span class="sourceLineNo">11309</span> }<a name="line.11309"></a>
<span class="sourceLineNo">11310</span> } else {<a name="line.11310"></a>
<span class="sourceLineNo">11311</span> while (it.hasNext()) {<a name="line.11311"></a>
<span class="sourceLineNo">11312</span> long iax = it.aLong;<a name="line.11312"></a>
<span class="sourceLineNo">11313</span> final long ibx = it.bLong;<a name="line.11313"></a>
<span class="sourceLineNo">11314</span> int ox;<a name="line.11314"></a>
<span class="sourceLineNo">11315</span> ox = (int) toLong(Math.pow(iax, ibx));<a name="line.11315"></a>
<span class="sourceLineNo">11316</span> oai32data[it.oIndex] = ox;<a name="line.11316"></a>
<span class="sourceLineNo">11317</span> for (int j = 1; j &lt; is; j++) {<a name="line.11317"></a>
<span class="sourceLineNo">11318</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.11318"></a>
<span class="sourceLineNo">11319</span> ox = (int) toLong(Math.pow(iax, ibx));<a name="line.11319"></a>
<span class="sourceLineNo">11320</span> oai32data[it.oIndex + j] = ox;<a name="line.11320"></a>
<span class="sourceLineNo">11321</span> }<a name="line.11321"></a>
<span class="sourceLineNo">11322</span> }<a name="line.11322"></a>
<span class="sourceLineNo">11323</span> }<a name="line.11323"></a>
<span class="sourceLineNo">11324</span> } else if (as == 1) {<a name="line.11324"></a>
<span class="sourceLineNo">11325</span> if (it.isOutputDouble()) {<a name="line.11325"></a>
<span class="sourceLineNo">11326</span> while (it.hasNext()) {<a name="line.11326"></a>
<span class="sourceLineNo">11327</span> final double iax = it.aDouble;<a name="line.11327"></a>
<span class="sourceLineNo">11328</span> final double ibx = it.bDouble;<a name="line.11328"></a>
<span class="sourceLineNo">11329</span> int ox;<a name="line.11329"></a>
<span class="sourceLineNo">11330</span> ox = (int) toLong(Math.pow(iax, ibx));<a name="line.11330"></a>
<span class="sourceLineNo">11331</span> for (int j = 0; j &lt; is; j++) {<a name="line.11331"></a>
<span class="sourceLineNo">11332</span> oai32data[it.oIndex + j] = ox;<a name="line.11332"></a>
<span class="sourceLineNo">11333</span> }<a name="line.11333"></a>
<span class="sourceLineNo">11334</span> }<a name="line.11334"></a>
<span class="sourceLineNo">11335</span> } else {<a name="line.11335"></a>
<span class="sourceLineNo">11336</span> while (it.hasNext()) {<a name="line.11336"></a>
<span class="sourceLineNo">11337</span> final long iax = it.aLong;<a name="line.11337"></a>
<span class="sourceLineNo">11338</span> final long ibx = it.bLong;<a name="line.11338"></a>
<span class="sourceLineNo">11339</span> int ox;<a name="line.11339"></a>
<span class="sourceLineNo">11340</span> ox = (int) toLong(Math.pow(iax, ibx));<a name="line.11340"></a>
<span class="sourceLineNo">11341</span> for (int j = 0; j &lt; is; j++) {<a name="line.11341"></a>
<span class="sourceLineNo">11342</span> oai32data[it.oIndex + j] = ox;<a name="line.11342"></a>
<span class="sourceLineNo">11343</span> }<a name="line.11343"></a>
<span class="sourceLineNo">11344</span> }<a name="line.11344"></a>
<span class="sourceLineNo">11345</span> }<a name="line.11345"></a>
<span class="sourceLineNo">11346</span> } else {<a name="line.11346"></a>
<span class="sourceLineNo">11347</span> if (it.isOutputDouble()) {<a name="line.11347"></a>
<span class="sourceLineNo">11348</span> while (it.hasNext()) {<a name="line.11348"></a>
<span class="sourceLineNo">11349</span> double iax = it.aDouble;<a name="line.11349"></a>
<span class="sourceLineNo">11350</span> double ibx = it.bDouble;<a name="line.11350"></a>
<span class="sourceLineNo">11351</span> int ox;<a name="line.11351"></a>
<span class="sourceLineNo">11352</span> ox = (int) toLong(Math.pow(iax, ibx));<a name="line.11352"></a>
<span class="sourceLineNo">11353</span> oai32data[it.oIndex] = ox;<a name="line.11353"></a>
<span class="sourceLineNo">11354</span> for (int j = 1; j &lt; is; j++) {<a name="line.11354"></a>
<span class="sourceLineNo">11355</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.11355"></a>
<span class="sourceLineNo">11356</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.11356"></a>
<span class="sourceLineNo">11357</span> ox = (int) toLong(Math.pow(iax, ibx));<a name="line.11357"></a>
<span class="sourceLineNo">11358</span> oai32data[it.oIndex + j] = ox;<a name="line.11358"></a>
<span class="sourceLineNo">11359</span> }<a name="line.11359"></a>
<span class="sourceLineNo">11360</span> }<a name="line.11360"></a>
<span class="sourceLineNo">11361</span> } else {<a name="line.11361"></a>
<span class="sourceLineNo">11362</span> while (it.hasNext()) {<a name="line.11362"></a>
<span class="sourceLineNo">11363</span> long iax = it.aLong;<a name="line.11363"></a>
<span class="sourceLineNo">11364</span> long ibx = it.bLong;<a name="line.11364"></a>
<span class="sourceLineNo">11365</span> int ox;<a name="line.11365"></a>
<span class="sourceLineNo">11366</span> ox = (int) toLong(Math.pow(iax, ibx));<a name="line.11366"></a>
<span class="sourceLineNo">11367</span> oai32data[it.oIndex] = ox;<a name="line.11367"></a>
<span class="sourceLineNo">11368</span> for (int j = 1; j &lt; is; j++) {<a name="line.11368"></a>
<span class="sourceLineNo">11369</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.11369"></a>
<span class="sourceLineNo">11370</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.11370"></a>
<span class="sourceLineNo">11371</span> ox = (int) toLong(Math.pow(iax, ibx));<a name="line.11371"></a>
<span class="sourceLineNo">11372</span> oai32data[it.oIndex + j] = ox;<a name="line.11372"></a>
<span class="sourceLineNo">11373</span> }<a name="line.11373"></a>
<span class="sourceLineNo">11374</span> }<a name="line.11374"></a>
<span class="sourceLineNo">11375</span> }<a name="line.11375"></a>
<span class="sourceLineNo">11376</span> }<a name="line.11376"></a>
<span class="sourceLineNo">11377</span> break;<a name="line.11377"></a>
<span class="sourceLineNo">11378</span> case Dataset.FLOAT32:<a name="line.11378"></a>
<span class="sourceLineNo">11379</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.11379"></a>
<span class="sourceLineNo">11380</span> if (it.isOutputDouble()) {<a name="line.11380"></a>
<span class="sourceLineNo">11381</span> while (it.hasNext()) {<a name="line.11381"></a>
<span class="sourceLineNo">11382</span> final double iax = it.aDouble;<a name="line.11382"></a>
<span class="sourceLineNo">11383</span> final double ibx = it.bDouble;<a name="line.11383"></a>
<span class="sourceLineNo">11384</span> float ox;<a name="line.11384"></a>
<span class="sourceLineNo">11385</span> ox = (float) (Math.pow(iax, ibx));<a name="line.11385"></a>
<span class="sourceLineNo">11386</span> of32data[it.oIndex] = ox;<a name="line.11386"></a>
<span class="sourceLineNo">11387</span> }<a name="line.11387"></a>
<span class="sourceLineNo">11388</span> } else {<a name="line.11388"></a>
<span class="sourceLineNo">11389</span> while (it.hasNext()) {<a name="line.11389"></a>
<span class="sourceLineNo">11390</span> final long iax = it.aLong;<a name="line.11390"></a>
<span class="sourceLineNo">11391</span> final long ibx = it.bLong;<a name="line.11391"></a>
<span class="sourceLineNo">11392</span> float ox;<a name="line.11392"></a>
<span class="sourceLineNo">11393</span> ox = (float) (Math.pow(iax, ibx));<a name="line.11393"></a>
<span class="sourceLineNo">11394</span> of32data[it.oIndex] = ox;<a name="line.11394"></a>
<span class="sourceLineNo">11395</span> }<a name="line.11395"></a>
<span class="sourceLineNo">11396</span> }<a name="line.11396"></a>
<span class="sourceLineNo">11397</span> break;<a name="line.11397"></a>
<span class="sourceLineNo">11398</span> case Dataset.FLOAT64:<a name="line.11398"></a>
<span class="sourceLineNo">11399</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.11399"></a>
<span class="sourceLineNo">11400</span> if (it.isOutputDouble()) {<a name="line.11400"></a>
<span class="sourceLineNo">11401</span> while (it.hasNext()) {<a name="line.11401"></a>
<span class="sourceLineNo">11402</span> final double iax = it.aDouble;<a name="line.11402"></a>
<span class="sourceLineNo">11403</span> final double ibx = it.bDouble;<a name="line.11403"></a>
<span class="sourceLineNo">11404</span> double ox;<a name="line.11404"></a>
<span class="sourceLineNo">11405</span> ox = (Math.pow(iax, ibx));<a name="line.11405"></a>
<span class="sourceLineNo">11406</span> of64data[it.oIndex] = ox;<a name="line.11406"></a>
<span class="sourceLineNo">11407</span> }<a name="line.11407"></a>
<span class="sourceLineNo">11408</span> } else {<a name="line.11408"></a>
<span class="sourceLineNo">11409</span> while (it.hasNext()) {<a name="line.11409"></a>
<span class="sourceLineNo">11410</span> final long iax = it.aLong;<a name="line.11410"></a>
<span class="sourceLineNo">11411</span> final long ibx = it.bLong;<a name="line.11411"></a>
<span class="sourceLineNo">11412</span> double ox;<a name="line.11412"></a>
<span class="sourceLineNo">11413</span> ox = (Math.pow(iax, ibx));<a name="line.11413"></a>
<span class="sourceLineNo">11414</span> of64data[it.oIndex] = ox;<a name="line.11414"></a>
<span class="sourceLineNo">11415</span> }<a name="line.11415"></a>
<span class="sourceLineNo">11416</span> }<a name="line.11416"></a>
<span class="sourceLineNo">11417</span> break;<a name="line.11417"></a>
<span class="sourceLineNo">11418</span> case Dataset.ARRAYFLOAT32:<a name="line.11418"></a>
<span class="sourceLineNo">11419</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.11419"></a>
<span class="sourceLineNo">11420</span> if (is == 1) {<a name="line.11420"></a>
<span class="sourceLineNo">11421</span> if (it.isOutputDouble()) {<a name="line.11421"></a>
<span class="sourceLineNo">11422</span> while (it.hasNext()) {<a name="line.11422"></a>
<span class="sourceLineNo">11423</span> final double iax = it.aDouble;<a name="line.11423"></a>
<span class="sourceLineNo">11424</span> final double ibx = it.bDouble;<a name="line.11424"></a>
<span class="sourceLineNo">11425</span> float ox;<a name="line.11425"></a>
<span class="sourceLineNo">11426</span> ox = (float) (Math.pow(iax, ibx));<a name="line.11426"></a>
<span class="sourceLineNo">11427</span> oaf32data[it.oIndex] = ox;<a name="line.11427"></a>
<span class="sourceLineNo">11428</span> }<a name="line.11428"></a>
<span class="sourceLineNo">11429</span> } else {<a name="line.11429"></a>
<span class="sourceLineNo">11430</span> while (it.hasNext()) {<a name="line.11430"></a>
<span class="sourceLineNo">11431</span> final long iax = it.aLong;<a name="line.11431"></a>
<span class="sourceLineNo">11432</span> final long ibx = it.bLong;<a name="line.11432"></a>
<span class="sourceLineNo">11433</span> float ox;<a name="line.11433"></a>
<span class="sourceLineNo">11434</span> ox = (float) (Math.pow(iax, ibx));<a name="line.11434"></a>
<span class="sourceLineNo">11435</span> oaf32data[it.oIndex] = ox;<a name="line.11435"></a>
<span class="sourceLineNo">11436</span> }<a name="line.11436"></a>
<span class="sourceLineNo">11437</span> }<a name="line.11437"></a>
<span class="sourceLineNo">11438</span> } else if (as &lt; bs) {<a name="line.11438"></a>
<span class="sourceLineNo">11439</span> if (it.isOutputDouble()) {<a name="line.11439"></a>
<span class="sourceLineNo">11440</span> while (it.hasNext()) {<a name="line.11440"></a>
<span class="sourceLineNo">11441</span> final double iax = it.aDouble;<a name="line.11441"></a>
<span class="sourceLineNo">11442</span> double ibx = it.bDouble;<a name="line.11442"></a>
<span class="sourceLineNo">11443</span> float ox;<a name="line.11443"></a>
<span class="sourceLineNo">11444</span> ox = (float) (Math.pow(iax, ibx));<a name="line.11444"></a>
<span class="sourceLineNo">11445</span> oaf32data[it.oIndex] = ox;<a name="line.11445"></a>
<span class="sourceLineNo">11446</span> for (int j = 1; j &lt; is; j++) {<a name="line.11446"></a>
<span class="sourceLineNo">11447</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.11447"></a>
<span class="sourceLineNo">11448</span> ox = (float) (Math.pow(iax, ibx));<a name="line.11448"></a>
<span class="sourceLineNo">11449</span> oaf32data[it.oIndex + j] = ox;<a name="line.11449"></a>
<span class="sourceLineNo">11450</span> }<a name="line.11450"></a>
<span class="sourceLineNo">11451</span> }<a name="line.11451"></a>
<span class="sourceLineNo">11452</span> } else {<a name="line.11452"></a>
<span class="sourceLineNo">11453</span> while (it.hasNext()) {<a name="line.11453"></a>
<span class="sourceLineNo">11454</span> final long iax = it.aLong;<a name="line.11454"></a>
<span class="sourceLineNo">11455</span> long ibx = it.bLong;<a name="line.11455"></a>
<span class="sourceLineNo">11456</span> float ox;<a name="line.11456"></a>
<span class="sourceLineNo">11457</span> ox = (float) (Math.pow(iax, ibx));<a name="line.11457"></a>
<span class="sourceLineNo">11458</span> oaf32data[it.oIndex] = ox;<a name="line.11458"></a>
<span class="sourceLineNo">11459</span> for (int j = 1; j &lt; is; j++) {<a name="line.11459"></a>
<span class="sourceLineNo">11460</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.11460"></a>
<span class="sourceLineNo">11461</span> ox = (float) (Math.pow(iax, ibx));<a name="line.11461"></a>
<span class="sourceLineNo">11462</span> oaf32data[it.oIndex + j] = ox;<a name="line.11462"></a>
<span class="sourceLineNo">11463</span> }<a name="line.11463"></a>
<span class="sourceLineNo">11464</span> }<a name="line.11464"></a>
<span class="sourceLineNo">11465</span> }<a name="line.11465"></a>
<span class="sourceLineNo">11466</span> } else if (as &gt; bs) {<a name="line.11466"></a>
<span class="sourceLineNo">11467</span> if (it.isOutputDouble()) {<a name="line.11467"></a>
<span class="sourceLineNo">11468</span> while (it.hasNext()) {<a name="line.11468"></a>
<span class="sourceLineNo">11469</span> double iax = it.aDouble;<a name="line.11469"></a>
<span class="sourceLineNo">11470</span> final double ibx = it.bDouble;<a name="line.11470"></a>
<span class="sourceLineNo">11471</span> float ox;<a name="line.11471"></a>
<span class="sourceLineNo">11472</span> ox = (float) (Math.pow(iax, ibx));<a name="line.11472"></a>
<span class="sourceLineNo">11473</span> oaf32data[it.oIndex] = ox;<a name="line.11473"></a>
<span class="sourceLineNo">11474</span> for (int j = 1; j &lt; is; j++) {<a name="line.11474"></a>
<span class="sourceLineNo">11475</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.11475"></a>
<span class="sourceLineNo">11476</span> ox = (float) (Math.pow(iax, ibx));<a name="line.11476"></a>
<span class="sourceLineNo">11477</span> oaf32data[it.oIndex + j] = ox;<a name="line.11477"></a>
<span class="sourceLineNo">11478</span> }<a name="line.11478"></a>
<span class="sourceLineNo">11479</span> }<a name="line.11479"></a>
<span class="sourceLineNo">11480</span> } else {<a name="line.11480"></a>
<span class="sourceLineNo">11481</span> while (it.hasNext()) {<a name="line.11481"></a>
<span class="sourceLineNo">11482</span> long iax = it.aLong;<a name="line.11482"></a>
<span class="sourceLineNo">11483</span> final long ibx = it.bLong;<a name="line.11483"></a>
<span class="sourceLineNo">11484</span> float ox;<a name="line.11484"></a>
<span class="sourceLineNo">11485</span> ox = (float) (Math.pow(iax, ibx));<a name="line.11485"></a>
<span class="sourceLineNo">11486</span> oaf32data[it.oIndex] = ox;<a name="line.11486"></a>
<span class="sourceLineNo">11487</span> for (int j = 1; j &lt; is; j++) {<a name="line.11487"></a>
<span class="sourceLineNo">11488</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.11488"></a>
<span class="sourceLineNo">11489</span> ox = (float) (Math.pow(iax, ibx));<a name="line.11489"></a>
<span class="sourceLineNo">11490</span> oaf32data[it.oIndex + j] = ox;<a name="line.11490"></a>
<span class="sourceLineNo">11491</span> }<a name="line.11491"></a>
<span class="sourceLineNo">11492</span> }<a name="line.11492"></a>
<span class="sourceLineNo">11493</span> }<a name="line.11493"></a>
<span class="sourceLineNo">11494</span> } else if (as == 1) {<a name="line.11494"></a>
<span class="sourceLineNo">11495</span> if (it.isOutputDouble()) {<a name="line.11495"></a>
<span class="sourceLineNo">11496</span> while (it.hasNext()) {<a name="line.11496"></a>
<span class="sourceLineNo">11497</span> final double iax = it.aDouble;<a name="line.11497"></a>
<span class="sourceLineNo">11498</span> final double ibx = it.bDouble;<a name="line.11498"></a>
<span class="sourceLineNo">11499</span> float ox;<a name="line.11499"></a>
<span class="sourceLineNo">11500</span> ox = (float) (Math.pow(iax, ibx));<a name="line.11500"></a>
<span class="sourceLineNo">11501</span> for (int j = 0; j &lt; is; j++) {<a name="line.11501"></a>
<span class="sourceLineNo">11502</span> oaf32data[it.oIndex + j] = ox;<a name="line.11502"></a>
<span class="sourceLineNo">11503</span> }<a name="line.11503"></a>
<span class="sourceLineNo">11504</span> }<a name="line.11504"></a>
<span class="sourceLineNo">11505</span> } else {<a name="line.11505"></a>
<span class="sourceLineNo">11506</span> while (it.hasNext()) {<a name="line.11506"></a>
<span class="sourceLineNo">11507</span> final long iax = it.aLong;<a name="line.11507"></a>
<span class="sourceLineNo">11508</span> final long ibx = it.bLong;<a name="line.11508"></a>
<span class="sourceLineNo">11509</span> float ox;<a name="line.11509"></a>
<span class="sourceLineNo">11510</span> ox = (float) (Math.pow(iax, ibx));<a name="line.11510"></a>
<span class="sourceLineNo">11511</span> for (int j = 0; j &lt; is; j++) {<a name="line.11511"></a>
<span class="sourceLineNo">11512</span> oaf32data[it.oIndex + j] = ox;<a name="line.11512"></a>
<span class="sourceLineNo">11513</span> }<a name="line.11513"></a>
<span class="sourceLineNo">11514</span> }<a name="line.11514"></a>
<span class="sourceLineNo">11515</span> }<a name="line.11515"></a>
<span class="sourceLineNo">11516</span> } else {<a name="line.11516"></a>
<span class="sourceLineNo">11517</span> if (it.isOutputDouble()) {<a name="line.11517"></a>
<span class="sourceLineNo">11518</span> while (it.hasNext()) {<a name="line.11518"></a>
<span class="sourceLineNo">11519</span> double iax = it.aDouble;<a name="line.11519"></a>
<span class="sourceLineNo">11520</span> double ibx = it.bDouble;<a name="line.11520"></a>
<span class="sourceLineNo">11521</span> float ox;<a name="line.11521"></a>
<span class="sourceLineNo">11522</span> ox = (float) (Math.pow(iax, ibx));<a name="line.11522"></a>
<span class="sourceLineNo">11523</span> oaf32data[it.oIndex] = ox;<a name="line.11523"></a>
<span class="sourceLineNo">11524</span> for (int j = 1; j &lt; is; j++) {<a name="line.11524"></a>
<span class="sourceLineNo">11525</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.11525"></a>
<span class="sourceLineNo">11526</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.11526"></a>
<span class="sourceLineNo">11527</span> ox = (float) (Math.pow(iax, ibx));<a name="line.11527"></a>
<span class="sourceLineNo">11528</span> oaf32data[it.oIndex + j] = ox;<a name="line.11528"></a>
<span class="sourceLineNo">11529</span> }<a name="line.11529"></a>
<span class="sourceLineNo">11530</span> }<a name="line.11530"></a>
<span class="sourceLineNo">11531</span> } else {<a name="line.11531"></a>
<span class="sourceLineNo">11532</span> while (it.hasNext()) {<a name="line.11532"></a>
<span class="sourceLineNo">11533</span> long iax = it.aLong;<a name="line.11533"></a>
<span class="sourceLineNo">11534</span> long ibx = it.bLong;<a name="line.11534"></a>
<span class="sourceLineNo">11535</span> float ox;<a name="line.11535"></a>
<span class="sourceLineNo">11536</span> ox = (float) (Math.pow(iax, ibx));<a name="line.11536"></a>
<span class="sourceLineNo">11537</span> oaf32data[it.oIndex] = ox;<a name="line.11537"></a>
<span class="sourceLineNo">11538</span> for (int j = 1; j &lt; is; j++) {<a name="line.11538"></a>
<span class="sourceLineNo">11539</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.11539"></a>
<span class="sourceLineNo">11540</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.11540"></a>
<span class="sourceLineNo">11541</span> ox = (float) (Math.pow(iax, ibx));<a name="line.11541"></a>
<span class="sourceLineNo">11542</span> oaf32data[it.oIndex + j] = ox;<a name="line.11542"></a>
<span class="sourceLineNo">11543</span> }<a name="line.11543"></a>
<span class="sourceLineNo">11544</span> }<a name="line.11544"></a>
<span class="sourceLineNo">11545</span> }<a name="line.11545"></a>
<span class="sourceLineNo">11546</span> }<a name="line.11546"></a>
<span class="sourceLineNo">11547</span> break;<a name="line.11547"></a>
<span class="sourceLineNo">11548</span> case Dataset.ARRAYFLOAT64:<a name="line.11548"></a>
<span class="sourceLineNo">11549</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.11549"></a>
<span class="sourceLineNo">11550</span> if (is == 1) {<a name="line.11550"></a>
<span class="sourceLineNo">11551</span> if (it.isOutputDouble()) {<a name="line.11551"></a>
<span class="sourceLineNo">11552</span> while (it.hasNext()) {<a name="line.11552"></a>
<span class="sourceLineNo">11553</span> final double iax = it.aDouble;<a name="line.11553"></a>
<span class="sourceLineNo">11554</span> final double ibx = it.bDouble;<a name="line.11554"></a>
<span class="sourceLineNo">11555</span> double ox;<a name="line.11555"></a>
<span class="sourceLineNo">11556</span> ox = (Math.pow(iax, ibx));<a name="line.11556"></a>
<span class="sourceLineNo">11557</span> oaf64data[it.oIndex] = ox;<a name="line.11557"></a>
<span class="sourceLineNo">11558</span> }<a name="line.11558"></a>
<span class="sourceLineNo">11559</span> } else {<a name="line.11559"></a>
<span class="sourceLineNo">11560</span> while (it.hasNext()) {<a name="line.11560"></a>
<span class="sourceLineNo">11561</span> final long iax = it.aLong;<a name="line.11561"></a>
<span class="sourceLineNo">11562</span> final long ibx = it.bLong;<a name="line.11562"></a>
<span class="sourceLineNo">11563</span> double ox;<a name="line.11563"></a>
<span class="sourceLineNo">11564</span> ox = (Math.pow(iax, ibx));<a name="line.11564"></a>
<span class="sourceLineNo">11565</span> oaf64data[it.oIndex] = ox;<a name="line.11565"></a>
<span class="sourceLineNo">11566</span> }<a name="line.11566"></a>
<span class="sourceLineNo">11567</span> }<a name="line.11567"></a>
<span class="sourceLineNo">11568</span> } else if (as &lt; bs) {<a name="line.11568"></a>
<span class="sourceLineNo">11569</span> if (it.isOutputDouble()) {<a name="line.11569"></a>
<span class="sourceLineNo">11570</span> while (it.hasNext()) {<a name="line.11570"></a>
<span class="sourceLineNo">11571</span> final double iax = it.aDouble;<a name="line.11571"></a>
<span class="sourceLineNo">11572</span> double ibx = it.bDouble;<a name="line.11572"></a>
<span class="sourceLineNo">11573</span> double ox;<a name="line.11573"></a>
<span class="sourceLineNo">11574</span> ox = (Math.pow(iax, ibx));<a name="line.11574"></a>
<span class="sourceLineNo">11575</span> oaf64data[it.oIndex] = ox;<a name="line.11575"></a>
<span class="sourceLineNo">11576</span> for (int j = 1; j &lt; is; j++) {<a name="line.11576"></a>
<span class="sourceLineNo">11577</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.11577"></a>
<span class="sourceLineNo">11578</span> ox = (Math.pow(iax, ibx));<a name="line.11578"></a>
<span class="sourceLineNo">11579</span> oaf64data[it.oIndex + j] = ox;<a name="line.11579"></a>
<span class="sourceLineNo">11580</span> }<a name="line.11580"></a>
<span class="sourceLineNo">11581</span> }<a name="line.11581"></a>
<span class="sourceLineNo">11582</span> } else {<a name="line.11582"></a>
<span class="sourceLineNo">11583</span> while (it.hasNext()) {<a name="line.11583"></a>
<span class="sourceLineNo">11584</span> final long iax = it.aLong;<a name="line.11584"></a>
<span class="sourceLineNo">11585</span> long ibx = it.bLong;<a name="line.11585"></a>
<span class="sourceLineNo">11586</span> double ox;<a name="line.11586"></a>
<span class="sourceLineNo">11587</span> ox = (Math.pow(iax, ibx));<a name="line.11587"></a>
<span class="sourceLineNo">11588</span> oaf64data[it.oIndex] = ox;<a name="line.11588"></a>
<span class="sourceLineNo">11589</span> for (int j = 1; j &lt; is; j++) {<a name="line.11589"></a>
<span class="sourceLineNo">11590</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.11590"></a>
<span class="sourceLineNo">11591</span> ox = (Math.pow(iax, ibx));<a name="line.11591"></a>
<span class="sourceLineNo">11592</span> oaf64data[it.oIndex + j] = ox;<a name="line.11592"></a>
<span class="sourceLineNo">11593</span> }<a name="line.11593"></a>
<span class="sourceLineNo">11594</span> }<a name="line.11594"></a>
<span class="sourceLineNo">11595</span> }<a name="line.11595"></a>
<span class="sourceLineNo">11596</span> } else if (as &gt; bs) {<a name="line.11596"></a>
<span class="sourceLineNo">11597</span> if (it.isOutputDouble()) {<a name="line.11597"></a>
<span class="sourceLineNo">11598</span> while (it.hasNext()) {<a name="line.11598"></a>
<span class="sourceLineNo">11599</span> double iax = it.aDouble;<a name="line.11599"></a>
<span class="sourceLineNo">11600</span> final double ibx = it.bDouble;<a name="line.11600"></a>
<span class="sourceLineNo">11601</span> double ox;<a name="line.11601"></a>
<span class="sourceLineNo">11602</span> ox = (Math.pow(iax, ibx));<a name="line.11602"></a>
<span class="sourceLineNo">11603</span> oaf64data[it.oIndex] = ox;<a name="line.11603"></a>
<span class="sourceLineNo">11604</span> for (int j = 1; j &lt; is; j++) {<a name="line.11604"></a>
<span class="sourceLineNo">11605</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.11605"></a>
<span class="sourceLineNo">11606</span> ox = (Math.pow(iax, ibx));<a name="line.11606"></a>
<span class="sourceLineNo">11607</span> oaf64data[it.oIndex + j] = ox;<a name="line.11607"></a>
<span class="sourceLineNo">11608</span> }<a name="line.11608"></a>
<span class="sourceLineNo">11609</span> }<a name="line.11609"></a>
<span class="sourceLineNo">11610</span> } else {<a name="line.11610"></a>
<span class="sourceLineNo">11611</span> while (it.hasNext()) {<a name="line.11611"></a>
<span class="sourceLineNo">11612</span> long iax = it.aLong;<a name="line.11612"></a>
<span class="sourceLineNo">11613</span> final long ibx = it.bLong;<a name="line.11613"></a>
<span class="sourceLineNo">11614</span> double ox;<a name="line.11614"></a>
<span class="sourceLineNo">11615</span> ox = (Math.pow(iax, ibx));<a name="line.11615"></a>
<span class="sourceLineNo">11616</span> oaf64data[it.oIndex] = ox;<a name="line.11616"></a>
<span class="sourceLineNo">11617</span> for (int j = 1; j &lt; is; j++) {<a name="line.11617"></a>
<span class="sourceLineNo">11618</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.11618"></a>
<span class="sourceLineNo">11619</span> ox = (Math.pow(iax, ibx));<a name="line.11619"></a>
<span class="sourceLineNo">11620</span> oaf64data[it.oIndex + j] = ox;<a name="line.11620"></a>
<span class="sourceLineNo">11621</span> }<a name="line.11621"></a>
<span class="sourceLineNo">11622</span> }<a name="line.11622"></a>
<span class="sourceLineNo">11623</span> }<a name="line.11623"></a>
<span class="sourceLineNo">11624</span> } else if (as == 1) {<a name="line.11624"></a>
<span class="sourceLineNo">11625</span> if (it.isOutputDouble()) {<a name="line.11625"></a>
<span class="sourceLineNo">11626</span> while (it.hasNext()) {<a name="line.11626"></a>
<span class="sourceLineNo">11627</span> final double iax = it.aDouble;<a name="line.11627"></a>
<span class="sourceLineNo">11628</span> final double ibx = it.bDouble;<a name="line.11628"></a>
<span class="sourceLineNo">11629</span> double ox;<a name="line.11629"></a>
<span class="sourceLineNo">11630</span> ox = (Math.pow(iax, ibx));<a name="line.11630"></a>
<span class="sourceLineNo">11631</span> for (int j = 0; j &lt; is; j++) {<a name="line.11631"></a>
<span class="sourceLineNo">11632</span> oaf64data[it.oIndex + j] = ox;<a name="line.11632"></a>
<span class="sourceLineNo">11633</span> }<a name="line.11633"></a>
<span class="sourceLineNo">11634</span> }<a name="line.11634"></a>
<span class="sourceLineNo">11635</span> } else {<a name="line.11635"></a>
<span class="sourceLineNo">11636</span> while (it.hasNext()) {<a name="line.11636"></a>
<span class="sourceLineNo">11637</span> final long iax = it.aLong;<a name="line.11637"></a>
<span class="sourceLineNo">11638</span> final long ibx = it.bLong;<a name="line.11638"></a>
<span class="sourceLineNo">11639</span> double ox;<a name="line.11639"></a>
<span class="sourceLineNo">11640</span> ox = (Math.pow(iax, ibx));<a name="line.11640"></a>
<span class="sourceLineNo">11641</span> for (int j = 0; j &lt; is; j++) {<a name="line.11641"></a>
<span class="sourceLineNo">11642</span> oaf64data[it.oIndex + j] = ox;<a name="line.11642"></a>
<span class="sourceLineNo">11643</span> }<a name="line.11643"></a>
<span class="sourceLineNo">11644</span> }<a name="line.11644"></a>
<span class="sourceLineNo">11645</span> }<a name="line.11645"></a>
<span class="sourceLineNo">11646</span> } else {<a name="line.11646"></a>
<span class="sourceLineNo">11647</span> if (it.isOutputDouble()) {<a name="line.11647"></a>
<span class="sourceLineNo">11648</span> while (it.hasNext()) {<a name="line.11648"></a>
<span class="sourceLineNo">11649</span> double iax = it.aDouble;<a name="line.11649"></a>
<span class="sourceLineNo">11650</span> double ibx = it.bDouble;<a name="line.11650"></a>
<span class="sourceLineNo">11651</span> double ox;<a name="line.11651"></a>
<span class="sourceLineNo">11652</span> ox = (Math.pow(iax, ibx));<a name="line.11652"></a>
<span class="sourceLineNo">11653</span> oaf64data[it.oIndex] = ox;<a name="line.11653"></a>
<span class="sourceLineNo">11654</span> for (int j = 1; j &lt; is; j++) {<a name="line.11654"></a>
<span class="sourceLineNo">11655</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.11655"></a>
<span class="sourceLineNo">11656</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.11656"></a>
<span class="sourceLineNo">11657</span> ox = (Math.pow(iax, ibx));<a name="line.11657"></a>
<span class="sourceLineNo">11658</span> oaf64data[it.oIndex + j] = ox;<a name="line.11658"></a>
<span class="sourceLineNo">11659</span> }<a name="line.11659"></a>
<span class="sourceLineNo">11660</span> }<a name="line.11660"></a>
<span class="sourceLineNo">11661</span> } else {<a name="line.11661"></a>
<span class="sourceLineNo">11662</span> while (it.hasNext()) {<a name="line.11662"></a>
<span class="sourceLineNo">11663</span> long iax = it.aLong;<a name="line.11663"></a>
<span class="sourceLineNo">11664</span> long ibx = it.bLong;<a name="line.11664"></a>
<span class="sourceLineNo">11665</span> double ox;<a name="line.11665"></a>
<span class="sourceLineNo">11666</span> ox = (Math.pow(iax, ibx));<a name="line.11666"></a>
<span class="sourceLineNo">11667</span> oaf64data[it.oIndex] = ox;<a name="line.11667"></a>
<span class="sourceLineNo">11668</span> for (int j = 1; j &lt; is; j++) {<a name="line.11668"></a>
<span class="sourceLineNo">11669</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.11669"></a>
<span class="sourceLineNo">11670</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.11670"></a>
<span class="sourceLineNo">11671</span> ox = (Math.pow(iax, ibx));<a name="line.11671"></a>
<span class="sourceLineNo">11672</span> oaf64data[it.oIndex + j] = ox;<a name="line.11672"></a>
<span class="sourceLineNo">11673</span> }<a name="line.11673"></a>
<span class="sourceLineNo">11674</span> }<a name="line.11674"></a>
<span class="sourceLineNo">11675</span> }<a name="line.11675"></a>
<span class="sourceLineNo">11676</span> }<a name="line.11676"></a>
<span class="sourceLineNo">11677</span> break;<a name="line.11677"></a>
<span class="sourceLineNo">11678</span> case Dataset.COMPLEX64:<a name="line.11678"></a>
<span class="sourceLineNo">11679</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.11679"></a>
<span class="sourceLineNo">11680</span> if (!da.isComplex()) {<a name="line.11680"></a>
<span class="sourceLineNo">11681</span> if (it.isOutputDouble()) {<a name="line.11681"></a>
<span class="sourceLineNo">11682</span> final double iay = 0;<a name="line.11682"></a>
<span class="sourceLineNo">11683</span> if (db.isComplex()) {<a name="line.11683"></a>
<span class="sourceLineNo">11684</span> while (it.hasNext()) {<a name="line.11684"></a>
<span class="sourceLineNo">11685</span> final double iax = it.aDouble;<a name="line.11685"></a>
<span class="sourceLineNo">11686</span> final double ibx = it.bDouble;<a name="line.11686"></a>
<span class="sourceLineNo">11687</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.11687"></a>
<span class="sourceLineNo">11688</span> Complex tz;<a name="line.11688"></a>
<span class="sourceLineNo">11689</span> float ox;<a name="line.11689"></a>
<span class="sourceLineNo">11690</span> float oy;<a name="line.11690"></a>
<span class="sourceLineNo">11691</span> tz = new Complex(iax, iay).pow(new Complex(ibx, iby));<a name="line.11691"></a>
<span class="sourceLineNo">11692</span> ox = (float) (tz.getReal());<a name="line.11692"></a>
<span class="sourceLineNo">11693</span> oy = (float) (tz.getImaginary());<a name="line.11693"></a>
<span class="sourceLineNo">11694</span> oc64data[it.oIndex] = ox;<a name="line.11694"></a>
<span class="sourceLineNo">11695</span> oc64data[it.oIndex + 1] = oy;<a name="line.11695"></a>
<span class="sourceLineNo">11696</span> }<a name="line.11696"></a>
<span class="sourceLineNo">11697</span> } else {<a name="line.11697"></a>
<span class="sourceLineNo">11698</span> while (it.hasNext()) {<a name="line.11698"></a>
<span class="sourceLineNo">11699</span> final double iax = it.aDouble;<a name="line.11699"></a>
<span class="sourceLineNo">11700</span> final double ibx = it.bDouble;<a name="line.11700"></a>
<span class="sourceLineNo">11701</span> final double iby = 0;<a name="line.11701"></a>
<span class="sourceLineNo">11702</span> Complex tz;<a name="line.11702"></a>
<span class="sourceLineNo">11703</span> float ox;<a name="line.11703"></a>
<span class="sourceLineNo">11704</span> float oy;<a name="line.11704"></a>
<span class="sourceLineNo">11705</span> tz = new Complex(iax, iay).pow(new Complex(ibx, iby));<a name="line.11705"></a>
<span class="sourceLineNo">11706</span> ox = (float) (tz.getReal());<a name="line.11706"></a>
<span class="sourceLineNo">11707</span> oy = (float) (tz.getImaginary());<a name="line.11707"></a>
<span class="sourceLineNo">11708</span> oc64data[it.oIndex] = ox;<a name="line.11708"></a>
<span class="sourceLineNo">11709</span> oc64data[it.oIndex + 1] = oy;<a name="line.11709"></a>
<span class="sourceLineNo">11710</span> }<a name="line.11710"></a>
<span class="sourceLineNo">11711</span> }<a name="line.11711"></a>
<span class="sourceLineNo">11712</span> } else {<a name="line.11712"></a>
<span class="sourceLineNo">11713</span> final long iay = 0;<a name="line.11713"></a>
<span class="sourceLineNo">11714</span> while (it.hasNext()) {<a name="line.11714"></a>
<span class="sourceLineNo">11715</span> final long iax = it.aLong;<a name="line.11715"></a>
<span class="sourceLineNo">11716</span> final long ibx = it.bLong;<a name="line.11716"></a>
<span class="sourceLineNo">11717</span> final long iby = 0;<a name="line.11717"></a>
<span class="sourceLineNo">11718</span> Complex tz;<a name="line.11718"></a>
<span class="sourceLineNo">11719</span> float ox;<a name="line.11719"></a>
<span class="sourceLineNo">11720</span> float oy;<a name="line.11720"></a>
<span class="sourceLineNo">11721</span> tz = new Complex(iax, iay).pow(new Complex(ibx, iby));<a name="line.11721"></a>
<span class="sourceLineNo">11722</span> ox = (float) (tz.getReal());<a name="line.11722"></a>
<span class="sourceLineNo">11723</span> oy = (float) (tz.getImaginary());<a name="line.11723"></a>
<span class="sourceLineNo">11724</span> oc64data[it.oIndex] = ox;<a name="line.11724"></a>
<span class="sourceLineNo">11725</span> oc64data[it.oIndex + 1] = oy;<a name="line.11725"></a>
<span class="sourceLineNo">11726</span> }<a name="line.11726"></a>
<span class="sourceLineNo">11727</span> }<a name="line.11727"></a>
<span class="sourceLineNo">11728</span> } else if (!db.isComplex()) {<a name="line.11728"></a>
<span class="sourceLineNo">11729</span> final double iby = 0;<a name="line.11729"></a>
<span class="sourceLineNo">11730</span> while (it.hasNext()) {<a name="line.11730"></a>
<span class="sourceLineNo">11731</span> final double iax = it.aDouble;<a name="line.11731"></a>
<span class="sourceLineNo">11732</span> final double ibx = it.bDouble;<a name="line.11732"></a>
<span class="sourceLineNo">11733</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.11733"></a>
<span class="sourceLineNo">11734</span> Complex tz;<a name="line.11734"></a>
<span class="sourceLineNo">11735</span> float ox;<a name="line.11735"></a>
<span class="sourceLineNo">11736</span> float oy;<a name="line.11736"></a>
<span class="sourceLineNo">11737</span> tz = new Complex(iax, iay).pow(new Complex(ibx, iby));<a name="line.11737"></a>
<span class="sourceLineNo">11738</span> ox = (float) (tz.getReal());<a name="line.11738"></a>
<span class="sourceLineNo">11739</span> oy = (float) (tz.getImaginary());<a name="line.11739"></a>
<span class="sourceLineNo">11740</span> oc64data[it.oIndex] = ox;<a name="line.11740"></a>
<span class="sourceLineNo">11741</span> oc64data[it.oIndex + 1] = oy;<a name="line.11741"></a>
<span class="sourceLineNo">11742</span> }<a name="line.11742"></a>
<span class="sourceLineNo">11743</span> } else {<a name="line.11743"></a>
<span class="sourceLineNo">11744</span> while (it.hasNext()) {<a name="line.11744"></a>
<span class="sourceLineNo">11745</span> final double iax = it.aDouble;<a name="line.11745"></a>
<span class="sourceLineNo">11746</span> final double ibx = it.bDouble;<a name="line.11746"></a>
<span class="sourceLineNo">11747</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.11747"></a>
<span class="sourceLineNo">11748</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.11748"></a>
<span class="sourceLineNo">11749</span> Complex tz;<a name="line.11749"></a>
<span class="sourceLineNo">11750</span> float ox;<a name="line.11750"></a>
<span class="sourceLineNo">11751</span> float oy;<a name="line.11751"></a>
<span class="sourceLineNo">11752</span> tz = new Complex(iax, iay).pow(new Complex(ibx, iby));<a name="line.11752"></a>
<span class="sourceLineNo">11753</span> ox = (float) (tz.getReal());<a name="line.11753"></a>
<span class="sourceLineNo">11754</span> oy = (float) (tz.getImaginary());<a name="line.11754"></a>
<span class="sourceLineNo">11755</span> oc64data[it.oIndex] = ox;<a name="line.11755"></a>
<span class="sourceLineNo">11756</span> oc64data[it.oIndex + 1] = oy;<a name="line.11756"></a>
<span class="sourceLineNo">11757</span> }<a name="line.11757"></a>
<span class="sourceLineNo">11758</span> }<a name="line.11758"></a>
<span class="sourceLineNo">11759</span> break;<a name="line.11759"></a>
<span class="sourceLineNo">11760</span> case Dataset.COMPLEX128:<a name="line.11760"></a>
<span class="sourceLineNo">11761</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.11761"></a>
<span class="sourceLineNo">11762</span> if (!da.isComplex()) {<a name="line.11762"></a>
<span class="sourceLineNo">11763</span> if (it.isOutputDouble()) {<a name="line.11763"></a>
<span class="sourceLineNo">11764</span> final double iay = 0;<a name="line.11764"></a>
<span class="sourceLineNo">11765</span> if (db.isComplex()) {<a name="line.11765"></a>
<span class="sourceLineNo">11766</span> while (it.hasNext()) {<a name="line.11766"></a>
<span class="sourceLineNo">11767</span> final double iax = it.aDouble;<a name="line.11767"></a>
<span class="sourceLineNo">11768</span> final double ibx = it.bDouble;<a name="line.11768"></a>
<span class="sourceLineNo">11769</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.11769"></a>
<span class="sourceLineNo">11770</span> Complex tz;<a name="line.11770"></a>
<span class="sourceLineNo">11771</span> double ox;<a name="line.11771"></a>
<span class="sourceLineNo">11772</span> double oy;<a name="line.11772"></a>
<span class="sourceLineNo">11773</span> tz = new Complex(iax, iay).pow(new Complex(ibx, iby));<a name="line.11773"></a>
<span class="sourceLineNo">11774</span> ox = (tz.getReal());<a name="line.11774"></a>
<span class="sourceLineNo">11775</span> oy = (tz.getImaginary());<a name="line.11775"></a>
<span class="sourceLineNo">11776</span> oc128data[it.oIndex] = ox;<a name="line.11776"></a>
<span class="sourceLineNo">11777</span> oc128data[it.oIndex + 1] = oy;<a name="line.11777"></a>
<span class="sourceLineNo">11778</span> }<a name="line.11778"></a>
<span class="sourceLineNo">11779</span> } else {<a name="line.11779"></a>
<span class="sourceLineNo">11780</span> while (it.hasNext()) {<a name="line.11780"></a>
<span class="sourceLineNo">11781</span> final double iax = it.aDouble;<a name="line.11781"></a>
<span class="sourceLineNo">11782</span> final double ibx = it.bDouble;<a name="line.11782"></a>
<span class="sourceLineNo">11783</span> final double iby = 0;<a name="line.11783"></a>
<span class="sourceLineNo">11784</span> Complex tz;<a name="line.11784"></a>
<span class="sourceLineNo">11785</span> double ox;<a name="line.11785"></a>
<span class="sourceLineNo">11786</span> double oy;<a name="line.11786"></a>
<span class="sourceLineNo">11787</span> tz = new Complex(iax, iay).pow(new Complex(ibx, iby));<a name="line.11787"></a>
<span class="sourceLineNo">11788</span> ox = (tz.getReal());<a name="line.11788"></a>
<span class="sourceLineNo">11789</span> oy = (tz.getImaginary());<a name="line.11789"></a>
<span class="sourceLineNo">11790</span> oc128data[it.oIndex] = ox;<a name="line.11790"></a>
<span class="sourceLineNo">11791</span> oc128data[it.oIndex + 1] = oy;<a name="line.11791"></a>
<span class="sourceLineNo">11792</span> }<a name="line.11792"></a>
<span class="sourceLineNo">11793</span> }<a name="line.11793"></a>
<span class="sourceLineNo">11794</span> } else {<a name="line.11794"></a>
<span class="sourceLineNo">11795</span> final long iay = 0;<a name="line.11795"></a>
<span class="sourceLineNo">11796</span> while (it.hasNext()) {<a name="line.11796"></a>
<span class="sourceLineNo">11797</span> final long iax = it.aLong;<a name="line.11797"></a>
<span class="sourceLineNo">11798</span> final long ibx = it.bLong;<a name="line.11798"></a>
<span class="sourceLineNo">11799</span> final long iby = 0;<a name="line.11799"></a>
<span class="sourceLineNo">11800</span> Complex tz;<a name="line.11800"></a>
<span class="sourceLineNo">11801</span> double ox;<a name="line.11801"></a>
<span class="sourceLineNo">11802</span> double oy;<a name="line.11802"></a>
<span class="sourceLineNo">11803</span> tz = new Complex(iax, iay).pow(new Complex(ibx, iby));<a name="line.11803"></a>
<span class="sourceLineNo">11804</span> ox = (tz.getReal());<a name="line.11804"></a>
<span class="sourceLineNo">11805</span> oy = (tz.getImaginary());<a name="line.11805"></a>
<span class="sourceLineNo">11806</span> oc128data[it.oIndex] = ox;<a name="line.11806"></a>
<span class="sourceLineNo">11807</span> oc128data[it.oIndex + 1] = oy;<a name="line.11807"></a>
<span class="sourceLineNo">11808</span> }<a name="line.11808"></a>
<span class="sourceLineNo">11809</span> }<a name="line.11809"></a>
<span class="sourceLineNo">11810</span> } else if (!db.isComplex()) {<a name="line.11810"></a>
<span class="sourceLineNo">11811</span> final double iby = 0;<a name="line.11811"></a>
<span class="sourceLineNo">11812</span> while (it.hasNext()) {<a name="line.11812"></a>
<span class="sourceLineNo">11813</span> final double iax = it.aDouble;<a name="line.11813"></a>
<span class="sourceLineNo">11814</span> final double ibx = it.bDouble;<a name="line.11814"></a>
<span class="sourceLineNo">11815</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.11815"></a>
<span class="sourceLineNo">11816</span> Complex tz;<a name="line.11816"></a>
<span class="sourceLineNo">11817</span> double ox;<a name="line.11817"></a>
<span class="sourceLineNo">11818</span> double oy;<a name="line.11818"></a>
<span class="sourceLineNo">11819</span> tz = new Complex(iax, iay).pow(new Complex(ibx, iby));<a name="line.11819"></a>
<span class="sourceLineNo">11820</span> ox = (tz.getReal());<a name="line.11820"></a>
<span class="sourceLineNo">11821</span> oy = (tz.getImaginary());<a name="line.11821"></a>
<span class="sourceLineNo">11822</span> oc128data[it.oIndex] = ox;<a name="line.11822"></a>
<span class="sourceLineNo">11823</span> oc128data[it.oIndex + 1] = oy;<a name="line.11823"></a>
<span class="sourceLineNo">11824</span> }<a name="line.11824"></a>
<span class="sourceLineNo">11825</span> } else {<a name="line.11825"></a>
<span class="sourceLineNo">11826</span> while (it.hasNext()) {<a name="line.11826"></a>
<span class="sourceLineNo">11827</span> final double iax = it.aDouble;<a name="line.11827"></a>
<span class="sourceLineNo">11828</span> final double ibx = it.bDouble;<a name="line.11828"></a>
<span class="sourceLineNo">11829</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.11829"></a>
<span class="sourceLineNo">11830</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.11830"></a>
<span class="sourceLineNo">11831</span> Complex tz;<a name="line.11831"></a>
<span class="sourceLineNo">11832</span> double ox;<a name="line.11832"></a>
<span class="sourceLineNo">11833</span> double oy;<a name="line.11833"></a>
<span class="sourceLineNo">11834</span> tz = new Complex(iax, iay).pow(new Complex(ibx, iby));<a name="line.11834"></a>
<span class="sourceLineNo">11835</span> ox = (tz.getReal());<a name="line.11835"></a>
<span class="sourceLineNo">11836</span> oy = (tz.getImaginary());<a name="line.11836"></a>
<span class="sourceLineNo">11837</span> oc128data[it.oIndex] = ox;<a name="line.11837"></a>
<span class="sourceLineNo">11838</span> oc128data[it.oIndex + 1] = oy;<a name="line.11838"></a>
<span class="sourceLineNo">11839</span> }<a name="line.11839"></a>
<span class="sourceLineNo">11840</span> }<a name="line.11840"></a>
<span class="sourceLineNo">11841</span> break;<a name="line.11841"></a>
<span class="sourceLineNo">11842</span> default:<a name="line.11842"></a>
<span class="sourceLineNo">11843</span> throw new IllegalArgumentException("power supports integer, compound integer, real, compound real, complex datasets only");<a name="line.11843"></a>
<span class="sourceLineNo">11844</span> }<a name="line.11844"></a>
<span class="sourceLineNo">11845</span><a name="line.11845"></a>
<span class="sourceLineNo">11846</span> addBinaryOperatorName(da, db, result, "**");<a name="line.11846"></a>
<span class="sourceLineNo">11847</span> return result;<a name="line.11847"></a>
<span class="sourceLineNo">11848</span> }<a name="line.11848"></a>
<span class="sourceLineNo">11849</span><a name="line.11849"></a>
<span class="sourceLineNo">11850</span> /**<a name="line.11850"></a>
<span class="sourceLineNo">11851</span> * remainder operator<a name="line.11851"></a>
<span class="sourceLineNo">11852</span> * @param a<a name="line.11852"></a>
<span class="sourceLineNo">11853</span> * @param b<a name="line.11853"></a>
<span class="sourceLineNo">11854</span> * @return {@code a % b}, remainder of division of a by b<a name="line.11854"></a>
<span class="sourceLineNo">11855</span> */<a name="line.11855"></a>
<span class="sourceLineNo">11856</span> public static Dataset remainder(final Object a, final Object b) {<a name="line.11856"></a>
<span class="sourceLineNo">11857</span> return remainder(a, b, null);<a name="line.11857"></a>
<span class="sourceLineNo">11858</span> }<a name="line.11858"></a>
<span class="sourceLineNo">11859</span><a name="line.11859"></a>
<span class="sourceLineNo">11860</span> /**<a name="line.11860"></a>
<span class="sourceLineNo">11861</span> * remainder operator<a name="line.11861"></a>
<span class="sourceLineNo">11862</span> * @param a<a name="line.11862"></a>
<span class="sourceLineNo">11863</span> * @param b<a name="line.11863"></a>
<span class="sourceLineNo">11864</span> * @param o output can be null - in which case, a new dataset is created<a name="line.11864"></a>
<span class="sourceLineNo">11865</span> * @return {@code a % b}, remainder of division of a by b<a name="line.11865"></a>
<span class="sourceLineNo">11866</span> */<a name="line.11866"></a>
<span class="sourceLineNo">11867</span> public static Dataset remainder(final Object a, final Object b, final Dataset o) {<a name="line.11867"></a>
<span class="sourceLineNo">11868</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.11868"></a>
<span class="sourceLineNo">11869</span> Dataset db = b instanceof Dataset ? (Dataset) b : DatasetFactory.createFromObject(b);<a name="line.11869"></a>
<span class="sourceLineNo">11870</span> BroadcastIterator it = BroadcastIterator.createIterator(da, db, o, true);<a name="line.11870"></a>
<span class="sourceLineNo">11871</span> final Dataset result = it.getOutput();<a name="line.11871"></a>
<span class="sourceLineNo">11872</span> if (!result.isComplex()) {<a name="line.11872"></a>
<span class="sourceLineNo">11873</span> boolean change = false;<a name="line.11873"></a>
<span class="sourceLineNo">11874</span> if (da.isComplex()) {<a name="line.11874"></a>
<span class="sourceLineNo">11875</span> da = da.getRealView();<a name="line.11875"></a>
<span class="sourceLineNo">11876</span> change = true;<a name="line.11876"></a>
<span class="sourceLineNo">11877</span> }<a name="line.11877"></a>
<span class="sourceLineNo">11878</span> if (db.isComplex()) {<a name="line.11878"></a>
<span class="sourceLineNo">11879</span> db = db.getRealView();<a name="line.11879"></a>
<span class="sourceLineNo">11880</span> change = true;<a name="line.11880"></a>
<span class="sourceLineNo">11881</span> }<a name="line.11881"></a>
<span class="sourceLineNo">11882</span> if (change) {<a name="line.11882"></a>
<span class="sourceLineNo">11883</span> it = BroadcastIterator.createIterator(da, db, result, true);<a name="line.11883"></a>
<span class="sourceLineNo">11884</span> }<a name="line.11884"></a>
<span class="sourceLineNo">11885</span> }<a name="line.11885"></a>
<span class="sourceLineNo">11886</span> final int is = result.getElementsPerItem();<a name="line.11886"></a>
<span class="sourceLineNo">11887</span> final int as = da.getElementsPerItem();<a name="line.11887"></a>
<span class="sourceLineNo">11888</span> final int bs = db.getElementsPerItem();<a name="line.11888"></a>
<span class="sourceLineNo">11889</span> final int dt = result.getDType();<a name="line.11889"></a>
<span class="sourceLineNo">11890</span><a name="line.11890"></a>
<span class="sourceLineNo">11891</span> switch(dt) {<a name="line.11891"></a>
<span class="sourceLineNo">11892</span> case Dataset.INT8:<a name="line.11892"></a>
<span class="sourceLineNo">11893</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.11893"></a>
<span class="sourceLineNo">11894</span> if (it.isOutputDouble()) {<a name="line.11894"></a>
<span class="sourceLineNo">11895</span> while (it.hasNext()) {<a name="line.11895"></a>
<span class="sourceLineNo">11896</span> final double iax = it.aDouble;<a name="line.11896"></a>
<span class="sourceLineNo">11897</span> final double ibx = it.bDouble;<a name="line.11897"></a>
<span class="sourceLineNo">11898</span> byte ox;<a name="line.11898"></a>
<span class="sourceLineNo">11899</span> ox = (byte) toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.11899"></a>
<span class="sourceLineNo">11900</span> oi8data[it.oIndex] = ox;<a name="line.11900"></a>
<span class="sourceLineNo">11901</span> }<a name="line.11901"></a>
<span class="sourceLineNo">11902</span> } else {<a name="line.11902"></a>
<span class="sourceLineNo">11903</span> while (it.hasNext()) {<a name="line.11903"></a>
<span class="sourceLineNo">11904</span> final long iax = it.aLong;<a name="line.11904"></a>
<span class="sourceLineNo">11905</span> final long ibx = it.bLong;<a name="line.11905"></a>
<span class="sourceLineNo">11906</span> byte ox;<a name="line.11906"></a>
<span class="sourceLineNo">11907</span> ox = (byte) (ibx == 0 ? 0 : iax % ibx);<a name="line.11907"></a>
<span class="sourceLineNo">11908</span> oi8data[it.oIndex] = ox;<a name="line.11908"></a>
<span class="sourceLineNo">11909</span> }<a name="line.11909"></a>
<span class="sourceLineNo">11910</span> }<a name="line.11910"></a>
<span class="sourceLineNo">11911</span> break;<a name="line.11911"></a>
<span class="sourceLineNo">11912</span> case Dataset.INT16:<a name="line.11912"></a>
<span class="sourceLineNo">11913</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.11913"></a>
<span class="sourceLineNo">11914</span> if (it.isOutputDouble()) {<a name="line.11914"></a>
<span class="sourceLineNo">11915</span> while (it.hasNext()) {<a name="line.11915"></a>
<span class="sourceLineNo">11916</span> final double iax = it.aDouble;<a name="line.11916"></a>
<span class="sourceLineNo">11917</span> final double ibx = it.bDouble;<a name="line.11917"></a>
<span class="sourceLineNo">11918</span> short ox;<a name="line.11918"></a>
<span class="sourceLineNo">11919</span> ox = (short) toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.11919"></a>
<span class="sourceLineNo">11920</span> oi16data[it.oIndex] = ox;<a name="line.11920"></a>
<span class="sourceLineNo">11921</span> }<a name="line.11921"></a>
<span class="sourceLineNo">11922</span> } else {<a name="line.11922"></a>
<span class="sourceLineNo">11923</span> while (it.hasNext()) {<a name="line.11923"></a>
<span class="sourceLineNo">11924</span> final long iax = it.aLong;<a name="line.11924"></a>
<span class="sourceLineNo">11925</span> final long ibx = it.bLong;<a name="line.11925"></a>
<span class="sourceLineNo">11926</span> short ox;<a name="line.11926"></a>
<span class="sourceLineNo">11927</span> ox = (short) (ibx == 0 ? 0 : iax % ibx);<a name="line.11927"></a>
<span class="sourceLineNo">11928</span> oi16data[it.oIndex] = ox;<a name="line.11928"></a>
<span class="sourceLineNo">11929</span> }<a name="line.11929"></a>
<span class="sourceLineNo">11930</span> }<a name="line.11930"></a>
<span class="sourceLineNo">11931</span> break;<a name="line.11931"></a>
<span class="sourceLineNo">11932</span> case Dataset.INT64:<a name="line.11932"></a>
<span class="sourceLineNo">11933</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.11933"></a>
<span class="sourceLineNo">11934</span> if (it.isOutputDouble()) {<a name="line.11934"></a>
<span class="sourceLineNo">11935</span> while (it.hasNext()) {<a name="line.11935"></a>
<span class="sourceLineNo">11936</span> final double iax = it.aDouble;<a name="line.11936"></a>
<span class="sourceLineNo">11937</span> final double ibx = it.bDouble;<a name="line.11937"></a>
<span class="sourceLineNo">11938</span> long ox;<a name="line.11938"></a>
<span class="sourceLineNo">11939</span> ox = toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.11939"></a>
<span class="sourceLineNo">11940</span> oi64data[it.oIndex] = ox;<a name="line.11940"></a>
<span class="sourceLineNo">11941</span> }<a name="line.11941"></a>
<span class="sourceLineNo">11942</span> } else {<a name="line.11942"></a>
<span class="sourceLineNo">11943</span> while (it.hasNext()) {<a name="line.11943"></a>
<span class="sourceLineNo">11944</span> final long iax = it.aLong;<a name="line.11944"></a>
<span class="sourceLineNo">11945</span> final long ibx = it.bLong;<a name="line.11945"></a>
<span class="sourceLineNo">11946</span> long ox;<a name="line.11946"></a>
<span class="sourceLineNo">11947</span> ox = (ibx == 0 ? 0 : iax % ibx);<a name="line.11947"></a>
<span class="sourceLineNo">11948</span> oi64data[it.oIndex] = ox;<a name="line.11948"></a>
<span class="sourceLineNo">11949</span> }<a name="line.11949"></a>
<span class="sourceLineNo">11950</span> }<a name="line.11950"></a>
<span class="sourceLineNo">11951</span> break;<a name="line.11951"></a>
<span class="sourceLineNo">11952</span> case Dataset.INT32:<a name="line.11952"></a>
<span class="sourceLineNo">11953</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.11953"></a>
<span class="sourceLineNo">11954</span> if (it.isOutputDouble()) {<a name="line.11954"></a>
<span class="sourceLineNo">11955</span> while (it.hasNext()) {<a name="line.11955"></a>
<span class="sourceLineNo">11956</span> final double iax = it.aDouble;<a name="line.11956"></a>
<span class="sourceLineNo">11957</span> final double ibx = it.bDouble;<a name="line.11957"></a>
<span class="sourceLineNo">11958</span> int ox;<a name="line.11958"></a>
<span class="sourceLineNo">11959</span> ox = (int) toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.11959"></a>
<span class="sourceLineNo">11960</span> oi32data[it.oIndex] = ox;<a name="line.11960"></a>
<span class="sourceLineNo">11961</span> }<a name="line.11961"></a>
<span class="sourceLineNo">11962</span> } else {<a name="line.11962"></a>
<span class="sourceLineNo">11963</span> while (it.hasNext()) {<a name="line.11963"></a>
<span class="sourceLineNo">11964</span> final long iax = it.aLong;<a name="line.11964"></a>
<span class="sourceLineNo">11965</span> final long ibx = it.bLong;<a name="line.11965"></a>
<span class="sourceLineNo">11966</span> int ox;<a name="line.11966"></a>
<span class="sourceLineNo">11967</span> ox = (int) (ibx == 0 ? 0 : iax % ibx);<a name="line.11967"></a>
<span class="sourceLineNo">11968</span> oi32data[it.oIndex] = ox;<a name="line.11968"></a>
<span class="sourceLineNo">11969</span> }<a name="line.11969"></a>
<span class="sourceLineNo">11970</span> }<a name="line.11970"></a>
<span class="sourceLineNo">11971</span> break;<a name="line.11971"></a>
<span class="sourceLineNo">11972</span> case Dataset.ARRAYINT8:<a name="line.11972"></a>
<span class="sourceLineNo">11973</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.11973"></a>
<span class="sourceLineNo">11974</span> if (is == 1) {<a name="line.11974"></a>
<span class="sourceLineNo">11975</span> if (it.isOutputDouble()) {<a name="line.11975"></a>
<span class="sourceLineNo">11976</span> while (it.hasNext()) {<a name="line.11976"></a>
<span class="sourceLineNo">11977</span> final double iax = it.aDouble;<a name="line.11977"></a>
<span class="sourceLineNo">11978</span> final double ibx = it.bDouble;<a name="line.11978"></a>
<span class="sourceLineNo">11979</span> byte ox;<a name="line.11979"></a>
<span class="sourceLineNo">11980</span> ox = (byte) toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.11980"></a>
<span class="sourceLineNo">11981</span> oai8data[it.oIndex] = ox;<a name="line.11981"></a>
<span class="sourceLineNo">11982</span> }<a name="line.11982"></a>
<span class="sourceLineNo">11983</span> } else {<a name="line.11983"></a>
<span class="sourceLineNo">11984</span> while (it.hasNext()) {<a name="line.11984"></a>
<span class="sourceLineNo">11985</span> final long iax = it.aLong;<a name="line.11985"></a>
<span class="sourceLineNo">11986</span> final long ibx = it.bLong;<a name="line.11986"></a>
<span class="sourceLineNo">11987</span> byte ox;<a name="line.11987"></a>
<span class="sourceLineNo">11988</span> ox = (byte) (ibx == 0 ? 0 : iax % ibx);<a name="line.11988"></a>
<span class="sourceLineNo">11989</span> oai8data[it.oIndex] = ox;<a name="line.11989"></a>
<span class="sourceLineNo">11990</span> }<a name="line.11990"></a>
<span class="sourceLineNo">11991</span> }<a name="line.11991"></a>
<span class="sourceLineNo">11992</span> } else if (as &lt; bs) {<a name="line.11992"></a>
<span class="sourceLineNo">11993</span> if (it.isOutputDouble()) {<a name="line.11993"></a>
<span class="sourceLineNo">11994</span> while (it.hasNext()) {<a name="line.11994"></a>
<span class="sourceLineNo">11995</span> final double iax = it.aDouble;<a name="line.11995"></a>
<span class="sourceLineNo">11996</span> double ibx = it.bDouble;<a name="line.11996"></a>
<span class="sourceLineNo">11997</span> byte ox;<a name="line.11997"></a>
<span class="sourceLineNo">11998</span> ox = (byte) toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.11998"></a>
<span class="sourceLineNo">11999</span> oai8data[it.oIndex] = ox;<a name="line.11999"></a>
<span class="sourceLineNo">12000</span> for (int j = 1; j &lt; is; j++) {<a name="line.12000"></a>
<span class="sourceLineNo">12001</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.12001"></a>
<span class="sourceLineNo">12002</span> ox = (byte) toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.12002"></a>
<span class="sourceLineNo">12003</span> oai8data[it.oIndex + j] = ox;<a name="line.12003"></a>
<span class="sourceLineNo">12004</span> }<a name="line.12004"></a>
<span class="sourceLineNo">12005</span> }<a name="line.12005"></a>
<span class="sourceLineNo">12006</span> } else {<a name="line.12006"></a>
<span class="sourceLineNo">12007</span> while (it.hasNext()) {<a name="line.12007"></a>
<span class="sourceLineNo">12008</span> final long iax = it.aLong;<a name="line.12008"></a>
<span class="sourceLineNo">12009</span> long ibx = it.bLong;<a name="line.12009"></a>
<span class="sourceLineNo">12010</span> byte ox;<a name="line.12010"></a>
<span class="sourceLineNo">12011</span> ox = (byte) (ibx == 0 ? 0 : iax % ibx);<a name="line.12011"></a>
<span class="sourceLineNo">12012</span> oai8data[it.oIndex] = ox;<a name="line.12012"></a>
<span class="sourceLineNo">12013</span> for (int j = 1; j &lt; is; j++) {<a name="line.12013"></a>
<span class="sourceLineNo">12014</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.12014"></a>
<span class="sourceLineNo">12015</span> ox = (byte) (ibx == 0 ? 0 : iax % ibx);<a name="line.12015"></a>
<span class="sourceLineNo">12016</span> oai8data[it.oIndex + j] = ox;<a name="line.12016"></a>
<span class="sourceLineNo">12017</span> }<a name="line.12017"></a>
<span class="sourceLineNo">12018</span> }<a name="line.12018"></a>
<span class="sourceLineNo">12019</span> }<a name="line.12019"></a>
<span class="sourceLineNo">12020</span> } else if (as &gt; bs) {<a name="line.12020"></a>
<span class="sourceLineNo">12021</span> if (it.isOutputDouble()) {<a name="line.12021"></a>
<span class="sourceLineNo">12022</span> while (it.hasNext()) {<a name="line.12022"></a>
<span class="sourceLineNo">12023</span> double iax = it.aDouble;<a name="line.12023"></a>
<span class="sourceLineNo">12024</span> final double ibx = it.bDouble;<a name="line.12024"></a>
<span class="sourceLineNo">12025</span> byte ox;<a name="line.12025"></a>
<span class="sourceLineNo">12026</span> ox = (byte) toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.12026"></a>
<span class="sourceLineNo">12027</span> oai8data[it.oIndex] = ox;<a name="line.12027"></a>
<span class="sourceLineNo">12028</span> for (int j = 1; j &lt; is; j++) {<a name="line.12028"></a>
<span class="sourceLineNo">12029</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.12029"></a>
<span class="sourceLineNo">12030</span> ox = (byte) toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.12030"></a>
<span class="sourceLineNo">12031</span> oai8data[it.oIndex + j] = ox;<a name="line.12031"></a>
<span class="sourceLineNo">12032</span> }<a name="line.12032"></a>
<span class="sourceLineNo">12033</span> }<a name="line.12033"></a>
<span class="sourceLineNo">12034</span> } else {<a name="line.12034"></a>
<span class="sourceLineNo">12035</span> while (it.hasNext()) {<a name="line.12035"></a>
<span class="sourceLineNo">12036</span> long iax = it.aLong;<a name="line.12036"></a>
<span class="sourceLineNo">12037</span> final long ibx = it.bLong;<a name="line.12037"></a>
<span class="sourceLineNo">12038</span> byte ox;<a name="line.12038"></a>
<span class="sourceLineNo">12039</span> ox = (byte) (ibx == 0 ? 0 : iax % ibx);<a name="line.12039"></a>
<span class="sourceLineNo">12040</span> oai8data[it.oIndex] = ox;<a name="line.12040"></a>
<span class="sourceLineNo">12041</span> for (int j = 1; j &lt; is; j++) {<a name="line.12041"></a>
<span class="sourceLineNo">12042</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.12042"></a>
<span class="sourceLineNo">12043</span> ox = (byte) (ibx == 0 ? 0 : iax % ibx);<a name="line.12043"></a>
<span class="sourceLineNo">12044</span> oai8data[it.oIndex + j] = ox;<a name="line.12044"></a>
<span class="sourceLineNo">12045</span> }<a name="line.12045"></a>
<span class="sourceLineNo">12046</span> }<a name="line.12046"></a>
<span class="sourceLineNo">12047</span> }<a name="line.12047"></a>
<span class="sourceLineNo">12048</span> } else if (as == 1) {<a name="line.12048"></a>
<span class="sourceLineNo">12049</span> if (it.isOutputDouble()) {<a name="line.12049"></a>
<span class="sourceLineNo">12050</span> while (it.hasNext()) {<a name="line.12050"></a>
<span class="sourceLineNo">12051</span> final double iax = it.aDouble;<a name="line.12051"></a>
<span class="sourceLineNo">12052</span> final double ibx = it.bDouble;<a name="line.12052"></a>
<span class="sourceLineNo">12053</span> byte ox;<a name="line.12053"></a>
<span class="sourceLineNo">12054</span> ox = (byte) toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.12054"></a>
<span class="sourceLineNo">12055</span> for (int j = 0; j &lt; is; j++) {<a name="line.12055"></a>
<span class="sourceLineNo">12056</span> oai8data[it.oIndex + j] = ox;<a name="line.12056"></a>
<span class="sourceLineNo">12057</span> }<a name="line.12057"></a>
<span class="sourceLineNo">12058</span> }<a name="line.12058"></a>
<span class="sourceLineNo">12059</span> } else {<a name="line.12059"></a>
<span class="sourceLineNo">12060</span> while (it.hasNext()) {<a name="line.12060"></a>
<span class="sourceLineNo">12061</span> final long iax = it.aLong;<a name="line.12061"></a>
<span class="sourceLineNo">12062</span> final long ibx = it.bLong;<a name="line.12062"></a>
<span class="sourceLineNo">12063</span> byte ox;<a name="line.12063"></a>
<span class="sourceLineNo">12064</span> ox = (byte) (ibx == 0 ? 0 : iax % ibx);<a name="line.12064"></a>
<span class="sourceLineNo">12065</span> for (int j = 0; j &lt; is; j++) {<a name="line.12065"></a>
<span class="sourceLineNo">12066</span> oai8data[it.oIndex + j] = ox;<a name="line.12066"></a>
<span class="sourceLineNo">12067</span> }<a name="line.12067"></a>
<span class="sourceLineNo">12068</span> }<a name="line.12068"></a>
<span class="sourceLineNo">12069</span> }<a name="line.12069"></a>
<span class="sourceLineNo">12070</span> } else {<a name="line.12070"></a>
<span class="sourceLineNo">12071</span> if (it.isOutputDouble()) {<a name="line.12071"></a>
<span class="sourceLineNo">12072</span> while (it.hasNext()) {<a name="line.12072"></a>
<span class="sourceLineNo">12073</span> double iax = it.aDouble;<a name="line.12073"></a>
<span class="sourceLineNo">12074</span> double ibx = it.bDouble;<a name="line.12074"></a>
<span class="sourceLineNo">12075</span> byte ox;<a name="line.12075"></a>
<span class="sourceLineNo">12076</span> ox = (byte) toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.12076"></a>
<span class="sourceLineNo">12077</span> oai8data[it.oIndex] = ox;<a name="line.12077"></a>
<span class="sourceLineNo">12078</span> for (int j = 1; j &lt; is; j++) {<a name="line.12078"></a>
<span class="sourceLineNo">12079</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.12079"></a>
<span class="sourceLineNo">12080</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.12080"></a>
<span class="sourceLineNo">12081</span> ox = (byte) toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.12081"></a>
<span class="sourceLineNo">12082</span> oai8data[it.oIndex + j] = ox;<a name="line.12082"></a>
<span class="sourceLineNo">12083</span> }<a name="line.12083"></a>
<span class="sourceLineNo">12084</span> }<a name="line.12084"></a>
<span class="sourceLineNo">12085</span> } else {<a name="line.12085"></a>
<span class="sourceLineNo">12086</span> while (it.hasNext()) {<a name="line.12086"></a>
<span class="sourceLineNo">12087</span> long iax = it.aLong;<a name="line.12087"></a>
<span class="sourceLineNo">12088</span> long ibx = it.bLong;<a name="line.12088"></a>
<span class="sourceLineNo">12089</span> byte ox;<a name="line.12089"></a>
<span class="sourceLineNo">12090</span> ox = (byte) (ibx == 0 ? 0 : iax % ibx);<a name="line.12090"></a>
<span class="sourceLineNo">12091</span> oai8data[it.oIndex] = ox;<a name="line.12091"></a>
<span class="sourceLineNo">12092</span> for (int j = 1; j &lt; is; j++) {<a name="line.12092"></a>
<span class="sourceLineNo">12093</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.12093"></a>
<span class="sourceLineNo">12094</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.12094"></a>
<span class="sourceLineNo">12095</span> ox = (byte) (ibx == 0 ? 0 : iax % ibx);<a name="line.12095"></a>
<span class="sourceLineNo">12096</span> oai8data[it.oIndex + j] = ox;<a name="line.12096"></a>
<span class="sourceLineNo">12097</span> }<a name="line.12097"></a>
<span class="sourceLineNo">12098</span> }<a name="line.12098"></a>
<span class="sourceLineNo">12099</span> }<a name="line.12099"></a>
<span class="sourceLineNo">12100</span> }<a name="line.12100"></a>
<span class="sourceLineNo">12101</span> break;<a name="line.12101"></a>
<span class="sourceLineNo">12102</span> case Dataset.ARRAYINT16:<a name="line.12102"></a>
<span class="sourceLineNo">12103</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.12103"></a>
<span class="sourceLineNo">12104</span> if (is == 1) {<a name="line.12104"></a>
<span class="sourceLineNo">12105</span> if (it.isOutputDouble()) {<a name="line.12105"></a>
<span class="sourceLineNo">12106</span> while (it.hasNext()) {<a name="line.12106"></a>
<span class="sourceLineNo">12107</span> final double iax = it.aDouble;<a name="line.12107"></a>
<span class="sourceLineNo">12108</span> final double ibx = it.bDouble;<a name="line.12108"></a>
<span class="sourceLineNo">12109</span> short ox;<a name="line.12109"></a>
<span class="sourceLineNo">12110</span> ox = (short) toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.12110"></a>
<span class="sourceLineNo">12111</span> oai16data[it.oIndex] = ox;<a name="line.12111"></a>
<span class="sourceLineNo">12112</span> }<a name="line.12112"></a>
<span class="sourceLineNo">12113</span> } else {<a name="line.12113"></a>
<span class="sourceLineNo">12114</span> while (it.hasNext()) {<a name="line.12114"></a>
<span class="sourceLineNo">12115</span> final long iax = it.aLong;<a name="line.12115"></a>
<span class="sourceLineNo">12116</span> final long ibx = it.bLong;<a name="line.12116"></a>
<span class="sourceLineNo">12117</span> short ox;<a name="line.12117"></a>
<span class="sourceLineNo">12118</span> ox = (short) (ibx == 0 ? 0 : iax % ibx);<a name="line.12118"></a>
<span class="sourceLineNo">12119</span> oai16data[it.oIndex] = ox;<a name="line.12119"></a>
<span class="sourceLineNo">12120</span> }<a name="line.12120"></a>
<span class="sourceLineNo">12121</span> }<a name="line.12121"></a>
<span class="sourceLineNo">12122</span> } else if (as &lt; bs) {<a name="line.12122"></a>
<span class="sourceLineNo">12123</span> if (it.isOutputDouble()) {<a name="line.12123"></a>
<span class="sourceLineNo">12124</span> while (it.hasNext()) {<a name="line.12124"></a>
<span class="sourceLineNo">12125</span> final double iax = it.aDouble;<a name="line.12125"></a>
<span class="sourceLineNo">12126</span> double ibx = it.bDouble;<a name="line.12126"></a>
<span class="sourceLineNo">12127</span> short ox;<a name="line.12127"></a>
<span class="sourceLineNo">12128</span> ox = (short) toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.12128"></a>
<span class="sourceLineNo">12129</span> oai16data[it.oIndex] = ox;<a name="line.12129"></a>
<span class="sourceLineNo">12130</span> for (int j = 1; j &lt; is; j++) {<a name="line.12130"></a>
<span class="sourceLineNo">12131</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.12131"></a>
<span class="sourceLineNo">12132</span> ox = (short) toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.12132"></a>
<span class="sourceLineNo">12133</span> oai16data[it.oIndex + j] = ox;<a name="line.12133"></a>
<span class="sourceLineNo">12134</span> }<a name="line.12134"></a>
<span class="sourceLineNo">12135</span> }<a name="line.12135"></a>
<span class="sourceLineNo">12136</span> } else {<a name="line.12136"></a>
<span class="sourceLineNo">12137</span> while (it.hasNext()) {<a name="line.12137"></a>
<span class="sourceLineNo">12138</span> final long iax = it.aLong;<a name="line.12138"></a>
<span class="sourceLineNo">12139</span> long ibx = it.bLong;<a name="line.12139"></a>
<span class="sourceLineNo">12140</span> short ox;<a name="line.12140"></a>
<span class="sourceLineNo">12141</span> ox = (short) (ibx == 0 ? 0 : iax % ibx);<a name="line.12141"></a>
<span class="sourceLineNo">12142</span> oai16data[it.oIndex] = ox;<a name="line.12142"></a>
<span class="sourceLineNo">12143</span> for (int j = 1; j &lt; is; j++) {<a name="line.12143"></a>
<span class="sourceLineNo">12144</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.12144"></a>
<span class="sourceLineNo">12145</span> ox = (short) (ibx == 0 ? 0 : iax % ibx);<a name="line.12145"></a>
<span class="sourceLineNo">12146</span> oai16data[it.oIndex + j] = ox;<a name="line.12146"></a>
<span class="sourceLineNo">12147</span> }<a name="line.12147"></a>
<span class="sourceLineNo">12148</span> }<a name="line.12148"></a>
<span class="sourceLineNo">12149</span> }<a name="line.12149"></a>
<span class="sourceLineNo">12150</span> } else if (as &gt; bs) {<a name="line.12150"></a>
<span class="sourceLineNo">12151</span> if (it.isOutputDouble()) {<a name="line.12151"></a>
<span class="sourceLineNo">12152</span> while (it.hasNext()) {<a name="line.12152"></a>
<span class="sourceLineNo">12153</span> double iax = it.aDouble;<a name="line.12153"></a>
<span class="sourceLineNo">12154</span> final double ibx = it.bDouble;<a name="line.12154"></a>
<span class="sourceLineNo">12155</span> short ox;<a name="line.12155"></a>
<span class="sourceLineNo">12156</span> ox = (short) toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.12156"></a>
<span class="sourceLineNo">12157</span> oai16data[it.oIndex] = ox;<a name="line.12157"></a>
<span class="sourceLineNo">12158</span> for (int j = 1; j &lt; is; j++) {<a name="line.12158"></a>
<span class="sourceLineNo">12159</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.12159"></a>
<span class="sourceLineNo">12160</span> ox = (short) toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.12160"></a>
<span class="sourceLineNo">12161</span> oai16data[it.oIndex + j] = ox;<a name="line.12161"></a>
<span class="sourceLineNo">12162</span> }<a name="line.12162"></a>
<span class="sourceLineNo">12163</span> }<a name="line.12163"></a>
<span class="sourceLineNo">12164</span> } else {<a name="line.12164"></a>
<span class="sourceLineNo">12165</span> while (it.hasNext()) {<a name="line.12165"></a>
<span class="sourceLineNo">12166</span> long iax = it.aLong;<a name="line.12166"></a>
<span class="sourceLineNo">12167</span> final long ibx = it.bLong;<a name="line.12167"></a>
<span class="sourceLineNo">12168</span> short ox;<a name="line.12168"></a>
<span class="sourceLineNo">12169</span> ox = (short) (ibx == 0 ? 0 : iax % ibx);<a name="line.12169"></a>
<span class="sourceLineNo">12170</span> oai16data[it.oIndex] = ox;<a name="line.12170"></a>
<span class="sourceLineNo">12171</span> for (int j = 1; j &lt; is; j++) {<a name="line.12171"></a>
<span class="sourceLineNo">12172</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.12172"></a>
<span class="sourceLineNo">12173</span> ox = (short) (ibx == 0 ? 0 : iax % ibx);<a name="line.12173"></a>
<span class="sourceLineNo">12174</span> oai16data[it.oIndex + j] = ox;<a name="line.12174"></a>
<span class="sourceLineNo">12175</span> }<a name="line.12175"></a>
<span class="sourceLineNo">12176</span> }<a name="line.12176"></a>
<span class="sourceLineNo">12177</span> }<a name="line.12177"></a>
<span class="sourceLineNo">12178</span> } else if (as == 1) {<a name="line.12178"></a>
<span class="sourceLineNo">12179</span> if (it.isOutputDouble()) {<a name="line.12179"></a>
<span class="sourceLineNo">12180</span> while (it.hasNext()) {<a name="line.12180"></a>
<span class="sourceLineNo">12181</span> final double iax = it.aDouble;<a name="line.12181"></a>
<span class="sourceLineNo">12182</span> final double ibx = it.bDouble;<a name="line.12182"></a>
<span class="sourceLineNo">12183</span> short ox;<a name="line.12183"></a>
<span class="sourceLineNo">12184</span> ox = (short) toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.12184"></a>
<span class="sourceLineNo">12185</span> for (int j = 0; j &lt; is; j++) {<a name="line.12185"></a>
<span class="sourceLineNo">12186</span> oai16data[it.oIndex + j] = ox;<a name="line.12186"></a>
<span class="sourceLineNo">12187</span> }<a name="line.12187"></a>
<span class="sourceLineNo">12188</span> }<a name="line.12188"></a>
<span class="sourceLineNo">12189</span> } else {<a name="line.12189"></a>
<span class="sourceLineNo">12190</span> while (it.hasNext()) {<a name="line.12190"></a>
<span class="sourceLineNo">12191</span> final long iax = it.aLong;<a name="line.12191"></a>
<span class="sourceLineNo">12192</span> final long ibx = it.bLong;<a name="line.12192"></a>
<span class="sourceLineNo">12193</span> short ox;<a name="line.12193"></a>
<span class="sourceLineNo">12194</span> ox = (short) (ibx == 0 ? 0 : iax % ibx);<a name="line.12194"></a>
<span class="sourceLineNo">12195</span> for (int j = 0; j &lt; is; j++) {<a name="line.12195"></a>
<span class="sourceLineNo">12196</span> oai16data[it.oIndex + j] = ox;<a name="line.12196"></a>
<span class="sourceLineNo">12197</span> }<a name="line.12197"></a>
<span class="sourceLineNo">12198</span> }<a name="line.12198"></a>
<span class="sourceLineNo">12199</span> }<a name="line.12199"></a>
<span class="sourceLineNo">12200</span> } else {<a name="line.12200"></a>
<span class="sourceLineNo">12201</span> if (it.isOutputDouble()) {<a name="line.12201"></a>
<span class="sourceLineNo">12202</span> while (it.hasNext()) {<a name="line.12202"></a>
<span class="sourceLineNo">12203</span> double iax = it.aDouble;<a name="line.12203"></a>
<span class="sourceLineNo">12204</span> double ibx = it.bDouble;<a name="line.12204"></a>
<span class="sourceLineNo">12205</span> short ox;<a name="line.12205"></a>
<span class="sourceLineNo">12206</span> ox = (short) toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.12206"></a>
<span class="sourceLineNo">12207</span> oai16data[it.oIndex] = ox;<a name="line.12207"></a>
<span class="sourceLineNo">12208</span> for (int j = 1; j &lt; is; j++) {<a name="line.12208"></a>
<span class="sourceLineNo">12209</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.12209"></a>
<span class="sourceLineNo">12210</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.12210"></a>
<span class="sourceLineNo">12211</span> ox = (short) toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.12211"></a>
<span class="sourceLineNo">12212</span> oai16data[it.oIndex + j] = ox;<a name="line.12212"></a>
<span class="sourceLineNo">12213</span> }<a name="line.12213"></a>
<span class="sourceLineNo">12214</span> }<a name="line.12214"></a>
<span class="sourceLineNo">12215</span> } else {<a name="line.12215"></a>
<span class="sourceLineNo">12216</span> while (it.hasNext()) {<a name="line.12216"></a>
<span class="sourceLineNo">12217</span> long iax = it.aLong;<a name="line.12217"></a>
<span class="sourceLineNo">12218</span> long ibx = it.bLong;<a name="line.12218"></a>
<span class="sourceLineNo">12219</span> short ox;<a name="line.12219"></a>
<span class="sourceLineNo">12220</span> ox = (short) (ibx == 0 ? 0 : iax % ibx);<a name="line.12220"></a>
<span class="sourceLineNo">12221</span> oai16data[it.oIndex] = ox;<a name="line.12221"></a>
<span class="sourceLineNo">12222</span> for (int j = 1; j &lt; is; j++) {<a name="line.12222"></a>
<span class="sourceLineNo">12223</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.12223"></a>
<span class="sourceLineNo">12224</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.12224"></a>
<span class="sourceLineNo">12225</span> ox = (short) (ibx == 0 ? 0 : iax % ibx);<a name="line.12225"></a>
<span class="sourceLineNo">12226</span> oai16data[it.oIndex + j] = ox;<a name="line.12226"></a>
<span class="sourceLineNo">12227</span> }<a name="line.12227"></a>
<span class="sourceLineNo">12228</span> }<a name="line.12228"></a>
<span class="sourceLineNo">12229</span> }<a name="line.12229"></a>
<span class="sourceLineNo">12230</span> }<a name="line.12230"></a>
<span class="sourceLineNo">12231</span> break;<a name="line.12231"></a>
<span class="sourceLineNo">12232</span> case Dataset.ARRAYINT64:<a name="line.12232"></a>
<span class="sourceLineNo">12233</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.12233"></a>
<span class="sourceLineNo">12234</span> if (is == 1) {<a name="line.12234"></a>
<span class="sourceLineNo">12235</span> if (it.isOutputDouble()) {<a name="line.12235"></a>
<span class="sourceLineNo">12236</span> while (it.hasNext()) {<a name="line.12236"></a>
<span class="sourceLineNo">12237</span> final double iax = it.aDouble;<a name="line.12237"></a>
<span class="sourceLineNo">12238</span> final double ibx = it.bDouble;<a name="line.12238"></a>
<span class="sourceLineNo">12239</span> long ox;<a name="line.12239"></a>
<span class="sourceLineNo">12240</span> ox = toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.12240"></a>
<span class="sourceLineNo">12241</span> oai64data[it.oIndex] = ox;<a name="line.12241"></a>
<span class="sourceLineNo">12242</span> }<a name="line.12242"></a>
<span class="sourceLineNo">12243</span> } else {<a name="line.12243"></a>
<span class="sourceLineNo">12244</span> while (it.hasNext()) {<a name="line.12244"></a>
<span class="sourceLineNo">12245</span> final long iax = it.aLong;<a name="line.12245"></a>
<span class="sourceLineNo">12246</span> final long ibx = it.bLong;<a name="line.12246"></a>
<span class="sourceLineNo">12247</span> long ox;<a name="line.12247"></a>
<span class="sourceLineNo">12248</span> ox = (ibx == 0 ? 0 : iax % ibx);<a name="line.12248"></a>
<span class="sourceLineNo">12249</span> oai64data[it.oIndex] = ox;<a name="line.12249"></a>
<span class="sourceLineNo">12250</span> }<a name="line.12250"></a>
<span class="sourceLineNo">12251</span> }<a name="line.12251"></a>
<span class="sourceLineNo">12252</span> } else if (as &lt; bs) {<a name="line.12252"></a>
<span class="sourceLineNo">12253</span> if (it.isOutputDouble()) {<a name="line.12253"></a>
<span class="sourceLineNo">12254</span> while (it.hasNext()) {<a name="line.12254"></a>
<span class="sourceLineNo">12255</span> final double iax = it.aDouble;<a name="line.12255"></a>
<span class="sourceLineNo">12256</span> double ibx = it.bDouble;<a name="line.12256"></a>
<span class="sourceLineNo">12257</span> long ox;<a name="line.12257"></a>
<span class="sourceLineNo">12258</span> ox = toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.12258"></a>
<span class="sourceLineNo">12259</span> oai64data[it.oIndex] = ox;<a name="line.12259"></a>
<span class="sourceLineNo">12260</span> for (int j = 1; j &lt; is; j++) {<a name="line.12260"></a>
<span class="sourceLineNo">12261</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.12261"></a>
<span class="sourceLineNo">12262</span> ox = toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.12262"></a>
<span class="sourceLineNo">12263</span> oai64data[it.oIndex + j] = ox;<a name="line.12263"></a>
<span class="sourceLineNo">12264</span> }<a name="line.12264"></a>
<span class="sourceLineNo">12265</span> }<a name="line.12265"></a>
<span class="sourceLineNo">12266</span> } else {<a name="line.12266"></a>
<span class="sourceLineNo">12267</span> while (it.hasNext()) {<a name="line.12267"></a>
<span class="sourceLineNo">12268</span> final long iax = it.aLong;<a name="line.12268"></a>
<span class="sourceLineNo">12269</span> long ibx = it.bLong;<a name="line.12269"></a>
<span class="sourceLineNo">12270</span> long ox;<a name="line.12270"></a>
<span class="sourceLineNo">12271</span> ox = (ibx == 0 ? 0 : iax % ibx);<a name="line.12271"></a>
<span class="sourceLineNo">12272</span> oai64data[it.oIndex] = ox;<a name="line.12272"></a>
<span class="sourceLineNo">12273</span> for (int j = 1; j &lt; is; j++) {<a name="line.12273"></a>
<span class="sourceLineNo">12274</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.12274"></a>
<span class="sourceLineNo">12275</span> ox = (ibx == 0 ? 0 : iax % ibx);<a name="line.12275"></a>
<span class="sourceLineNo">12276</span> oai64data[it.oIndex + j] = ox;<a name="line.12276"></a>
<span class="sourceLineNo">12277</span> }<a name="line.12277"></a>
<span class="sourceLineNo">12278</span> }<a name="line.12278"></a>
<span class="sourceLineNo">12279</span> }<a name="line.12279"></a>
<span class="sourceLineNo">12280</span> } else if (as &gt; bs) {<a name="line.12280"></a>
<span class="sourceLineNo">12281</span> if (it.isOutputDouble()) {<a name="line.12281"></a>
<span class="sourceLineNo">12282</span> while (it.hasNext()) {<a name="line.12282"></a>
<span class="sourceLineNo">12283</span> double iax = it.aDouble;<a name="line.12283"></a>
<span class="sourceLineNo">12284</span> final double ibx = it.bDouble;<a name="line.12284"></a>
<span class="sourceLineNo">12285</span> long ox;<a name="line.12285"></a>
<span class="sourceLineNo">12286</span> ox = toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.12286"></a>
<span class="sourceLineNo">12287</span> oai64data[it.oIndex] = ox;<a name="line.12287"></a>
<span class="sourceLineNo">12288</span> for (int j = 1; j &lt; is; j++) {<a name="line.12288"></a>
<span class="sourceLineNo">12289</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.12289"></a>
<span class="sourceLineNo">12290</span> ox = toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.12290"></a>
<span class="sourceLineNo">12291</span> oai64data[it.oIndex + j] = ox;<a name="line.12291"></a>
<span class="sourceLineNo">12292</span> }<a name="line.12292"></a>
<span class="sourceLineNo">12293</span> }<a name="line.12293"></a>
<span class="sourceLineNo">12294</span> } else {<a name="line.12294"></a>
<span class="sourceLineNo">12295</span> while (it.hasNext()) {<a name="line.12295"></a>
<span class="sourceLineNo">12296</span> long iax = it.aLong;<a name="line.12296"></a>
<span class="sourceLineNo">12297</span> final long ibx = it.bLong;<a name="line.12297"></a>
<span class="sourceLineNo">12298</span> long ox;<a name="line.12298"></a>
<span class="sourceLineNo">12299</span> ox = (ibx == 0 ? 0 : iax % ibx);<a name="line.12299"></a>
<span class="sourceLineNo">12300</span> oai64data[it.oIndex] = ox;<a name="line.12300"></a>
<span class="sourceLineNo">12301</span> for (int j = 1; j &lt; is; j++) {<a name="line.12301"></a>
<span class="sourceLineNo">12302</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.12302"></a>
<span class="sourceLineNo">12303</span> ox = (ibx == 0 ? 0 : iax % ibx);<a name="line.12303"></a>
<span class="sourceLineNo">12304</span> oai64data[it.oIndex + j] = ox;<a name="line.12304"></a>
<span class="sourceLineNo">12305</span> }<a name="line.12305"></a>
<span class="sourceLineNo">12306</span> }<a name="line.12306"></a>
<span class="sourceLineNo">12307</span> }<a name="line.12307"></a>
<span class="sourceLineNo">12308</span> } else if (as == 1) {<a name="line.12308"></a>
<span class="sourceLineNo">12309</span> if (it.isOutputDouble()) {<a name="line.12309"></a>
<span class="sourceLineNo">12310</span> while (it.hasNext()) {<a name="line.12310"></a>
<span class="sourceLineNo">12311</span> final double iax = it.aDouble;<a name="line.12311"></a>
<span class="sourceLineNo">12312</span> final double ibx = it.bDouble;<a name="line.12312"></a>
<span class="sourceLineNo">12313</span> long ox;<a name="line.12313"></a>
<span class="sourceLineNo">12314</span> ox = toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.12314"></a>
<span class="sourceLineNo">12315</span> for (int j = 0; j &lt; is; j++) {<a name="line.12315"></a>
<span class="sourceLineNo">12316</span> oai64data[it.oIndex + j] = ox;<a name="line.12316"></a>
<span class="sourceLineNo">12317</span> }<a name="line.12317"></a>
<span class="sourceLineNo">12318</span> }<a name="line.12318"></a>
<span class="sourceLineNo">12319</span> } else {<a name="line.12319"></a>
<span class="sourceLineNo">12320</span> while (it.hasNext()) {<a name="line.12320"></a>
<span class="sourceLineNo">12321</span> final long iax = it.aLong;<a name="line.12321"></a>
<span class="sourceLineNo">12322</span> final long ibx = it.bLong;<a name="line.12322"></a>
<span class="sourceLineNo">12323</span> long ox;<a name="line.12323"></a>
<span class="sourceLineNo">12324</span> ox = (ibx == 0 ? 0 : iax % ibx);<a name="line.12324"></a>
<span class="sourceLineNo">12325</span> for (int j = 0; j &lt; is; j++) {<a name="line.12325"></a>
<span class="sourceLineNo">12326</span> oai64data[it.oIndex + j] = ox;<a name="line.12326"></a>
<span class="sourceLineNo">12327</span> }<a name="line.12327"></a>
<span class="sourceLineNo">12328</span> }<a name="line.12328"></a>
<span class="sourceLineNo">12329</span> }<a name="line.12329"></a>
<span class="sourceLineNo">12330</span> } else {<a name="line.12330"></a>
<span class="sourceLineNo">12331</span> if (it.isOutputDouble()) {<a name="line.12331"></a>
<span class="sourceLineNo">12332</span> while (it.hasNext()) {<a name="line.12332"></a>
<span class="sourceLineNo">12333</span> double iax = it.aDouble;<a name="line.12333"></a>
<span class="sourceLineNo">12334</span> double ibx = it.bDouble;<a name="line.12334"></a>
<span class="sourceLineNo">12335</span> long ox;<a name="line.12335"></a>
<span class="sourceLineNo">12336</span> ox = toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.12336"></a>
<span class="sourceLineNo">12337</span> oai64data[it.oIndex] = ox;<a name="line.12337"></a>
<span class="sourceLineNo">12338</span> for (int j = 1; j &lt; is; j++) {<a name="line.12338"></a>
<span class="sourceLineNo">12339</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.12339"></a>
<span class="sourceLineNo">12340</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.12340"></a>
<span class="sourceLineNo">12341</span> ox = toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.12341"></a>
<span class="sourceLineNo">12342</span> oai64data[it.oIndex + j] = ox;<a name="line.12342"></a>
<span class="sourceLineNo">12343</span> }<a name="line.12343"></a>
<span class="sourceLineNo">12344</span> }<a name="line.12344"></a>
<span class="sourceLineNo">12345</span> } else {<a name="line.12345"></a>
<span class="sourceLineNo">12346</span> while (it.hasNext()) {<a name="line.12346"></a>
<span class="sourceLineNo">12347</span> long iax = it.aLong;<a name="line.12347"></a>
<span class="sourceLineNo">12348</span> long ibx = it.bLong;<a name="line.12348"></a>
<span class="sourceLineNo">12349</span> long ox;<a name="line.12349"></a>
<span class="sourceLineNo">12350</span> ox = (ibx == 0 ? 0 : iax % ibx);<a name="line.12350"></a>
<span class="sourceLineNo">12351</span> oai64data[it.oIndex] = ox;<a name="line.12351"></a>
<span class="sourceLineNo">12352</span> for (int j = 1; j &lt; is; j++) {<a name="line.12352"></a>
<span class="sourceLineNo">12353</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.12353"></a>
<span class="sourceLineNo">12354</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.12354"></a>
<span class="sourceLineNo">12355</span> ox = (ibx == 0 ? 0 : iax % ibx);<a name="line.12355"></a>
<span class="sourceLineNo">12356</span> oai64data[it.oIndex + j] = ox;<a name="line.12356"></a>
<span class="sourceLineNo">12357</span> }<a name="line.12357"></a>
<span class="sourceLineNo">12358</span> }<a name="line.12358"></a>
<span class="sourceLineNo">12359</span> }<a name="line.12359"></a>
<span class="sourceLineNo">12360</span> }<a name="line.12360"></a>
<span class="sourceLineNo">12361</span> break;<a name="line.12361"></a>
<span class="sourceLineNo">12362</span> case Dataset.ARRAYINT32:<a name="line.12362"></a>
<span class="sourceLineNo">12363</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.12363"></a>
<span class="sourceLineNo">12364</span> if (is == 1) {<a name="line.12364"></a>
<span class="sourceLineNo">12365</span> if (it.isOutputDouble()) {<a name="line.12365"></a>
<span class="sourceLineNo">12366</span> while (it.hasNext()) {<a name="line.12366"></a>
<span class="sourceLineNo">12367</span> final double iax = it.aDouble;<a name="line.12367"></a>
<span class="sourceLineNo">12368</span> final double ibx = it.bDouble;<a name="line.12368"></a>
<span class="sourceLineNo">12369</span> int ox;<a name="line.12369"></a>
<span class="sourceLineNo">12370</span> ox = (int) toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.12370"></a>
<span class="sourceLineNo">12371</span> oai32data[it.oIndex] = ox;<a name="line.12371"></a>
<span class="sourceLineNo">12372</span> }<a name="line.12372"></a>
<span class="sourceLineNo">12373</span> } else {<a name="line.12373"></a>
<span class="sourceLineNo">12374</span> while (it.hasNext()) {<a name="line.12374"></a>
<span class="sourceLineNo">12375</span> final long iax = it.aLong;<a name="line.12375"></a>
<span class="sourceLineNo">12376</span> final long ibx = it.bLong;<a name="line.12376"></a>
<span class="sourceLineNo">12377</span> int ox;<a name="line.12377"></a>
<span class="sourceLineNo">12378</span> ox = (int) (ibx == 0 ? 0 : iax % ibx);<a name="line.12378"></a>
<span class="sourceLineNo">12379</span> oai32data[it.oIndex] = ox;<a name="line.12379"></a>
<span class="sourceLineNo">12380</span> }<a name="line.12380"></a>
<span class="sourceLineNo">12381</span> }<a name="line.12381"></a>
<span class="sourceLineNo">12382</span> } else if (as &lt; bs) {<a name="line.12382"></a>
<span class="sourceLineNo">12383</span> if (it.isOutputDouble()) {<a name="line.12383"></a>
<span class="sourceLineNo">12384</span> while (it.hasNext()) {<a name="line.12384"></a>
<span class="sourceLineNo">12385</span> final double iax = it.aDouble;<a name="line.12385"></a>
<span class="sourceLineNo">12386</span> double ibx = it.bDouble;<a name="line.12386"></a>
<span class="sourceLineNo">12387</span> int ox;<a name="line.12387"></a>
<span class="sourceLineNo">12388</span> ox = (int) toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.12388"></a>
<span class="sourceLineNo">12389</span> oai32data[it.oIndex] = ox;<a name="line.12389"></a>
<span class="sourceLineNo">12390</span> for (int j = 1; j &lt; is; j++) {<a name="line.12390"></a>
<span class="sourceLineNo">12391</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.12391"></a>
<span class="sourceLineNo">12392</span> ox = (int) toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.12392"></a>
<span class="sourceLineNo">12393</span> oai32data[it.oIndex + j] = ox;<a name="line.12393"></a>
<span class="sourceLineNo">12394</span> }<a name="line.12394"></a>
<span class="sourceLineNo">12395</span> }<a name="line.12395"></a>
<span class="sourceLineNo">12396</span> } else {<a name="line.12396"></a>
<span class="sourceLineNo">12397</span> while (it.hasNext()) {<a name="line.12397"></a>
<span class="sourceLineNo">12398</span> final long iax = it.aLong;<a name="line.12398"></a>
<span class="sourceLineNo">12399</span> long ibx = it.bLong;<a name="line.12399"></a>
<span class="sourceLineNo">12400</span> int ox;<a name="line.12400"></a>
<span class="sourceLineNo">12401</span> ox = (int) (ibx == 0 ? 0 : iax % ibx);<a name="line.12401"></a>
<span class="sourceLineNo">12402</span> oai32data[it.oIndex] = ox;<a name="line.12402"></a>
<span class="sourceLineNo">12403</span> for (int j = 1; j &lt; is; j++) {<a name="line.12403"></a>
<span class="sourceLineNo">12404</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.12404"></a>
<span class="sourceLineNo">12405</span> ox = (int) (ibx == 0 ? 0 : iax % ibx);<a name="line.12405"></a>
<span class="sourceLineNo">12406</span> oai32data[it.oIndex + j] = ox;<a name="line.12406"></a>
<span class="sourceLineNo">12407</span> }<a name="line.12407"></a>
<span class="sourceLineNo">12408</span> }<a name="line.12408"></a>
<span class="sourceLineNo">12409</span> }<a name="line.12409"></a>
<span class="sourceLineNo">12410</span> } else if (as &gt; bs) {<a name="line.12410"></a>
<span class="sourceLineNo">12411</span> if (it.isOutputDouble()) {<a name="line.12411"></a>
<span class="sourceLineNo">12412</span> while (it.hasNext()) {<a name="line.12412"></a>
<span class="sourceLineNo">12413</span> double iax = it.aDouble;<a name="line.12413"></a>
<span class="sourceLineNo">12414</span> final double ibx = it.bDouble;<a name="line.12414"></a>
<span class="sourceLineNo">12415</span> int ox;<a name="line.12415"></a>
<span class="sourceLineNo">12416</span> ox = (int) toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.12416"></a>
<span class="sourceLineNo">12417</span> oai32data[it.oIndex] = ox;<a name="line.12417"></a>
<span class="sourceLineNo">12418</span> for (int j = 1; j &lt; is; j++) {<a name="line.12418"></a>
<span class="sourceLineNo">12419</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.12419"></a>
<span class="sourceLineNo">12420</span> ox = (int) toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.12420"></a>
<span class="sourceLineNo">12421</span> oai32data[it.oIndex + j] = ox;<a name="line.12421"></a>
<span class="sourceLineNo">12422</span> }<a name="line.12422"></a>
<span class="sourceLineNo">12423</span> }<a name="line.12423"></a>
<span class="sourceLineNo">12424</span> } else {<a name="line.12424"></a>
<span class="sourceLineNo">12425</span> while (it.hasNext()) {<a name="line.12425"></a>
<span class="sourceLineNo">12426</span> long iax = it.aLong;<a name="line.12426"></a>
<span class="sourceLineNo">12427</span> final long ibx = it.bLong;<a name="line.12427"></a>
<span class="sourceLineNo">12428</span> int ox;<a name="line.12428"></a>
<span class="sourceLineNo">12429</span> ox = (int) (ibx == 0 ? 0 : iax % ibx);<a name="line.12429"></a>
<span class="sourceLineNo">12430</span> oai32data[it.oIndex] = ox;<a name="line.12430"></a>
<span class="sourceLineNo">12431</span> for (int j = 1; j &lt; is; j++) {<a name="line.12431"></a>
<span class="sourceLineNo">12432</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.12432"></a>
<span class="sourceLineNo">12433</span> ox = (int) (ibx == 0 ? 0 : iax % ibx);<a name="line.12433"></a>
<span class="sourceLineNo">12434</span> oai32data[it.oIndex + j] = ox;<a name="line.12434"></a>
<span class="sourceLineNo">12435</span> }<a name="line.12435"></a>
<span class="sourceLineNo">12436</span> }<a name="line.12436"></a>
<span class="sourceLineNo">12437</span> }<a name="line.12437"></a>
<span class="sourceLineNo">12438</span> } else if (as == 1) {<a name="line.12438"></a>
<span class="sourceLineNo">12439</span> if (it.isOutputDouble()) {<a name="line.12439"></a>
<span class="sourceLineNo">12440</span> while (it.hasNext()) {<a name="line.12440"></a>
<span class="sourceLineNo">12441</span> final double iax = it.aDouble;<a name="line.12441"></a>
<span class="sourceLineNo">12442</span> final double ibx = it.bDouble;<a name="line.12442"></a>
<span class="sourceLineNo">12443</span> int ox;<a name="line.12443"></a>
<span class="sourceLineNo">12444</span> ox = (int) toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.12444"></a>
<span class="sourceLineNo">12445</span> for (int j = 0; j &lt; is; j++) {<a name="line.12445"></a>
<span class="sourceLineNo">12446</span> oai32data[it.oIndex + j] = ox;<a name="line.12446"></a>
<span class="sourceLineNo">12447</span> }<a name="line.12447"></a>
<span class="sourceLineNo">12448</span> }<a name="line.12448"></a>
<span class="sourceLineNo">12449</span> } else {<a name="line.12449"></a>
<span class="sourceLineNo">12450</span> while (it.hasNext()) {<a name="line.12450"></a>
<span class="sourceLineNo">12451</span> final long iax = it.aLong;<a name="line.12451"></a>
<span class="sourceLineNo">12452</span> final long ibx = it.bLong;<a name="line.12452"></a>
<span class="sourceLineNo">12453</span> int ox;<a name="line.12453"></a>
<span class="sourceLineNo">12454</span> ox = (int) (ibx == 0 ? 0 : iax % ibx);<a name="line.12454"></a>
<span class="sourceLineNo">12455</span> for (int j = 0; j &lt; is; j++) {<a name="line.12455"></a>
<span class="sourceLineNo">12456</span> oai32data[it.oIndex + j] = ox;<a name="line.12456"></a>
<span class="sourceLineNo">12457</span> }<a name="line.12457"></a>
<span class="sourceLineNo">12458</span> }<a name="line.12458"></a>
<span class="sourceLineNo">12459</span> }<a name="line.12459"></a>
<span class="sourceLineNo">12460</span> } else {<a name="line.12460"></a>
<span class="sourceLineNo">12461</span> if (it.isOutputDouble()) {<a name="line.12461"></a>
<span class="sourceLineNo">12462</span> while (it.hasNext()) {<a name="line.12462"></a>
<span class="sourceLineNo">12463</span> double iax = it.aDouble;<a name="line.12463"></a>
<span class="sourceLineNo">12464</span> double ibx = it.bDouble;<a name="line.12464"></a>
<span class="sourceLineNo">12465</span> int ox;<a name="line.12465"></a>
<span class="sourceLineNo">12466</span> ox = (int) toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.12466"></a>
<span class="sourceLineNo">12467</span> oai32data[it.oIndex] = ox;<a name="line.12467"></a>
<span class="sourceLineNo">12468</span> for (int j = 1; j &lt; is; j++) {<a name="line.12468"></a>
<span class="sourceLineNo">12469</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.12469"></a>
<span class="sourceLineNo">12470</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.12470"></a>
<span class="sourceLineNo">12471</span> ox = (int) toLong(ibx == 0 ? 0 : iax % ibx);<a name="line.12471"></a>
<span class="sourceLineNo">12472</span> oai32data[it.oIndex + j] = ox;<a name="line.12472"></a>
<span class="sourceLineNo">12473</span> }<a name="line.12473"></a>
<span class="sourceLineNo">12474</span> }<a name="line.12474"></a>
<span class="sourceLineNo">12475</span> } else {<a name="line.12475"></a>
<span class="sourceLineNo">12476</span> while (it.hasNext()) {<a name="line.12476"></a>
<span class="sourceLineNo">12477</span> long iax = it.aLong;<a name="line.12477"></a>
<span class="sourceLineNo">12478</span> long ibx = it.bLong;<a name="line.12478"></a>
<span class="sourceLineNo">12479</span> int ox;<a name="line.12479"></a>
<span class="sourceLineNo">12480</span> ox = (int) (ibx == 0 ? 0 : iax % ibx);<a name="line.12480"></a>
<span class="sourceLineNo">12481</span> oai32data[it.oIndex] = ox;<a name="line.12481"></a>
<span class="sourceLineNo">12482</span> for (int j = 1; j &lt; is; j++) {<a name="line.12482"></a>
<span class="sourceLineNo">12483</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.12483"></a>
<span class="sourceLineNo">12484</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.12484"></a>
<span class="sourceLineNo">12485</span> ox = (int) (ibx == 0 ? 0 : iax % ibx);<a name="line.12485"></a>
<span class="sourceLineNo">12486</span> oai32data[it.oIndex + j] = ox;<a name="line.12486"></a>
<span class="sourceLineNo">12487</span> }<a name="line.12487"></a>
<span class="sourceLineNo">12488</span> }<a name="line.12488"></a>
<span class="sourceLineNo">12489</span> }<a name="line.12489"></a>
<span class="sourceLineNo">12490</span> }<a name="line.12490"></a>
<span class="sourceLineNo">12491</span> break;<a name="line.12491"></a>
<span class="sourceLineNo">12492</span> case Dataset.FLOAT32:<a name="line.12492"></a>
<span class="sourceLineNo">12493</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.12493"></a>
<span class="sourceLineNo">12494</span> if (it.isOutputDouble()) {<a name="line.12494"></a>
<span class="sourceLineNo">12495</span> while (it.hasNext()) {<a name="line.12495"></a>
<span class="sourceLineNo">12496</span> final double iax = it.aDouble;<a name="line.12496"></a>
<span class="sourceLineNo">12497</span> final double ibx = it.bDouble;<a name="line.12497"></a>
<span class="sourceLineNo">12498</span> float ox;<a name="line.12498"></a>
<span class="sourceLineNo">12499</span> ox = (float) (iax % ibx);<a name="line.12499"></a>
<span class="sourceLineNo">12500</span> of32data[it.oIndex] = ox;<a name="line.12500"></a>
<span class="sourceLineNo">12501</span> }<a name="line.12501"></a>
<span class="sourceLineNo">12502</span> } else {<a name="line.12502"></a>
<span class="sourceLineNo">12503</span> while (it.hasNext()) {<a name="line.12503"></a>
<span class="sourceLineNo">12504</span> final long iax = it.aLong;<a name="line.12504"></a>
<span class="sourceLineNo">12505</span> final long ibx = it.bLong;<a name="line.12505"></a>
<span class="sourceLineNo">12506</span> float ox;<a name="line.12506"></a>
<span class="sourceLineNo">12507</span> ox = (iax % ibx);<a name="line.12507"></a>
<span class="sourceLineNo">12508</span> of32data[it.oIndex] = ox;<a name="line.12508"></a>
<span class="sourceLineNo">12509</span> }<a name="line.12509"></a>
<span class="sourceLineNo">12510</span> }<a name="line.12510"></a>
<span class="sourceLineNo">12511</span> break;<a name="line.12511"></a>
<span class="sourceLineNo">12512</span> case Dataset.FLOAT64:<a name="line.12512"></a>
<span class="sourceLineNo">12513</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.12513"></a>
<span class="sourceLineNo">12514</span> if (it.isOutputDouble()) {<a name="line.12514"></a>
<span class="sourceLineNo">12515</span> while (it.hasNext()) {<a name="line.12515"></a>
<span class="sourceLineNo">12516</span> final double iax = it.aDouble;<a name="line.12516"></a>
<span class="sourceLineNo">12517</span> final double ibx = it.bDouble;<a name="line.12517"></a>
<span class="sourceLineNo">12518</span> double ox;<a name="line.12518"></a>
<span class="sourceLineNo">12519</span> ox = (iax % ibx);<a name="line.12519"></a>
<span class="sourceLineNo">12520</span> of64data[it.oIndex] = ox;<a name="line.12520"></a>
<span class="sourceLineNo">12521</span> }<a name="line.12521"></a>
<span class="sourceLineNo">12522</span> } else {<a name="line.12522"></a>
<span class="sourceLineNo">12523</span> while (it.hasNext()) {<a name="line.12523"></a>
<span class="sourceLineNo">12524</span> final long iax = it.aLong;<a name="line.12524"></a>
<span class="sourceLineNo">12525</span> final long ibx = it.bLong;<a name="line.12525"></a>
<span class="sourceLineNo">12526</span> double ox;<a name="line.12526"></a>
<span class="sourceLineNo">12527</span> ox = (iax % ibx);<a name="line.12527"></a>
<span class="sourceLineNo">12528</span> of64data[it.oIndex] = ox;<a name="line.12528"></a>
<span class="sourceLineNo">12529</span> }<a name="line.12529"></a>
<span class="sourceLineNo">12530</span> }<a name="line.12530"></a>
<span class="sourceLineNo">12531</span> break;<a name="line.12531"></a>
<span class="sourceLineNo">12532</span> case Dataset.ARRAYFLOAT32:<a name="line.12532"></a>
<span class="sourceLineNo">12533</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.12533"></a>
<span class="sourceLineNo">12534</span> if (is == 1) {<a name="line.12534"></a>
<span class="sourceLineNo">12535</span> if (it.isOutputDouble()) {<a name="line.12535"></a>
<span class="sourceLineNo">12536</span> while (it.hasNext()) {<a name="line.12536"></a>
<span class="sourceLineNo">12537</span> final double iax = it.aDouble;<a name="line.12537"></a>
<span class="sourceLineNo">12538</span> final double ibx = it.bDouble;<a name="line.12538"></a>
<span class="sourceLineNo">12539</span> float ox;<a name="line.12539"></a>
<span class="sourceLineNo">12540</span> ox = (float) (iax % ibx);<a name="line.12540"></a>
<span class="sourceLineNo">12541</span> oaf32data[it.oIndex] = ox;<a name="line.12541"></a>
<span class="sourceLineNo">12542</span> }<a name="line.12542"></a>
<span class="sourceLineNo">12543</span> } else {<a name="line.12543"></a>
<span class="sourceLineNo">12544</span> while (it.hasNext()) {<a name="line.12544"></a>
<span class="sourceLineNo">12545</span> final long iax = it.aLong;<a name="line.12545"></a>
<span class="sourceLineNo">12546</span> final long ibx = it.bLong;<a name="line.12546"></a>
<span class="sourceLineNo">12547</span> float ox;<a name="line.12547"></a>
<span class="sourceLineNo">12548</span> ox = (iax % ibx);<a name="line.12548"></a>
<span class="sourceLineNo">12549</span> oaf32data[it.oIndex] = ox;<a name="line.12549"></a>
<span class="sourceLineNo">12550</span> }<a name="line.12550"></a>
<span class="sourceLineNo">12551</span> }<a name="line.12551"></a>
<span class="sourceLineNo">12552</span> } else if (as &lt; bs) {<a name="line.12552"></a>
<span class="sourceLineNo">12553</span> if (it.isOutputDouble()) {<a name="line.12553"></a>
<span class="sourceLineNo">12554</span> while (it.hasNext()) {<a name="line.12554"></a>
<span class="sourceLineNo">12555</span> final double iax = it.aDouble;<a name="line.12555"></a>
<span class="sourceLineNo">12556</span> double ibx = it.bDouble;<a name="line.12556"></a>
<span class="sourceLineNo">12557</span> float ox;<a name="line.12557"></a>
<span class="sourceLineNo">12558</span> ox = (float) (iax % ibx);<a name="line.12558"></a>
<span class="sourceLineNo">12559</span> oaf32data[it.oIndex] = ox;<a name="line.12559"></a>
<span class="sourceLineNo">12560</span> for (int j = 1; j &lt; is; j++) {<a name="line.12560"></a>
<span class="sourceLineNo">12561</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.12561"></a>
<span class="sourceLineNo">12562</span> ox = (float) (iax % ibx);<a name="line.12562"></a>
<span class="sourceLineNo">12563</span> oaf32data[it.oIndex + j] = ox;<a name="line.12563"></a>
<span class="sourceLineNo">12564</span> }<a name="line.12564"></a>
<span class="sourceLineNo">12565</span> }<a name="line.12565"></a>
<span class="sourceLineNo">12566</span> } else {<a name="line.12566"></a>
<span class="sourceLineNo">12567</span> while (it.hasNext()) {<a name="line.12567"></a>
<span class="sourceLineNo">12568</span> final long iax = it.aLong;<a name="line.12568"></a>
<span class="sourceLineNo">12569</span> long ibx = it.bLong;<a name="line.12569"></a>
<span class="sourceLineNo">12570</span> float ox;<a name="line.12570"></a>
<span class="sourceLineNo">12571</span> ox = (iax % ibx);<a name="line.12571"></a>
<span class="sourceLineNo">12572</span> oaf32data[it.oIndex] = ox;<a name="line.12572"></a>
<span class="sourceLineNo">12573</span> for (int j = 1; j &lt; is; j++) {<a name="line.12573"></a>
<span class="sourceLineNo">12574</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.12574"></a>
<span class="sourceLineNo">12575</span> ox = (iax % ibx);<a name="line.12575"></a>
<span class="sourceLineNo">12576</span> oaf32data[it.oIndex + j] = ox;<a name="line.12576"></a>
<span class="sourceLineNo">12577</span> }<a name="line.12577"></a>
<span class="sourceLineNo">12578</span> }<a name="line.12578"></a>
<span class="sourceLineNo">12579</span> }<a name="line.12579"></a>
<span class="sourceLineNo">12580</span> } else if (as &gt; bs) {<a name="line.12580"></a>
<span class="sourceLineNo">12581</span> if (it.isOutputDouble()) {<a name="line.12581"></a>
<span class="sourceLineNo">12582</span> while (it.hasNext()) {<a name="line.12582"></a>
<span class="sourceLineNo">12583</span> double iax = it.aDouble;<a name="line.12583"></a>
<span class="sourceLineNo">12584</span> final double ibx = it.bDouble;<a name="line.12584"></a>
<span class="sourceLineNo">12585</span> float ox;<a name="line.12585"></a>
<span class="sourceLineNo">12586</span> ox = (float) (iax % ibx);<a name="line.12586"></a>
<span class="sourceLineNo">12587</span> oaf32data[it.oIndex] = ox;<a name="line.12587"></a>
<span class="sourceLineNo">12588</span> for (int j = 1; j &lt; is; j++) {<a name="line.12588"></a>
<span class="sourceLineNo">12589</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.12589"></a>
<span class="sourceLineNo">12590</span> ox = (float) (iax % ibx);<a name="line.12590"></a>
<span class="sourceLineNo">12591</span> oaf32data[it.oIndex + j] = ox;<a name="line.12591"></a>
<span class="sourceLineNo">12592</span> }<a name="line.12592"></a>
<span class="sourceLineNo">12593</span> }<a name="line.12593"></a>
<span class="sourceLineNo">12594</span> } else {<a name="line.12594"></a>
<span class="sourceLineNo">12595</span> while (it.hasNext()) {<a name="line.12595"></a>
<span class="sourceLineNo">12596</span> long iax = it.aLong;<a name="line.12596"></a>
<span class="sourceLineNo">12597</span> final long ibx = it.bLong;<a name="line.12597"></a>
<span class="sourceLineNo">12598</span> float ox;<a name="line.12598"></a>
<span class="sourceLineNo">12599</span> ox = (iax % ibx);<a name="line.12599"></a>
<span class="sourceLineNo">12600</span> oaf32data[it.oIndex] = ox;<a name="line.12600"></a>
<span class="sourceLineNo">12601</span> for (int j = 1; j &lt; is; j++) {<a name="line.12601"></a>
<span class="sourceLineNo">12602</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.12602"></a>
<span class="sourceLineNo">12603</span> ox = (iax % ibx);<a name="line.12603"></a>
<span class="sourceLineNo">12604</span> oaf32data[it.oIndex + j] = ox;<a name="line.12604"></a>
<span class="sourceLineNo">12605</span> }<a name="line.12605"></a>
<span class="sourceLineNo">12606</span> }<a name="line.12606"></a>
<span class="sourceLineNo">12607</span> }<a name="line.12607"></a>
<span class="sourceLineNo">12608</span> } else if (as == 1) {<a name="line.12608"></a>
<span class="sourceLineNo">12609</span> if (it.isOutputDouble()) {<a name="line.12609"></a>
<span class="sourceLineNo">12610</span> while (it.hasNext()) {<a name="line.12610"></a>
<span class="sourceLineNo">12611</span> final double iax = it.aDouble;<a name="line.12611"></a>
<span class="sourceLineNo">12612</span> final double ibx = it.bDouble;<a name="line.12612"></a>
<span class="sourceLineNo">12613</span> float ox;<a name="line.12613"></a>
<span class="sourceLineNo">12614</span> ox = (float) (iax % ibx);<a name="line.12614"></a>
<span class="sourceLineNo">12615</span> for (int j = 0; j &lt; is; j++) {<a name="line.12615"></a>
<span class="sourceLineNo">12616</span> oaf32data[it.oIndex + j] = ox;<a name="line.12616"></a>
<span class="sourceLineNo">12617</span> }<a name="line.12617"></a>
<span class="sourceLineNo">12618</span> }<a name="line.12618"></a>
<span class="sourceLineNo">12619</span> } else {<a name="line.12619"></a>
<span class="sourceLineNo">12620</span> while (it.hasNext()) {<a name="line.12620"></a>
<span class="sourceLineNo">12621</span> final long iax = it.aLong;<a name="line.12621"></a>
<span class="sourceLineNo">12622</span> final long ibx = it.bLong;<a name="line.12622"></a>
<span class="sourceLineNo">12623</span> float ox;<a name="line.12623"></a>
<span class="sourceLineNo">12624</span> ox = (iax % ibx);<a name="line.12624"></a>
<span class="sourceLineNo">12625</span> for (int j = 0; j &lt; is; j++) {<a name="line.12625"></a>
<span class="sourceLineNo">12626</span> oaf32data[it.oIndex + j] = ox;<a name="line.12626"></a>
<span class="sourceLineNo">12627</span> }<a name="line.12627"></a>
<span class="sourceLineNo">12628</span> }<a name="line.12628"></a>
<span class="sourceLineNo">12629</span> }<a name="line.12629"></a>
<span class="sourceLineNo">12630</span> } else {<a name="line.12630"></a>
<span class="sourceLineNo">12631</span> if (it.isOutputDouble()) {<a name="line.12631"></a>
<span class="sourceLineNo">12632</span> while (it.hasNext()) {<a name="line.12632"></a>
<span class="sourceLineNo">12633</span> double iax = it.aDouble;<a name="line.12633"></a>
<span class="sourceLineNo">12634</span> double ibx = it.bDouble;<a name="line.12634"></a>
<span class="sourceLineNo">12635</span> float ox;<a name="line.12635"></a>
<span class="sourceLineNo">12636</span> ox = (float) (iax % ibx);<a name="line.12636"></a>
<span class="sourceLineNo">12637</span> oaf32data[it.oIndex] = ox;<a name="line.12637"></a>
<span class="sourceLineNo">12638</span> for (int j = 1; j &lt; is; j++) {<a name="line.12638"></a>
<span class="sourceLineNo">12639</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.12639"></a>
<span class="sourceLineNo">12640</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.12640"></a>
<span class="sourceLineNo">12641</span> ox = (float) (iax % ibx);<a name="line.12641"></a>
<span class="sourceLineNo">12642</span> oaf32data[it.oIndex + j] = ox;<a name="line.12642"></a>
<span class="sourceLineNo">12643</span> }<a name="line.12643"></a>
<span class="sourceLineNo">12644</span> }<a name="line.12644"></a>
<span class="sourceLineNo">12645</span> } else {<a name="line.12645"></a>
<span class="sourceLineNo">12646</span> while (it.hasNext()) {<a name="line.12646"></a>
<span class="sourceLineNo">12647</span> long iax = it.aLong;<a name="line.12647"></a>
<span class="sourceLineNo">12648</span> long ibx = it.bLong;<a name="line.12648"></a>
<span class="sourceLineNo">12649</span> float ox;<a name="line.12649"></a>
<span class="sourceLineNo">12650</span> ox = (iax % ibx);<a name="line.12650"></a>
<span class="sourceLineNo">12651</span> oaf32data[it.oIndex] = ox;<a name="line.12651"></a>
<span class="sourceLineNo">12652</span> for (int j = 1; j &lt; is; j++) {<a name="line.12652"></a>
<span class="sourceLineNo">12653</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.12653"></a>
<span class="sourceLineNo">12654</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.12654"></a>
<span class="sourceLineNo">12655</span> ox = (iax % ibx);<a name="line.12655"></a>
<span class="sourceLineNo">12656</span> oaf32data[it.oIndex + j] = ox;<a name="line.12656"></a>
<span class="sourceLineNo">12657</span> }<a name="line.12657"></a>
<span class="sourceLineNo">12658</span> }<a name="line.12658"></a>
<span class="sourceLineNo">12659</span> }<a name="line.12659"></a>
<span class="sourceLineNo">12660</span> }<a name="line.12660"></a>
<span class="sourceLineNo">12661</span> break;<a name="line.12661"></a>
<span class="sourceLineNo">12662</span> case Dataset.ARRAYFLOAT64:<a name="line.12662"></a>
<span class="sourceLineNo">12663</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.12663"></a>
<span class="sourceLineNo">12664</span> if (is == 1) {<a name="line.12664"></a>
<span class="sourceLineNo">12665</span> if (it.isOutputDouble()) {<a name="line.12665"></a>
<span class="sourceLineNo">12666</span> while (it.hasNext()) {<a name="line.12666"></a>
<span class="sourceLineNo">12667</span> final double iax = it.aDouble;<a name="line.12667"></a>
<span class="sourceLineNo">12668</span> final double ibx = it.bDouble;<a name="line.12668"></a>
<span class="sourceLineNo">12669</span> double ox;<a name="line.12669"></a>
<span class="sourceLineNo">12670</span> ox = (iax % ibx);<a name="line.12670"></a>
<span class="sourceLineNo">12671</span> oaf64data[it.oIndex] = ox;<a name="line.12671"></a>
<span class="sourceLineNo">12672</span> }<a name="line.12672"></a>
<span class="sourceLineNo">12673</span> } else {<a name="line.12673"></a>
<span class="sourceLineNo">12674</span> while (it.hasNext()) {<a name="line.12674"></a>
<span class="sourceLineNo">12675</span> final long iax = it.aLong;<a name="line.12675"></a>
<span class="sourceLineNo">12676</span> final long ibx = it.bLong;<a name="line.12676"></a>
<span class="sourceLineNo">12677</span> double ox;<a name="line.12677"></a>
<span class="sourceLineNo">12678</span> ox = (iax % ibx);<a name="line.12678"></a>
<span class="sourceLineNo">12679</span> oaf64data[it.oIndex] = ox;<a name="line.12679"></a>
<span class="sourceLineNo">12680</span> }<a name="line.12680"></a>
<span class="sourceLineNo">12681</span> }<a name="line.12681"></a>
<span class="sourceLineNo">12682</span> } else if (as &lt; bs) {<a name="line.12682"></a>
<span class="sourceLineNo">12683</span> if (it.isOutputDouble()) {<a name="line.12683"></a>
<span class="sourceLineNo">12684</span> while (it.hasNext()) {<a name="line.12684"></a>
<span class="sourceLineNo">12685</span> final double iax = it.aDouble;<a name="line.12685"></a>
<span class="sourceLineNo">12686</span> double ibx = it.bDouble;<a name="line.12686"></a>
<span class="sourceLineNo">12687</span> double ox;<a name="line.12687"></a>
<span class="sourceLineNo">12688</span> ox = (iax % ibx);<a name="line.12688"></a>
<span class="sourceLineNo">12689</span> oaf64data[it.oIndex] = ox;<a name="line.12689"></a>
<span class="sourceLineNo">12690</span> for (int j = 1; j &lt; is; j++) {<a name="line.12690"></a>
<span class="sourceLineNo">12691</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.12691"></a>
<span class="sourceLineNo">12692</span> ox = (iax % ibx);<a name="line.12692"></a>
<span class="sourceLineNo">12693</span> oaf64data[it.oIndex + j] = ox;<a name="line.12693"></a>
<span class="sourceLineNo">12694</span> }<a name="line.12694"></a>
<span class="sourceLineNo">12695</span> }<a name="line.12695"></a>
<span class="sourceLineNo">12696</span> } else {<a name="line.12696"></a>
<span class="sourceLineNo">12697</span> while (it.hasNext()) {<a name="line.12697"></a>
<span class="sourceLineNo">12698</span> final long iax = it.aLong;<a name="line.12698"></a>
<span class="sourceLineNo">12699</span> long ibx = it.bLong;<a name="line.12699"></a>
<span class="sourceLineNo">12700</span> double ox;<a name="line.12700"></a>
<span class="sourceLineNo">12701</span> ox = (iax % ibx);<a name="line.12701"></a>
<span class="sourceLineNo">12702</span> oaf64data[it.oIndex] = ox;<a name="line.12702"></a>
<span class="sourceLineNo">12703</span> for (int j = 1; j &lt; is; j++) {<a name="line.12703"></a>
<span class="sourceLineNo">12704</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.12704"></a>
<span class="sourceLineNo">12705</span> ox = (iax % ibx);<a name="line.12705"></a>
<span class="sourceLineNo">12706</span> oaf64data[it.oIndex + j] = ox;<a name="line.12706"></a>
<span class="sourceLineNo">12707</span> }<a name="line.12707"></a>
<span class="sourceLineNo">12708</span> }<a name="line.12708"></a>
<span class="sourceLineNo">12709</span> }<a name="line.12709"></a>
<span class="sourceLineNo">12710</span> } else if (as &gt; bs) {<a name="line.12710"></a>
<span class="sourceLineNo">12711</span> if (it.isOutputDouble()) {<a name="line.12711"></a>
<span class="sourceLineNo">12712</span> while (it.hasNext()) {<a name="line.12712"></a>
<span class="sourceLineNo">12713</span> double iax = it.aDouble;<a name="line.12713"></a>
<span class="sourceLineNo">12714</span> final double ibx = it.bDouble;<a name="line.12714"></a>
<span class="sourceLineNo">12715</span> double ox;<a name="line.12715"></a>
<span class="sourceLineNo">12716</span> ox = (iax % ibx);<a name="line.12716"></a>
<span class="sourceLineNo">12717</span> oaf64data[it.oIndex] = ox;<a name="line.12717"></a>
<span class="sourceLineNo">12718</span> for (int j = 1; j &lt; is; j++) {<a name="line.12718"></a>
<span class="sourceLineNo">12719</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.12719"></a>
<span class="sourceLineNo">12720</span> ox = (iax % ibx);<a name="line.12720"></a>
<span class="sourceLineNo">12721</span> oaf64data[it.oIndex + j] = ox;<a name="line.12721"></a>
<span class="sourceLineNo">12722</span> }<a name="line.12722"></a>
<span class="sourceLineNo">12723</span> }<a name="line.12723"></a>
<span class="sourceLineNo">12724</span> } else {<a name="line.12724"></a>
<span class="sourceLineNo">12725</span> while (it.hasNext()) {<a name="line.12725"></a>
<span class="sourceLineNo">12726</span> long iax = it.aLong;<a name="line.12726"></a>
<span class="sourceLineNo">12727</span> final long ibx = it.bLong;<a name="line.12727"></a>
<span class="sourceLineNo">12728</span> double ox;<a name="line.12728"></a>
<span class="sourceLineNo">12729</span> ox = (iax % ibx);<a name="line.12729"></a>
<span class="sourceLineNo">12730</span> oaf64data[it.oIndex] = ox;<a name="line.12730"></a>
<span class="sourceLineNo">12731</span> for (int j = 1; j &lt; is; j++) {<a name="line.12731"></a>
<span class="sourceLineNo">12732</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.12732"></a>
<span class="sourceLineNo">12733</span> ox = (iax % ibx);<a name="line.12733"></a>
<span class="sourceLineNo">12734</span> oaf64data[it.oIndex + j] = ox;<a name="line.12734"></a>
<span class="sourceLineNo">12735</span> }<a name="line.12735"></a>
<span class="sourceLineNo">12736</span> }<a name="line.12736"></a>
<span class="sourceLineNo">12737</span> }<a name="line.12737"></a>
<span class="sourceLineNo">12738</span> } else if (as == 1) {<a name="line.12738"></a>
<span class="sourceLineNo">12739</span> if (it.isOutputDouble()) {<a name="line.12739"></a>
<span class="sourceLineNo">12740</span> while (it.hasNext()) {<a name="line.12740"></a>
<span class="sourceLineNo">12741</span> final double iax = it.aDouble;<a name="line.12741"></a>
<span class="sourceLineNo">12742</span> final double ibx = it.bDouble;<a name="line.12742"></a>
<span class="sourceLineNo">12743</span> double ox;<a name="line.12743"></a>
<span class="sourceLineNo">12744</span> ox = (iax % ibx);<a name="line.12744"></a>
<span class="sourceLineNo">12745</span> for (int j = 0; j &lt; is; j++) {<a name="line.12745"></a>
<span class="sourceLineNo">12746</span> oaf64data[it.oIndex + j] = ox;<a name="line.12746"></a>
<span class="sourceLineNo">12747</span> }<a name="line.12747"></a>
<span class="sourceLineNo">12748</span> }<a name="line.12748"></a>
<span class="sourceLineNo">12749</span> } else {<a name="line.12749"></a>
<span class="sourceLineNo">12750</span> while (it.hasNext()) {<a name="line.12750"></a>
<span class="sourceLineNo">12751</span> final long iax = it.aLong;<a name="line.12751"></a>
<span class="sourceLineNo">12752</span> final long ibx = it.bLong;<a name="line.12752"></a>
<span class="sourceLineNo">12753</span> double ox;<a name="line.12753"></a>
<span class="sourceLineNo">12754</span> ox = (iax % ibx);<a name="line.12754"></a>
<span class="sourceLineNo">12755</span> for (int j = 0; j &lt; is; j++) {<a name="line.12755"></a>
<span class="sourceLineNo">12756</span> oaf64data[it.oIndex + j] = ox;<a name="line.12756"></a>
<span class="sourceLineNo">12757</span> }<a name="line.12757"></a>
<span class="sourceLineNo">12758</span> }<a name="line.12758"></a>
<span class="sourceLineNo">12759</span> }<a name="line.12759"></a>
<span class="sourceLineNo">12760</span> } else {<a name="line.12760"></a>
<span class="sourceLineNo">12761</span> if (it.isOutputDouble()) {<a name="line.12761"></a>
<span class="sourceLineNo">12762</span> while (it.hasNext()) {<a name="line.12762"></a>
<span class="sourceLineNo">12763</span> double iax = it.aDouble;<a name="line.12763"></a>
<span class="sourceLineNo">12764</span> double ibx = it.bDouble;<a name="line.12764"></a>
<span class="sourceLineNo">12765</span> double ox;<a name="line.12765"></a>
<span class="sourceLineNo">12766</span> ox = (iax % ibx);<a name="line.12766"></a>
<span class="sourceLineNo">12767</span> oaf64data[it.oIndex] = ox;<a name="line.12767"></a>
<span class="sourceLineNo">12768</span> for (int j = 1; j &lt; is; j++) {<a name="line.12768"></a>
<span class="sourceLineNo">12769</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.12769"></a>
<span class="sourceLineNo">12770</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.12770"></a>
<span class="sourceLineNo">12771</span> ox = (iax % ibx);<a name="line.12771"></a>
<span class="sourceLineNo">12772</span> oaf64data[it.oIndex + j] = ox;<a name="line.12772"></a>
<span class="sourceLineNo">12773</span> }<a name="line.12773"></a>
<span class="sourceLineNo">12774</span> }<a name="line.12774"></a>
<span class="sourceLineNo">12775</span> } else {<a name="line.12775"></a>
<span class="sourceLineNo">12776</span> while (it.hasNext()) {<a name="line.12776"></a>
<span class="sourceLineNo">12777</span> long iax = it.aLong;<a name="line.12777"></a>
<span class="sourceLineNo">12778</span> long ibx = it.bLong;<a name="line.12778"></a>
<span class="sourceLineNo">12779</span> double ox;<a name="line.12779"></a>
<span class="sourceLineNo">12780</span> ox = (iax % ibx);<a name="line.12780"></a>
<span class="sourceLineNo">12781</span> oaf64data[it.oIndex] = ox;<a name="line.12781"></a>
<span class="sourceLineNo">12782</span> for (int j = 1; j &lt; is; j++) {<a name="line.12782"></a>
<span class="sourceLineNo">12783</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.12783"></a>
<span class="sourceLineNo">12784</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.12784"></a>
<span class="sourceLineNo">12785</span> ox = (iax % ibx);<a name="line.12785"></a>
<span class="sourceLineNo">12786</span> oaf64data[it.oIndex + j] = ox;<a name="line.12786"></a>
<span class="sourceLineNo">12787</span> }<a name="line.12787"></a>
<span class="sourceLineNo">12788</span> }<a name="line.12788"></a>
<span class="sourceLineNo">12789</span> }<a name="line.12789"></a>
<span class="sourceLineNo">12790</span> }<a name="line.12790"></a>
<span class="sourceLineNo">12791</span> break;<a name="line.12791"></a>
<span class="sourceLineNo">12792</span> default:<a name="line.12792"></a>
<span class="sourceLineNo">12793</span> throw new IllegalArgumentException("remainder supports integer, compound integer, real, compound real datasets only");<a name="line.12793"></a>
<span class="sourceLineNo">12794</span> }<a name="line.12794"></a>
<span class="sourceLineNo">12795</span><a name="line.12795"></a>
<span class="sourceLineNo">12796</span> addBinaryOperatorName(da, db, result, "%");<a name="line.12796"></a>
<span class="sourceLineNo">12797</span> return result;<a name="line.12797"></a>
<span class="sourceLineNo">12798</span> }<a name="line.12798"></a>
<span class="sourceLineNo">12799</span><a name="line.12799"></a>
<span class="sourceLineNo">12800</span> /**<a name="line.12800"></a>
<span class="sourceLineNo">12801</span> * maximum operator<a name="line.12801"></a>
<span class="sourceLineNo">12802</span> * @param a<a name="line.12802"></a>
<span class="sourceLineNo">12803</span> * @param b<a name="line.12803"></a>
<span class="sourceLineNo">12804</span> * @return return maximum of a and b<a name="line.12804"></a>
<span class="sourceLineNo">12805</span> */<a name="line.12805"></a>
<span class="sourceLineNo">12806</span> public static Dataset maximum(final Object a, final Object b) {<a name="line.12806"></a>
<span class="sourceLineNo">12807</span> return maximum(a, b, null);<a name="line.12807"></a>
<span class="sourceLineNo">12808</span> }<a name="line.12808"></a>
<span class="sourceLineNo">12809</span><a name="line.12809"></a>
<span class="sourceLineNo">12810</span> /**<a name="line.12810"></a>
<span class="sourceLineNo">12811</span> * maximum operator<a name="line.12811"></a>
<span class="sourceLineNo">12812</span> * @param a<a name="line.12812"></a>
<span class="sourceLineNo">12813</span> * @param b<a name="line.12813"></a>
<span class="sourceLineNo">12814</span> * @param o output can be null - in which case, a new dataset is created<a name="line.12814"></a>
<span class="sourceLineNo">12815</span> * @return return maximum of a and b<a name="line.12815"></a>
<span class="sourceLineNo">12816</span> */<a name="line.12816"></a>
<span class="sourceLineNo">12817</span> public static Dataset maximum(final Object a, final Object b, final Dataset o) {<a name="line.12817"></a>
<span class="sourceLineNo">12818</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.12818"></a>
<span class="sourceLineNo">12819</span> Dataset db = b instanceof Dataset ? (Dataset) b : DatasetFactory.createFromObject(b);<a name="line.12819"></a>
<span class="sourceLineNo">12820</span> BroadcastIterator it = BroadcastIterator.createIterator(da, db, o, true);<a name="line.12820"></a>
<span class="sourceLineNo">12821</span> final Dataset result = it.getOutput();<a name="line.12821"></a>
<span class="sourceLineNo">12822</span> if (!result.isComplex()) {<a name="line.12822"></a>
<span class="sourceLineNo">12823</span> boolean change = false;<a name="line.12823"></a>
<span class="sourceLineNo">12824</span> if (da.isComplex()) {<a name="line.12824"></a>
<span class="sourceLineNo">12825</span> da = da.getRealView();<a name="line.12825"></a>
<span class="sourceLineNo">12826</span> change = true;<a name="line.12826"></a>
<span class="sourceLineNo">12827</span> }<a name="line.12827"></a>
<span class="sourceLineNo">12828</span> if (db.isComplex()) {<a name="line.12828"></a>
<span class="sourceLineNo">12829</span> db = db.getRealView();<a name="line.12829"></a>
<span class="sourceLineNo">12830</span> change = true;<a name="line.12830"></a>
<span class="sourceLineNo">12831</span> }<a name="line.12831"></a>
<span class="sourceLineNo">12832</span> if (change) {<a name="line.12832"></a>
<span class="sourceLineNo">12833</span> it = BroadcastIterator.createIterator(da, db, result, true);<a name="line.12833"></a>
<span class="sourceLineNo">12834</span> }<a name="line.12834"></a>
<span class="sourceLineNo">12835</span> }<a name="line.12835"></a>
<span class="sourceLineNo">12836</span> final int is = result.getElementsPerItem();<a name="line.12836"></a>
<span class="sourceLineNo">12837</span> final int as = da.getElementsPerItem();<a name="line.12837"></a>
<span class="sourceLineNo">12838</span> final int bs = db.getElementsPerItem();<a name="line.12838"></a>
<span class="sourceLineNo">12839</span> final int dt = result.getDType();<a name="line.12839"></a>
<span class="sourceLineNo">12840</span><a name="line.12840"></a>
<span class="sourceLineNo">12841</span> switch(dt) {<a name="line.12841"></a>
<span class="sourceLineNo">12842</span> case Dataset.INT8:<a name="line.12842"></a>
<span class="sourceLineNo">12843</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.12843"></a>
<span class="sourceLineNo">12844</span> if (it.isOutputDouble()) {<a name="line.12844"></a>
<span class="sourceLineNo">12845</span> while (it.hasNext()) {<a name="line.12845"></a>
<span class="sourceLineNo">12846</span> final double iax = it.aDouble;<a name="line.12846"></a>
<span class="sourceLineNo">12847</span> final double ibx = it.bDouble;<a name="line.12847"></a>
<span class="sourceLineNo">12848</span> byte ox;<a name="line.12848"></a>
<span class="sourceLineNo">12849</span> ox = (byte) toLong(Math.max(iax, ibx));<a name="line.12849"></a>
<span class="sourceLineNo">12850</span> oi8data[it.oIndex] = ox;<a name="line.12850"></a>
<span class="sourceLineNo">12851</span> }<a name="line.12851"></a>
<span class="sourceLineNo">12852</span> } else {<a name="line.12852"></a>
<span class="sourceLineNo">12853</span> while (it.hasNext()) {<a name="line.12853"></a>
<span class="sourceLineNo">12854</span> final long iax = it.aLong;<a name="line.12854"></a>
<span class="sourceLineNo">12855</span> final long ibx = it.bLong;<a name="line.12855"></a>
<span class="sourceLineNo">12856</span> byte ox;<a name="line.12856"></a>
<span class="sourceLineNo">12857</span> ox = (byte) toLong(Math.max(iax, ibx));<a name="line.12857"></a>
<span class="sourceLineNo">12858</span> oi8data[it.oIndex] = ox;<a name="line.12858"></a>
<span class="sourceLineNo">12859</span> }<a name="line.12859"></a>
<span class="sourceLineNo">12860</span> }<a name="line.12860"></a>
<span class="sourceLineNo">12861</span> break;<a name="line.12861"></a>
<span class="sourceLineNo">12862</span> case Dataset.INT16:<a name="line.12862"></a>
<span class="sourceLineNo">12863</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.12863"></a>
<span class="sourceLineNo">12864</span> if (it.isOutputDouble()) {<a name="line.12864"></a>
<span class="sourceLineNo">12865</span> while (it.hasNext()) {<a name="line.12865"></a>
<span class="sourceLineNo">12866</span> final double iax = it.aDouble;<a name="line.12866"></a>
<span class="sourceLineNo">12867</span> final double ibx = it.bDouble;<a name="line.12867"></a>
<span class="sourceLineNo">12868</span> short ox;<a name="line.12868"></a>
<span class="sourceLineNo">12869</span> ox = (short) toLong(Math.max(iax, ibx));<a name="line.12869"></a>
<span class="sourceLineNo">12870</span> oi16data[it.oIndex] = ox;<a name="line.12870"></a>
<span class="sourceLineNo">12871</span> }<a name="line.12871"></a>
<span class="sourceLineNo">12872</span> } else {<a name="line.12872"></a>
<span class="sourceLineNo">12873</span> while (it.hasNext()) {<a name="line.12873"></a>
<span class="sourceLineNo">12874</span> final long iax = it.aLong;<a name="line.12874"></a>
<span class="sourceLineNo">12875</span> final long ibx = it.bLong;<a name="line.12875"></a>
<span class="sourceLineNo">12876</span> short ox;<a name="line.12876"></a>
<span class="sourceLineNo">12877</span> ox = (short) toLong(Math.max(iax, ibx));<a name="line.12877"></a>
<span class="sourceLineNo">12878</span> oi16data[it.oIndex] = ox;<a name="line.12878"></a>
<span class="sourceLineNo">12879</span> }<a name="line.12879"></a>
<span class="sourceLineNo">12880</span> }<a name="line.12880"></a>
<span class="sourceLineNo">12881</span> break;<a name="line.12881"></a>
<span class="sourceLineNo">12882</span> case Dataset.INT64:<a name="line.12882"></a>
<span class="sourceLineNo">12883</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.12883"></a>
<span class="sourceLineNo">12884</span> if (it.isOutputDouble()) {<a name="line.12884"></a>
<span class="sourceLineNo">12885</span> while (it.hasNext()) {<a name="line.12885"></a>
<span class="sourceLineNo">12886</span> final double iax = it.aDouble;<a name="line.12886"></a>
<span class="sourceLineNo">12887</span> final double ibx = it.bDouble;<a name="line.12887"></a>
<span class="sourceLineNo">12888</span> long ox;<a name="line.12888"></a>
<span class="sourceLineNo">12889</span> ox = toLong(Math.max(iax, ibx));<a name="line.12889"></a>
<span class="sourceLineNo">12890</span> oi64data[it.oIndex] = ox;<a name="line.12890"></a>
<span class="sourceLineNo">12891</span> }<a name="line.12891"></a>
<span class="sourceLineNo">12892</span> } else {<a name="line.12892"></a>
<span class="sourceLineNo">12893</span> while (it.hasNext()) {<a name="line.12893"></a>
<span class="sourceLineNo">12894</span> final long iax = it.aLong;<a name="line.12894"></a>
<span class="sourceLineNo">12895</span> final long ibx = it.bLong;<a name="line.12895"></a>
<span class="sourceLineNo">12896</span> long ox;<a name="line.12896"></a>
<span class="sourceLineNo">12897</span> ox = toLong(Math.max(iax, ibx));<a name="line.12897"></a>
<span class="sourceLineNo">12898</span> oi64data[it.oIndex] = ox;<a name="line.12898"></a>
<span class="sourceLineNo">12899</span> }<a name="line.12899"></a>
<span class="sourceLineNo">12900</span> }<a name="line.12900"></a>
<span class="sourceLineNo">12901</span> break;<a name="line.12901"></a>
<span class="sourceLineNo">12902</span> case Dataset.INT32:<a name="line.12902"></a>
<span class="sourceLineNo">12903</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.12903"></a>
<span class="sourceLineNo">12904</span> if (it.isOutputDouble()) {<a name="line.12904"></a>
<span class="sourceLineNo">12905</span> while (it.hasNext()) {<a name="line.12905"></a>
<span class="sourceLineNo">12906</span> final double iax = it.aDouble;<a name="line.12906"></a>
<span class="sourceLineNo">12907</span> final double ibx = it.bDouble;<a name="line.12907"></a>
<span class="sourceLineNo">12908</span> int ox;<a name="line.12908"></a>
<span class="sourceLineNo">12909</span> ox = (int) toLong(Math.max(iax, ibx));<a name="line.12909"></a>
<span class="sourceLineNo">12910</span> oi32data[it.oIndex] = ox;<a name="line.12910"></a>
<span class="sourceLineNo">12911</span> }<a name="line.12911"></a>
<span class="sourceLineNo">12912</span> } else {<a name="line.12912"></a>
<span class="sourceLineNo">12913</span> while (it.hasNext()) {<a name="line.12913"></a>
<span class="sourceLineNo">12914</span> final long iax = it.aLong;<a name="line.12914"></a>
<span class="sourceLineNo">12915</span> final long ibx = it.bLong;<a name="line.12915"></a>
<span class="sourceLineNo">12916</span> int ox;<a name="line.12916"></a>
<span class="sourceLineNo">12917</span> ox = (int) toLong(Math.max(iax, ibx));<a name="line.12917"></a>
<span class="sourceLineNo">12918</span> oi32data[it.oIndex] = ox;<a name="line.12918"></a>
<span class="sourceLineNo">12919</span> }<a name="line.12919"></a>
<span class="sourceLineNo">12920</span> }<a name="line.12920"></a>
<span class="sourceLineNo">12921</span> break;<a name="line.12921"></a>
<span class="sourceLineNo">12922</span> case Dataset.ARRAYINT8:<a name="line.12922"></a>
<span class="sourceLineNo">12923</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.12923"></a>
<span class="sourceLineNo">12924</span> if (is == 1) {<a name="line.12924"></a>
<span class="sourceLineNo">12925</span> if (it.isOutputDouble()) {<a name="line.12925"></a>
<span class="sourceLineNo">12926</span> while (it.hasNext()) {<a name="line.12926"></a>
<span class="sourceLineNo">12927</span> final double iax = it.aDouble;<a name="line.12927"></a>
<span class="sourceLineNo">12928</span> final double ibx = it.bDouble;<a name="line.12928"></a>
<span class="sourceLineNo">12929</span> byte ox;<a name="line.12929"></a>
<span class="sourceLineNo">12930</span> ox = (byte) toLong(Math.max(iax, ibx));<a name="line.12930"></a>
<span class="sourceLineNo">12931</span> oai8data[it.oIndex] = ox;<a name="line.12931"></a>
<span class="sourceLineNo">12932</span> }<a name="line.12932"></a>
<span class="sourceLineNo">12933</span> } else {<a name="line.12933"></a>
<span class="sourceLineNo">12934</span> while (it.hasNext()) {<a name="line.12934"></a>
<span class="sourceLineNo">12935</span> final long iax = it.aLong;<a name="line.12935"></a>
<span class="sourceLineNo">12936</span> final long ibx = it.bLong;<a name="line.12936"></a>
<span class="sourceLineNo">12937</span> byte ox;<a name="line.12937"></a>
<span class="sourceLineNo">12938</span> ox = (byte) toLong(Math.max(iax, ibx));<a name="line.12938"></a>
<span class="sourceLineNo">12939</span> oai8data[it.oIndex] = ox;<a name="line.12939"></a>
<span class="sourceLineNo">12940</span> }<a name="line.12940"></a>
<span class="sourceLineNo">12941</span> }<a name="line.12941"></a>
<span class="sourceLineNo">12942</span> } else if (as &lt; bs) {<a name="line.12942"></a>
<span class="sourceLineNo">12943</span> if (it.isOutputDouble()) {<a name="line.12943"></a>
<span class="sourceLineNo">12944</span> while (it.hasNext()) {<a name="line.12944"></a>
<span class="sourceLineNo">12945</span> final double iax = it.aDouble;<a name="line.12945"></a>
<span class="sourceLineNo">12946</span> double ibx = it.bDouble;<a name="line.12946"></a>
<span class="sourceLineNo">12947</span> byte ox;<a name="line.12947"></a>
<span class="sourceLineNo">12948</span> ox = (byte) toLong(Math.max(iax, ibx));<a name="line.12948"></a>
<span class="sourceLineNo">12949</span> oai8data[it.oIndex] = ox;<a name="line.12949"></a>
<span class="sourceLineNo">12950</span> for (int j = 1; j &lt; is; j++) {<a name="line.12950"></a>
<span class="sourceLineNo">12951</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.12951"></a>
<span class="sourceLineNo">12952</span> ox = (byte) toLong(Math.max(iax, ibx));<a name="line.12952"></a>
<span class="sourceLineNo">12953</span> oai8data[it.oIndex + j] = ox;<a name="line.12953"></a>
<span class="sourceLineNo">12954</span> }<a name="line.12954"></a>
<span class="sourceLineNo">12955</span> }<a name="line.12955"></a>
<span class="sourceLineNo">12956</span> } else {<a name="line.12956"></a>
<span class="sourceLineNo">12957</span> while (it.hasNext()) {<a name="line.12957"></a>
<span class="sourceLineNo">12958</span> final long iax = it.aLong;<a name="line.12958"></a>
<span class="sourceLineNo">12959</span> long ibx = it.bLong;<a name="line.12959"></a>
<span class="sourceLineNo">12960</span> byte ox;<a name="line.12960"></a>
<span class="sourceLineNo">12961</span> ox = (byte) toLong(Math.max(iax, ibx));<a name="line.12961"></a>
<span class="sourceLineNo">12962</span> oai8data[it.oIndex] = ox;<a name="line.12962"></a>
<span class="sourceLineNo">12963</span> for (int j = 1; j &lt; is; j++) {<a name="line.12963"></a>
<span class="sourceLineNo">12964</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.12964"></a>
<span class="sourceLineNo">12965</span> ox = (byte) toLong(Math.max(iax, ibx));<a name="line.12965"></a>
<span class="sourceLineNo">12966</span> oai8data[it.oIndex + j] = ox;<a name="line.12966"></a>
<span class="sourceLineNo">12967</span> }<a name="line.12967"></a>
<span class="sourceLineNo">12968</span> }<a name="line.12968"></a>
<span class="sourceLineNo">12969</span> }<a name="line.12969"></a>
<span class="sourceLineNo">12970</span> } else if (as &gt; bs) {<a name="line.12970"></a>
<span class="sourceLineNo">12971</span> if (it.isOutputDouble()) {<a name="line.12971"></a>
<span class="sourceLineNo">12972</span> while (it.hasNext()) {<a name="line.12972"></a>
<span class="sourceLineNo">12973</span> double iax = it.aDouble;<a name="line.12973"></a>
<span class="sourceLineNo">12974</span> final double ibx = it.bDouble;<a name="line.12974"></a>
<span class="sourceLineNo">12975</span> byte ox;<a name="line.12975"></a>
<span class="sourceLineNo">12976</span> ox = (byte) toLong(Math.max(iax, ibx));<a name="line.12976"></a>
<span class="sourceLineNo">12977</span> oai8data[it.oIndex] = ox;<a name="line.12977"></a>
<span class="sourceLineNo">12978</span> for (int j = 1; j &lt; is; j++) {<a name="line.12978"></a>
<span class="sourceLineNo">12979</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.12979"></a>
<span class="sourceLineNo">12980</span> ox = (byte) toLong(Math.max(iax, ibx));<a name="line.12980"></a>
<span class="sourceLineNo">12981</span> oai8data[it.oIndex + j] = ox;<a name="line.12981"></a>
<span class="sourceLineNo">12982</span> }<a name="line.12982"></a>
<span class="sourceLineNo">12983</span> }<a name="line.12983"></a>
<span class="sourceLineNo">12984</span> } else {<a name="line.12984"></a>
<span class="sourceLineNo">12985</span> while (it.hasNext()) {<a name="line.12985"></a>
<span class="sourceLineNo">12986</span> long iax = it.aLong;<a name="line.12986"></a>
<span class="sourceLineNo">12987</span> final long ibx = it.bLong;<a name="line.12987"></a>
<span class="sourceLineNo">12988</span> byte ox;<a name="line.12988"></a>
<span class="sourceLineNo">12989</span> ox = (byte) toLong(Math.max(iax, ibx));<a name="line.12989"></a>
<span class="sourceLineNo">12990</span> oai8data[it.oIndex] = ox;<a name="line.12990"></a>
<span class="sourceLineNo">12991</span> for (int j = 1; j &lt; is; j++) {<a name="line.12991"></a>
<span class="sourceLineNo">12992</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.12992"></a>
<span class="sourceLineNo">12993</span> ox = (byte) toLong(Math.max(iax, ibx));<a name="line.12993"></a>
<span class="sourceLineNo">12994</span> oai8data[it.oIndex + j] = ox;<a name="line.12994"></a>
<span class="sourceLineNo">12995</span> }<a name="line.12995"></a>
<span class="sourceLineNo">12996</span> }<a name="line.12996"></a>
<span class="sourceLineNo">12997</span> }<a name="line.12997"></a>
<span class="sourceLineNo">12998</span> } else if (as == 1) {<a name="line.12998"></a>
<span class="sourceLineNo">12999</span> if (it.isOutputDouble()) {<a name="line.12999"></a>
<span class="sourceLineNo">13000</span> while (it.hasNext()) {<a name="line.13000"></a>
<span class="sourceLineNo">13001</span> final double iax = it.aDouble;<a name="line.13001"></a>
<span class="sourceLineNo">13002</span> final double ibx = it.bDouble;<a name="line.13002"></a>
<span class="sourceLineNo">13003</span> byte ox;<a name="line.13003"></a>
<span class="sourceLineNo">13004</span> ox = (byte) toLong(Math.max(iax, ibx));<a name="line.13004"></a>
<span class="sourceLineNo">13005</span> for (int j = 0; j &lt; is; j++) {<a name="line.13005"></a>
<span class="sourceLineNo">13006</span> oai8data[it.oIndex + j] = ox;<a name="line.13006"></a>
<span class="sourceLineNo">13007</span> }<a name="line.13007"></a>
<span class="sourceLineNo">13008</span> }<a name="line.13008"></a>
<span class="sourceLineNo">13009</span> } else {<a name="line.13009"></a>
<span class="sourceLineNo">13010</span> while (it.hasNext()) {<a name="line.13010"></a>
<span class="sourceLineNo">13011</span> final long iax = it.aLong;<a name="line.13011"></a>
<span class="sourceLineNo">13012</span> final long ibx = it.bLong;<a name="line.13012"></a>
<span class="sourceLineNo">13013</span> byte ox;<a name="line.13013"></a>
<span class="sourceLineNo">13014</span> ox = (byte) toLong(Math.max(iax, ibx));<a name="line.13014"></a>
<span class="sourceLineNo">13015</span> for (int j = 0; j &lt; is; j++) {<a name="line.13015"></a>
<span class="sourceLineNo">13016</span> oai8data[it.oIndex + j] = ox;<a name="line.13016"></a>
<span class="sourceLineNo">13017</span> }<a name="line.13017"></a>
<span class="sourceLineNo">13018</span> }<a name="line.13018"></a>
<span class="sourceLineNo">13019</span> }<a name="line.13019"></a>
<span class="sourceLineNo">13020</span> } else {<a name="line.13020"></a>
<span class="sourceLineNo">13021</span> if (it.isOutputDouble()) {<a name="line.13021"></a>
<span class="sourceLineNo">13022</span> while (it.hasNext()) {<a name="line.13022"></a>
<span class="sourceLineNo">13023</span> double iax = it.aDouble;<a name="line.13023"></a>
<span class="sourceLineNo">13024</span> double ibx = it.bDouble;<a name="line.13024"></a>
<span class="sourceLineNo">13025</span> byte ox;<a name="line.13025"></a>
<span class="sourceLineNo">13026</span> ox = (byte) toLong(Math.max(iax, ibx));<a name="line.13026"></a>
<span class="sourceLineNo">13027</span> oai8data[it.oIndex] = ox;<a name="line.13027"></a>
<span class="sourceLineNo">13028</span> for (int j = 1; j &lt; is; j++) {<a name="line.13028"></a>
<span class="sourceLineNo">13029</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.13029"></a>
<span class="sourceLineNo">13030</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.13030"></a>
<span class="sourceLineNo">13031</span> ox = (byte) toLong(Math.max(iax, ibx));<a name="line.13031"></a>
<span class="sourceLineNo">13032</span> oai8data[it.oIndex + j] = ox;<a name="line.13032"></a>
<span class="sourceLineNo">13033</span> }<a name="line.13033"></a>
<span class="sourceLineNo">13034</span> }<a name="line.13034"></a>
<span class="sourceLineNo">13035</span> } else {<a name="line.13035"></a>
<span class="sourceLineNo">13036</span> while (it.hasNext()) {<a name="line.13036"></a>
<span class="sourceLineNo">13037</span> long iax = it.aLong;<a name="line.13037"></a>
<span class="sourceLineNo">13038</span> long ibx = it.bLong;<a name="line.13038"></a>
<span class="sourceLineNo">13039</span> byte ox;<a name="line.13039"></a>
<span class="sourceLineNo">13040</span> ox = (byte) toLong(Math.max(iax, ibx));<a name="line.13040"></a>
<span class="sourceLineNo">13041</span> oai8data[it.oIndex] = ox;<a name="line.13041"></a>
<span class="sourceLineNo">13042</span> for (int j = 1; j &lt; is; j++) {<a name="line.13042"></a>
<span class="sourceLineNo">13043</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.13043"></a>
<span class="sourceLineNo">13044</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.13044"></a>
<span class="sourceLineNo">13045</span> ox = (byte) toLong(Math.max(iax, ibx));<a name="line.13045"></a>
<span class="sourceLineNo">13046</span> oai8data[it.oIndex + j] = ox;<a name="line.13046"></a>
<span class="sourceLineNo">13047</span> }<a name="line.13047"></a>
<span class="sourceLineNo">13048</span> }<a name="line.13048"></a>
<span class="sourceLineNo">13049</span> }<a name="line.13049"></a>
<span class="sourceLineNo">13050</span> }<a name="line.13050"></a>
<span class="sourceLineNo">13051</span> break;<a name="line.13051"></a>
<span class="sourceLineNo">13052</span> case Dataset.ARRAYINT16:<a name="line.13052"></a>
<span class="sourceLineNo">13053</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.13053"></a>
<span class="sourceLineNo">13054</span> if (is == 1) {<a name="line.13054"></a>
<span class="sourceLineNo">13055</span> if (it.isOutputDouble()) {<a name="line.13055"></a>
<span class="sourceLineNo">13056</span> while (it.hasNext()) {<a name="line.13056"></a>
<span class="sourceLineNo">13057</span> final double iax = it.aDouble;<a name="line.13057"></a>
<span class="sourceLineNo">13058</span> final double ibx = it.bDouble;<a name="line.13058"></a>
<span class="sourceLineNo">13059</span> short ox;<a name="line.13059"></a>
<span class="sourceLineNo">13060</span> ox = (short) toLong(Math.max(iax, ibx));<a name="line.13060"></a>
<span class="sourceLineNo">13061</span> oai16data[it.oIndex] = ox;<a name="line.13061"></a>
<span class="sourceLineNo">13062</span> }<a name="line.13062"></a>
<span class="sourceLineNo">13063</span> } else {<a name="line.13063"></a>
<span class="sourceLineNo">13064</span> while (it.hasNext()) {<a name="line.13064"></a>
<span class="sourceLineNo">13065</span> final long iax = it.aLong;<a name="line.13065"></a>
<span class="sourceLineNo">13066</span> final long ibx = it.bLong;<a name="line.13066"></a>
<span class="sourceLineNo">13067</span> short ox;<a name="line.13067"></a>
<span class="sourceLineNo">13068</span> ox = (short) toLong(Math.max(iax, ibx));<a name="line.13068"></a>
<span class="sourceLineNo">13069</span> oai16data[it.oIndex] = ox;<a name="line.13069"></a>
<span class="sourceLineNo">13070</span> }<a name="line.13070"></a>
<span class="sourceLineNo">13071</span> }<a name="line.13071"></a>
<span class="sourceLineNo">13072</span> } else if (as &lt; bs) {<a name="line.13072"></a>
<span class="sourceLineNo">13073</span> if (it.isOutputDouble()) {<a name="line.13073"></a>
<span class="sourceLineNo">13074</span> while (it.hasNext()) {<a name="line.13074"></a>
<span class="sourceLineNo">13075</span> final double iax = it.aDouble;<a name="line.13075"></a>
<span class="sourceLineNo">13076</span> double ibx = it.bDouble;<a name="line.13076"></a>
<span class="sourceLineNo">13077</span> short ox;<a name="line.13077"></a>
<span class="sourceLineNo">13078</span> ox = (short) toLong(Math.max(iax, ibx));<a name="line.13078"></a>
<span class="sourceLineNo">13079</span> oai16data[it.oIndex] = ox;<a name="line.13079"></a>
<span class="sourceLineNo">13080</span> for (int j = 1; j &lt; is; j++) {<a name="line.13080"></a>
<span class="sourceLineNo">13081</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.13081"></a>
<span class="sourceLineNo">13082</span> ox = (short) toLong(Math.max(iax, ibx));<a name="line.13082"></a>
<span class="sourceLineNo">13083</span> oai16data[it.oIndex + j] = ox;<a name="line.13083"></a>
<span class="sourceLineNo">13084</span> }<a name="line.13084"></a>
<span class="sourceLineNo">13085</span> }<a name="line.13085"></a>
<span class="sourceLineNo">13086</span> } else {<a name="line.13086"></a>
<span class="sourceLineNo">13087</span> while (it.hasNext()) {<a name="line.13087"></a>
<span class="sourceLineNo">13088</span> final long iax = it.aLong;<a name="line.13088"></a>
<span class="sourceLineNo">13089</span> long ibx = it.bLong;<a name="line.13089"></a>
<span class="sourceLineNo">13090</span> short ox;<a name="line.13090"></a>
<span class="sourceLineNo">13091</span> ox = (short) toLong(Math.max(iax, ibx));<a name="line.13091"></a>
<span class="sourceLineNo">13092</span> oai16data[it.oIndex] = ox;<a name="line.13092"></a>
<span class="sourceLineNo">13093</span> for (int j = 1; j &lt; is; j++) {<a name="line.13093"></a>
<span class="sourceLineNo">13094</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.13094"></a>
<span class="sourceLineNo">13095</span> ox = (short) toLong(Math.max(iax, ibx));<a name="line.13095"></a>
<span class="sourceLineNo">13096</span> oai16data[it.oIndex + j] = ox;<a name="line.13096"></a>
<span class="sourceLineNo">13097</span> }<a name="line.13097"></a>
<span class="sourceLineNo">13098</span> }<a name="line.13098"></a>
<span class="sourceLineNo">13099</span> }<a name="line.13099"></a>
<span class="sourceLineNo">13100</span> } else if (as &gt; bs) {<a name="line.13100"></a>
<span class="sourceLineNo">13101</span> if (it.isOutputDouble()) {<a name="line.13101"></a>
<span class="sourceLineNo">13102</span> while (it.hasNext()) {<a name="line.13102"></a>
<span class="sourceLineNo">13103</span> double iax = it.aDouble;<a name="line.13103"></a>
<span class="sourceLineNo">13104</span> final double ibx = it.bDouble;<a name="line.13104"></a>
<span class="sourceLineNo">13105</span> short ox;<a name="line.13105"></a>
<span class="sourceLineNo">13106</span> ox = (short) toLong(Math.max(iax, ibx));<a name="line.13106"></a>
<span class="sourceLineNo">13107</span> oai16data[it.oIndex] = ox;<a name="line.13107"></a>
<span class="sourceLineNo">13108</span> for (int j = 1; j &lt; is; j++) {<a name="line.13108"></a>
<span class="sourceLineNo">13109</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.13109"></a>
<span class="sourceLineNo">13110</span> ox = (short) toLong(Math.max(iax, ibx));<a name="line.13110"></a>
<span class="sourceLineNo">13111</span> oai16data[it.oIndex + j] = ox;<a name="line.13111"></a>
<span class="sourceLineNo">13112</span> }<a name="line.13112"></a>
<span class="sourceLineNo">13113</span> }<a name="line.13113"></a>
<span class="sourceLineNo">13114</span> } else {<a name="line.13114"></a>
<span class="sourceLineNo">13115</span> while (it.hasNext()) {<a name="line.13115"></a>
<span class="sourceLineNo">13116</span> long iax = it.aLong;<a name="line.13116"></a>
<span class="sourceLineNo">13117</span> final long ibx = it.bLong;<a name="line.13117"></a>
<span class="sourceLineNo">13118</span> short ox;<a name="line.13118"></a>
<span class="sourceLineNo">13119</span> ox = (short) toLong(Math.max(iax, ibx));<a name="line.13119"></a>
<span class="sourceLineNo">13120</span> oai16data[it.oIndex] = ox;<a name="line.13120"></a>
<span class="sourceLineNo">13121</span> for (int j = 1; j &lt; is; j++) {<a name="line.13121"></a>
<span class="sourceLineNo">13122</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.13122"></a>
<span class="sourceLineNo">13123</span> ox = (short) toLong(Math.max(iax, ibx));<a name="line.13123"></a>
<span class="sourceLineNo">13124</span> oai16data[it.oIndex + j] = ox;<a name="line.13124"></a>
<span class="sourceLineNo">13125</span> }<a name="line.13125"></a>
<span class="sourceLineNo">13126</span> }<a name="line.13126"></a>
<span class="sourceLineNo">13127</span> }<a name="line.13127"></a>
<span class="sourceLineNo">13128</span> } else if (as == 1) {<a name="line.13128"></a>
<span class="sourceLineNo">13129</span> if (it.isOutputDouble()) {<a name="line.13129"></a>
<span class="sourceLineNo">13130</span> while (it.hasNext()) {<a name="line.13130"></a>
<span class="sourceLineNo">13131</span> final double iax = it.aDouble;<a name="line.13131"></a>
<span class="sourceLineNo">13132</span> final double ibx = it.bDouble;<a name="line.13132"></a>
<span class="sourceLineNo">13133</span> short ox;<a name="line.13133"></a>
<span class="sourceLineNo">13134</span> ox = (short) toLong(Math.max(iax, ibx));<a name="line.13134"></a>
<span class="sourceLineNo">13135</span> for (int j = 0; j &lt; is; j++) {<a name="line.13135"></a>
<span class="sourceLineNo">13136</span> oai16data[it.oIndex + j] = ox;<a name="line.13136"></a>
<span class="sourceLineNo">13137</span> }<a name="line.13137"></a>
<span class="sourceLineNo">13138</span> }<a name="line.13138"></a>
<span class="sourceLineNo">13139</span> } else {<a name="line.13139"></a>
<span class="sourceLineNo">13140</span> while (it.hasNext()) {<a name="line.13140"></a>
<span class="sourceLineNo">13141</span> final long iax = it.aLong;<a name="line.13141"></a>
<span class="sourceLineNo">13142</span> final long ibx = it.bLong;<a name="line.13142"></a>
<span class="sourceLineNo">13143</span> short ox;<a name="line.13143"></a>
<span class="sourceLineNo">13144</span> ox = (short) toLong(Math.max(iax, ibx));<a name="line.13144"></a>
<span class="sourceLineNo">13145</span> for (int j = 0; j &lt; is; j++) {<a name="line.13145"></a>
<span class="sourceLineNo">13146</span> oai16data[it.oIndex + j] = ox;<a name="line.13146"></a>
<span class="sourceLineNo">13147</span> }<a name="line.13147"></a>
<span class="sourceLineNo">13148</span> }<a name="line.13148"></a>
<span class="sourceLineNo">13149</span> }<a name="line.13149"></a>
<span class="sourceLineNo">13150</span> } else {<a name="line.13150"></a>
<span class="sourceLineNo">13151</span> if (it.isOutputDouble()) {<a name="line.13151"></a>
<span class="sourceLineNo">13152</span> while (it.hasNext()) {<a name="line.13152"></a>
<span class="sourceLineNo">13153</span> double iax = it.aDouble;<a name="line.13153"></a>
<span class="sourceLineNo">13154</span> double ibx = it.bDouble;<a name="line.13154"></a>
<span class="sourceLineNo">13155</span> short ox;<a name="line.13155"></a>
<span class="sourceLineNo">13156</span> ox = (short) toLong(Math.max(iax, ibx));<a name="line.13156"></a>
<span class="sourceLineNo">13157</span> oai16data[it.oIndex] = ox;<a name="line.13157"></a>
<span class="sourceLineNo">13158</span> for (int j = 1; j &lt; is; j++) {<a name="line.13158"></a>
<span class="sourceLineNo">13159</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.13159"></a>
<span class="sourceLineNo">13160</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.13160"></a>
<span class="sourceLineNo">13161</span> ox = (short) toLong(Math.max(iax, ibx));<a name="line.13161"></a>
<span class="sourceLineNo">13162</span> oai16data[it.oIndex + j] = ox;<a name="line.13162"></a>
<span class="sourceLineNo">13163</span> }<a name="line.13163"></a>
<span class="sourceLineNo">13164</span> }<a name="line.13164"></a>
<span class="sourceLineNo">13165</span> } else {<a name="line.13165"></a>
<span class="sourceLineNo">13166</span> while (it.hasNext()) {<a name="line.13166"></a>
<span class="sourceLineNo">13167</span> long iax = it.aLong;<a name="line.13167"></a>
<span class="sourceLineNo">13168</span> long ibx = it.bLong;<a name="line.13168"></a>
<span class="sourceLineNo">13169</span> short ox;<a name="line.13169"></a>
<span class="sourceLineNo">13170</span> ox = (short) toLong(Math.max(iax, ibx));<a name="line.13170"></a>
<span class="sourceLineNo">13171</span> oai16data[it.oIndex] = ox;<a name="line.13171"></a>
<span class="sourceLineNo">13172</span> for (int j = 1; j &lt; is; j++) {<a name="line.13172"></a>
<span class="sourceLineNo">13173</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.13173"></a>
<span class="sourceLineNo">13174</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.13174"></a>
<span class="sourceLineNo">13175</span> ox = (short) toLong(Math.max(iax, ibx));<a name="line.13175"></a>
<span class="sourceLineNo">13176</span> oai16data[it.oIndex + j] = ox;<a name="line.13176"></a>
<span class="sourceLineNo">13177</span> }<a name="line.13177"></a>
<span class="sourceLineNo">13178</span> }<a name="line.13178"></a>
<span class="sourceLineNo">13179</span> }<a name="line.13179"></a>
<span class="sourceLineNo">13180</span> }<a name="line.13180"></a>
<span class="sourceLineNo">13181</span> break;<a name="line.13181"></a>
<span class="sourceLineNo">13182</span> case Dataset.ARRAYINT64:<a name="line.13182"></a>
<span class="sourceLineNo">13183</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.13183"></a>
<span class="sourceLineNo">13184</span> if (is == 1) {<a name="line.13184"></a>
<span class="sourceLineNo">13185</span> if (it.isOutputDouble()) {<a name="line.13185"></a>
<span class="sourceLineNo">13186</span> while (it.hasNext()) {<a name="line.13186"></a>
<span class="sourceLineNo">13187</span> final double iax = it.aDouble;<a name="line.13187"></a>
<span class="sourceLineNo">13188</span> final double ibx = it.bDouble;<a name="line.13188"></a>
<span class="sourceLineNo">13189</span> long ox;<a name="line.13189"></a>
<span class="sourceLineNo">13190</span> ox = toLong(Math.max(iax, ibx));<a name="line.13190"></a>
<span class="sourceLineNo">13191</span> oai64data[it.oIndex] = ox;<a name="line.13191"></a>
<span class="sourceLineNo">13192</span> }<a name="line.13192"></a>
<span class="sourceLineNo">13193</span> } else {<a name="line.13193"></a>
<span class="sourceLineNo">13194</span> while (it.hasNext()) {<a name="line.13194"></a>
<span class="sourceLineNo">13195</span> final long iax = it.aLong;<a name="line.13195"></a>
<span class="sourceLineNo">13196</span> final long ibx = it.bLong;<a name="line.13196"></a>
<span class="sourceLineNo">13197</span> long ox;<a name="line.13197"></a>
<span class="sourceLineNo">13198</span> ox = toLong(Math.max(iax, ibx));<a name="line.13198"></a>
<span class="sourceLineNo">13199</span> oai64data[it.oIndex] = ox;<a name="line.13199"></a>
<span class="sourceLineNo">13200</span> }<a name="line.13200"></a>
<span class="sourceLineNo">13201</span> }<a name="line.13201"></a>
<span class="sourceLineNo">13202</span> } else if (as &lt; bs) {<a name="line.13202"></a>
<span class="sourceLineNo">13203</span> if (it.isOutputDouble()) {<a name="line.13203"></a>
<span class="sourceLineNo">13204</span> while (it.hasNext()) {<a name="line.13204"></a>
<span class="sourceLineNo">13205</span> final double iax = it.aDouble;<a name="line.13205"></a>
<span class="sourceLineNo">13206</span> double ibx = it.bDouble;<a name="line.13206"></a>
<span class="sourceLineNo">13207</span> long ox;<a name="line.13207"></a>
<span class="sourceLineNo">13208</span> ox = toLong(Math.max(iax, ibx));<a name="line.13208"></a>
<span class="sourceLineNo">13209</span> oai64data[it.oIndex] = ox;<a name="line.13209"></a>
<span class="sourceLineNo">13210</span> for (int j = 1; j &lt; is; j++) {<a name="line.13210"></a>
<span class="sourceLineNo">13211</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.13211"></a>
<span class="sourceLineNo">13212</span> ox = toLong(Math.max(iax, ibx));<a name="line.13212"></a>
<span class="sourceLineNo">13213</span> oai64data[it.oIndex + j] = ox;<a name="line.13213"></a>
<span class="sourceLineNo">13214</span> }<a name="line.13214"></a>
<span class="sourceLineNo">13215</span> }<a name="line.13215"></a>
<span class="sourceLineNo">13216</span> } else {<a name="line.13216"></a>
<span class="sourceLineNo">13217</span> while (it.hasNext()) {<a name="line.13217"></a>
<span class="sourceLineNo">13218</span> final long iax = it.aLong;<a name="line.13218"></a>
<span class="sourceLineNo">13219</span> long ibx = it.bLong;<a name="line.13219"></a>
<span class="sourceLineNo">13220</span> long ox;<a name="line.13220"></a>
<span class="sourceLineNo">13221</span> ox = toLong(Math.max(iax, ibx));<a name="line.13221"></a>
<span class="sourceLineNo">13222</span> oai64data[it.oIndex] = ox;<a name="line.13222"></a>
<span class="sourceLineNo">13223</span> for (int j = 1; j &lt; is; j++) {<a name="line.13223"></a>
<span class="sourceLineNo">13224</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.13224"></a>
<span class="sourceLineNo">13225</span> ox = toLong(Math.max(iax, ibx));<a name="line.13225"></a>
<span class="sourceLineNo">13226</span> oai64data[it.oIndex + j] = ox;<a name="line.13226"></a>
<span class="sourceLineNo">13227</span> }<a name="line.13227"></a>
<span class="sourceLineNo">13228</span> }<a name="line.13228"></a>
<span class="sourceLineNo">13229</span> }<a name="line.13229"></a>
<span class="sourceLineNo">13230</span> } else if (as &gt; bs) {<a name="line.13230"></a>
<span class="sourceLineNo">13231</span> if (it.isOutputDouble()) {<a name="line.13231"></a>
<span class="sourceLineNo">13232</span> while (it.hasNext()) {<a name="line.13232"></a>
<span class="sourceLineNo">13233</span> double iax = it.aDouble;<a name="line.13233"></a>
<span class="sourceLineNo">13234</span> final double ibx = it.bDouble;<a name="line.13234"></a>
<span class="sourceLineNo">13235</span> long ox;<a name="line.13235"></a>
<span class="sourceLineNo">13236</span> ox = toLong(Math.max(iax, ibx));<a name="line.13236"></a>
<span class="sourceLineNo">13237</span> oai64data[it.oIndex] = ox;<a name="line.13237"></a>
<span class="sourceLineNo">13238</span> for (int j = 1; j &lt; is; j++) {<a name="line.13238"></a>
<span class="sourceLineNo">13239</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.13239"></a>
<span class="sourceLineNo">13240</span> ox = toLong(Math.max(iax, ibx));<a name="line.13240"></a>
<span class="sourceLineNo">13241</span> oai64data[it.oIndex + j] = ox;<a name="line.13241"></a>
<span class="sourceLineNo">13242</span> }<a name="line.13242"></a>
<span class="sourceLineNo">13243</span> }<a name="line.13243"></a>
<span class="sourceLineNo">13244</span> } else {<a name="line.13244"></a>
<span class="sourceLineNo">13245</span> while (it.hasNext()) {<a name="line.13245"></a>
<span class="sourceLineNo">13246</span> long iax = it.aLong;<a name="line.13246"></a>
<span class="sourceLineNo">13247</span> final long ibx = it.bLong;<a name="line.13247"></a>
<span class="sourceLineNo">13248</span> long ox;<a name="line.13248"></a>
<span class="sourceLineNo">13249</span> ox = toLong(Math.max(iax, ibx));<a name="line.13249"></a>
<span class="sourceLineNo">13250</span> oai64data[it.oIndex] = ox;<a name="line.13250"></a>
<span class="sourceLineNo">13251</span> for (int j = 1; j &lt; is; j++) {<a name="line.13251"></a>
<span class="sourceLineNo">13252</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.13252"></a>
<span class="sourceLineNo">13253</span> ox = toLong(Math.max(iax, ibx));<a name="line.13253"></a>
<span class="sourceLineNo">13254</span> oai64data[it.oIndex + j] = ox;<a name="line.13254"></a>
<span class="sourceLineNo">13255</span> }<a name="line.13255"></a>
<span class="sourceLineNo">13256</span> }<a name="line.13256"></a>
<span class="sourceLineNo">13257</span> }<a name="line.13257"></a>
<span class="sourceLineNo">13258</span> } else if (as == 1) {<a name="line.13258"></a>
<span class="sourceLineNo">13259</span> if (it.isOutputDouble()) {<a name="line.13259"></a>
<span class="sourceLineNo">13260</span> while (it.hasNext()) {<a name="line.13260"></a>
<span class="sourceLineNo">13261</span> final double iax = it.aDouble;<a name="line.13261"></a>
<span class="sourceLineNo">13262</span> final double ibx = it.bDouble;<a name="line.13262"></a>
<span class="sourceLineNo">13263</span> long ox;<a name="line.13263"></a>
<span class="sourceLineNo">13264</span> ox = toLong(Math.max(iax, ibx));<a name="line.13264"></a>
<span class="sourceLineNo">13265</span> for (int j = 0; j &lt; is; j++) {<a name="line.13265"></a>
<span class="sourceLineNo">13266</span> oai64data[it.oIndex + j] = ox;<a name="line.13266"></a>
<span class="sourceLineNo">13267</span> }<a name="line.13267"></a>
<span class="sourceLineNo">13268</span> }<a name="line.13268"></a>
<span class="sourceLineNo">13269</span> } else {<a name="line.13269"></a>
<span class="sourceLineNo">13270</span> while (it.hasNext()) {<a name="line.13270"></a>
<span class="sourceLineNo">13271</span> final long iax = it.aLong;<a name="line.13271"></a>
<span class="sourceLineNo">13272</span> final long ibx = it.bLong;<a name="line.13272"></a>
<span class="sourceLineNo">13273</span> long ox;<a name="line.13273"></a>
<span class="sourceLineNo">13274</span> ox = toLong(Math.max(iax, ibx));<a name="line.13274"></a>
<span class="sourceLineNo">13275</span> for (int j = 0; j &lt; is; j++) {<a name="line.13275"></a>
<span class="sourceLineNo">13276</span> oai64data[it.oIndex + j] = ox;<a name="line.13276"></a>
<span class="sourceLineNo">13277</span> }<a name="line.13277"></a>
<span class="sourceLineNo">13278</span> }<a name="line.13278"></a>
<span class="sourceLineNo">13279</span> }<a name="line.13279"></a>
<span class="sourceLineNo">13280</span> } else {<a name="line.13280"></a>
<span class="sourceLineNo">13281</span> if (it.isOutputDouble()) {<a name="line.13281"></a>
<span class="sourceLineNo">13282</span> while (it.hasNext()) {<a name="line.13282"></a>
<span class="sourceLineNo">13283</span> double iax = it.aDouble;<a name="line.13283"></a>
<span class="sourceLineNo">13284</span> double ibx = it.bDouble;<a name="line.13284"></a>
<span class="sourceLineNo">13285</span> long ox;<a name="line.13285"></a>
<span class="sourceLineNo">13286</span> ox = toLong(Math.max(iax, ibx));<a name="line.13286"></a>
<span class="sourceLineNo">13287</span> oai64data[it.oIndex] = ox;<a name="line.13287"></a>
<span class="sourceLineNo">13288</span> for (int j = 1; j &lt; is; j++) {<a name="line.13288"></a>
<span class="sourceLineNo">13289</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.13289"></a>
<span class="sourceLineNo">13290</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.13290"></a>
<span class="sourceLineNo">13291</span> ox = toLong(Math.max(iax, ibx));<a name="line.13291"></a>
<span class="sourceLineNo">13292</span> oai64data[it.oIndex + j] = ox;<a name="line.13292"></a>
<span class="sourceLineNo">13293</span> }<a name="line.13293"></a>
<span class="sourceLineNo">13294</span> }<a name="line.13294"></a>
<span class="sourceLineNo">13295</span> } else {<a name="line.13295"></a>
<span class="sourceLineNo">13296</span> while (it.hasNext()) {<a name="line.13296"></a>
<span class="sourceLineNo">13297</span> long iax = it.aLong;<a name="line.13297"></a>
<span class="sourceLineNo">13298</span> long ibx = it.bLong;<a name="line.13298"></a>
<span class="sourceLineNo">13299</span> long ox;<a name="line.13299"></a>
<span class="sourceLineNo">13300</span> ox = toLong(Math.max(iax, ibx));<a name="line.13300"></a>
<span class="sourceLineNo">13301</span> oai64data[it.oIndex] = ox;<a name="line.13301"></a>
<span class="sourceLineNo">13302</span> for (int j = 1; j &lt; is; j++) {<a name="line.13302"></a>
<span class="sourceLineNo">13303</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.13303"></a>
<span class="sourceLineNo">13304</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.13304"></a>
<span class="sourceLineNo">13305</span> ox = toLong(Math.max(iax, ibx));<a name="line.13305"></a>
<span class="sourceLineNo">13306</span> oai64data[it.oIndex + j] = ox;<a name="line.13306"></a>
<span class="sourceLineNo">13307</span> }<a name="line.13307"></a>
<span class="sourceLineNo">13308</span> }<a name="line.13308"></a>
<span class="sourceLineNo">13309</span> }<a name="line.13309"></a>
<span class="sourceLineNo">13310</span> }<a name="line.13310"></a>
<span class="sourceLineNo">13311</span> break;<a name="line.13311"></a>
<span class="sourceLineNo">13312</span> case Dataset.ARRAYINT32:<a name="line.13312"></a>
<span class="sourceLineNo">13313</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.13313"></a>
<span class="sourceLineNo">13314</span> if (is == 1) {<a name="line.13314"></a>
<span class="sourceLineNo">13315</span> if (it.isOutputDouble()) {<a name="line.13315"></a>
<span class="sourceLineNo">13316</span> while (it.hasNext()) {<a name="line.13316"></a>
<span class="sourceLineNo">13317</span> final double iax = it.aDouble;<a name="line.13317"></a>
<span class="sourceLineNo">13318</span> final double ibx = it.bDouble;<a name="line.13318"></a>
<span class="sourceLineNo">13319</span> int ox;<a name="line.13319"></a>
<span class="sourceLineNo">13320</span> ox = (int) toLong(Math.max(iax, ibx));<a name="line.13320"></a>
<span class="sourceLineNo">13321</span> oai32data[it.oIndex] = ox;<a name="line.13321"></a>
<span class="sourceLineNo">13322</span> }<a name="line.13322"></a>
<span class="sourceLineNo">13323</span> } else {<a name="line.13323"></a>
<span class="sourceLineNo">13324</span> while (it.hasNext()) {<a name="line.13324"></a>
<span class="sourceLineNo">13325</span> final long iax = it.aLong;<a name="line.13325"></a>
<span class="sourceLineNo">13326</span> final long ibx = it.bLong;<a name="line.13326"></a>
<span class="sourceLineNo">13327</span> int ox;<a name="line.13327"></a>
<span class="sourceLineNo">13328</span> ox = (int) toLong(Math.max(iax, ibx));<a name="line.13328"></a>
<span class="sourceLineNo">13329</span> oai32data[it.oIndex] = ox;<a name="line.13329"></a>
<span class="sourceLineNo">13330</span> }<a name="line.13330"></a>
<span class="sourceLineNo">13331</span> }<a name="line.13331"></a>
<span class="sourceLineNo">13332</span> } else if (as &lt; bs) {<a name="line.13332"></a>
<span class="sourceLineNo">13333</span> if (it.isOutputDouble()) {<a name="line.13333"></a>
<span class="sourceLineNo">13334</span> while (it.hasNext()) {<a name="line.13334"></a>
<span class="sourceLineNo">13335</span> final double iax = it.aDouble;<a name="line.13335"></a>
<span class="sourceLineNo">13336</span> double ibx = it.bDouble;<a name="line.13336"></a>
<span class="sourceLineNo">13337</span> int ox;<a name="line.13337"></a>
<span class="sourceLineNo">13338</span> ox = (int) toLong(Math.max(iax, ibx));<a name="line.13338"></a>
<span class="sourceLineNo">13339</span> oai32data[it.oIndex] = ox;<a name="line.13339"></a>
<span class="sourceLineNo">13340</span> for (int j = 1; j &lt; is; j++) {<a name="line.13340"></a>
<span class="sourceLineNo">13341</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.13341"></a>
<span class="sourceLineNo">13342</span> ox = (int) toLong(Math.max(iax, ibx));<a name="line.13342"></a>
<span class="sourceLineNo">13343</span> oai32data[it.oIndex + j] = ox;<a name="line.13343"></a>
<span class="sourceLineNo">13344</span> }<a name="line.13344"></a>
<span class="sourceLineNo">13345</span> }<a name="line.13345"></a>
<span class="sourceLineNo">13346</span> } else {<a name="line.13346"></a>
<span class="sourceLineNo">13347</span> while (it.hasNext()) {<a name="line.13347"></a>
<span class="sourceLineNo">13348</span> final long iax = it.aLong;<a name="line.13348"></a>
<span class="sourceLineNo">13349</span> long ibx = it.bLong;<a name="line.13349"></a>
<span class="sourceLineNo">13350</span> int ox;<a name="line.13350"></a>
<span class="sourceLineNo">13351</span> ox = (int) toLong(Math.max(iax, ibx));<a name="line.13351"></a>
<span class="sourceLineNo">13352</span> oai32data[it.oIndex] = ox;<a name="line.13352"></a>
<span class="sourceLineNo">13353</span> for (int j = 1; j &lt; is; j++) {<a name="line.13353"></a>
<span class="sourceLineNo">13354</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.13354"></a>
<span class="sourceLineNo">13355</span> ox = (int) toLong(Math.max(iax, ibx));<a name="line.13355"></a>
<span class="sourceLineNo">13356</span> oai32data[it.oIndex + j] = ox;<a name="line.13356"></a>
<span class="sourceLineNo">13357</span> }<a name="line.13357"></a>
<span class="sourceLineNo">13358</span> }<a name="line.13358"></a>
<span class="sourceLineNo">13359</span> }<a name="line.13359"></a>
<span class="sourceLineNo">13360</span> } else if (as &gt; bs) {<a name="line.13360"></a>
<span class="sourceLineNo">13361</span> if (it.isOutputDouble()) {<a name="line.13361"></a>
<span class="sourceLineNo">13362</span> while (it.hasNext()) {<a name="line.13362"></a>
<span class="sourceLineNo">13363</span> double iax = it.aDouble;<a name="line.13363"></a>
<span class="sourceLineNo">13364</span> final double ibx = it.bDouble;<a name="line.13364"></a>
<span class="sourceLineNo">13365</span> int ox;<a name="line.13365"></a>
<span class="sourceLineNo">13366</span> ox = (int) toLong(Math.max(iax, ibx));<a name="line.13366"></a>
<span class="sourceLineNo">13367</span> oai32data[it.oIndex] = ox;<a name="line.13367"></a>
<span class="sourceLineNo">13368</span> for (int j = 1; j &lt; is; j++) {<a name="line.13368"></a>
<span class="sourceLineNo">13369</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.13369"></a>
<span class="sourceLineNo">13370</span> ox = (int) toLong(Math.max(iax, ibx));<a name="line.13370"></a>
<span class="sourceLineNo">13371</span> oai32data[it.oIndex + j] = ox;<a name="line.13371"></a>
<span class="sourceLineNo">13372</span> }<a name="line.13372"></a>
<span class="sourceLineNo">13373</span> }<a name="line.13373"></a>
<span class="sourceLineNo">13374</span> } else {<a name="line.13374"></a>
<span class="sourceLineNo">13375</span> while (it.hasNext()) {<a name="line.13375"></a>
<span class="sourceLineNo">13376</span> long iax = it.aLong;<a name="line.13376"></a>
<span class="sourceLineNo">13377</span> final long ibx = it.bLong;<a name="line.13377"></a>
<span class="sourceLineNo">13378</span> int ox;<a name="line.13378"></a>
<span class="sourceLineNo">13379</span> ox = (int) toLong(Math.max(iax, ibx));<a name="line.13379"></a>
<span class="sourceLineNo">13380</span> oai32data[it.oIndex] = ox;<a name="line.13380"></a>
<span class="sourceLineNo">13381</span> for (int j = 1; j &lt; is; j++) {<a name="line.13381"></a>
<span class="sourceLineNo">13382</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.13382"></a>
<span class="sourceLineNo">13383</span> ox = (int) toLong(Math.max(iax, ibx));<a name="line.13383"></a>
<span class="sourceLineNo">13384</span> oai32data[it.oIndex + j] = ox;<a name="line.13384"></a>
<span class="sourceLineNo">13385</span> }<a name="line.13385"></a>
<span class="sourceLineNo">13386</span> }<a name="line.13386"></a>
<span class="sourceLineNo">13387</span> }<a name="line.13387"></a>
<span class="sourceLineNo">13388</span> } else if (as == 1) {<a name="line.13388"></a>
<span class="sourceLineNo">13389</span> if (it.isOutputDouble()) {<a name="line.13389"></a>
<span class="sourceLineNo">13390</span> while (it.hasNext()) {<a name="line.13390"></a>
<span class="sourceLineNo">13391</span> final double iax = it.aDouble;<a name="line.13391"></a>
<span class="sourceLineNo">13392</span> final double ibx = it.bDouble;<a name="line.13392"></a>
<span class="sourceLineNo">13393</span> int ox;<a name="line.13393"></a>
<span class="sourceLineNo">13394</span> ox = (int) toLong(Math.max(iax, ibx));<a name="line.13394"></a>
<span class="sourceLineNo">13395</span> for (int j = 0; j &lt; is; j++) {<a name="line.13395"></a>
<span class="sourceLineNo">13396</span> oai32data[it.oIndex + j] = ox;<a name="line.13396"></a>
<span class="sourceLineNo">13397</span> }<a name="line.13397"></a>
<span class="sourceLineNo">13398</span> }<a name="line.13398"></a>
<span class="sourceLineNo">13399</span> } else {<a name="line.13399"></a>
<span class="sourceLineNo">13400</span> while (it.hasNext()) {<a name="line.13400"></a>
<span class="sourceLineNo">13401</span> final long iax = it.aLong;<a name="line.13401"></a>
<span class="sourceLineNo">13402</span> final long ibx = it.bLong;<a name="line.13402"></a>
<span class="sourceLineNo">13403</span> int ox;<a name="line.13403"></a>
<span class="sourceLineNo">13404</span> ox = (int) toLong(Math.max(iax, ibx));<a name="line.13404"></a>
<span class="sourceLineNo">13405</span> for (int j = 0; j &lt; is; j++) {<a name="line.13405"></a>
<span class="sourceLineNo">13406</span> oai32data[it.oIndex + j] = ox;<a name="line.13406"></a>
<span class="sourceLineNo">13407</span> }<a name="line.13407"></a>
<span class="sourceLineNo">13408</span> }<a name="line.13408"></a>
<span class="sourceLineNo">13409</span> }<a name="line.13409"></a>
<span class="sourceLineNo">13410</span> } else {<a name="line.13410"></a>
<span class="sourceLineNo">13411</span> if (it.isOutputDouble()) {<a name="line.13411"></a>
<span class="sourceLineNo">13412</span> while (it.hasNext()) {<a name="line.13412"></a>
<span class="sourceLineNo">13413</span> double iax = it.aDouble;<a name="line.13413"></a>
<span class="sourceLineNo">13414</span> double ibx = it.bDouble;<a name="line.13414"></a>
<span class="sourceLineNo">13415</span> int ox;<a name="line.13415"></a>
<span class="sourceLineNo">13416</span> ox = (int) toLong(Math.max(iax, ibx));<a name="line.13416"></a>
<span class="sourceLineNo">13417</span> oai32data[it.oIndex] = ox;<a name="line.13417"></a>
<span class="sourceLineNo">13418</span> for (int j = 1; j &lt; is; j++) {<a name="line.13418"></a>
<span class="sourceLineNo">13419</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.13419"></a>
<span class="sourceLineNo">13420</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.13420"></a>
<span class="sourceLineNo">13421</span> ox = (int) toLong(Math.max(iax, ibx));<a name="line.13421"></a>
<span class="sourceLineNo">13422</span> oai32data[it.oIndex + j] = ox;<a name="line.13422"></a>
<span class="sourceLineNo">13423</span> }<a name="line.13423"></a>
<span class="sourceLineNo">13424</span> }<a name="line.13424"></a>
<span class="sourceLineNo">13425</span> } else {<a name="line.13425"></a>
<span class="sourceLineNo">13426</span> while (it.hasNext()) {<a name="line.13426"></a>
<span class="sourceLineNo">13427</span> long iax = it.aLong;<a name="line.13427"></a>
<span class="sourceLineNo">13428</span> long ibx = it.bLong;<a name="line.13428"></a>
<span class="sourceLineNo">13429</span> int ox;<a name="line.13429"></a>
<span class="sourceLineNo">13430</span> ox = (int) toLong(Math.max(iax, ibx));<a name="line.13430"></a>
<span class="sourceLineNo">13431</span> oai32data[it.oIndex] = ox;<a name="line.13431"></a>
<span class="sourceLineNo">13432</span> for (int j = 1; j &lt; is; j++) {<a name="line.13432"></a>
<span class="sourceLineNo">13433</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.13433"></a>
<span class="sourceLineNo">13434</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.13434"></a>
<span class="sourceLineNo">13435</span> ox = (int) toLong(Math.max(iax, ibx));<a name="line.13435"></a>
<span class="sourceLineNo">13436</span> oai32data[it.oIndex + j] = ox;<a name="line.13436"></a>
<span class="sourceLineNo">13437</span> }<a name="line.13437"></a>
<span class="sourceLineNo">13438</span> }<a name="line.13438"></a>
<span class="sourceLineNo">13439</span> }<a name="line.13439"></a>
<span class="sourceLineNo">13440</span> }<a name="line.13440"></a>
<span class="sourceLineNo">13441</span> break;<a name="line.13441"></a>
<span class="sourceLineNo">13442</span> case Dataset.FLOAT32:<a name="line.13442"></a>
<span class="sourceLineNo">13443</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.13443"></a>
<span class="sourceLineNo">13444</span> if (it.isOutputDouble()) {<a name="line.13444"></a>
<span class="sourceLineNo">13445</span> while (it.hasNext()) {<a name="line.13445"></a>
<span class="sourceLineNo">13446</span> final double iax = it.aDouble;<a name="line.13446"></a>
<span class="sourceLineNo">13447</span> final double ibx = it.bDouble;<a name="line.13447"></a>
<span class="sourceLineNo">13448</span> float ox;<a name="line.13448"></a>
<span class="sourceLineNo">13449</span> ox = (float) (Math.max(iax, ibx));<a name="line.13449"></a>
<span class="sourceLineNo">13450</span> of32data[it.oIndex] = ox;<a name="line.13450"></a>
<span class="sourceLineNo">13451</span> }<a name="line.13451"></a>
<span class="sourceLineNo">13452</span> } else {<a name="line.13452"></a>
<span class="sourceLineNo">13453</span> while (it.hasNext()) {<a name="line.13453"></a>
<span class="sourceLineNo">13454</span> final long iax = it.aLong;<a name="line.13454"></a>
<span class="sourceLineNo">13455</span> final long ibx = it.bLong;<a name="line.13455"></a>
<span class="sourceLineNo">13456</span> float ox;<a name="line.13456"></a>
<span class="sourceLineNo">13457</span> ox = (float) (Math.max(iax, ibx));<a name="line.13457"></a>
<span class="sourceLineNo">13458</span> of32data[it.oIndex] = ox;<a name="line.13458"></a>
<span class="sourceLineNo">13459</span> }<a name="line.13459"></a>
<span class="sourceLineNo">13460</span> }<a name="line.13460"></a>
<span class="sourceLineNo">13461</span> break;<a name="line.13461"></a>
<span class="sourceLineNo">13462</span> case Dataset.FLOAT64:<a name="line.13462"></a>
<span class="sourceLineNo">13463</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.13463"></a>
<span class="sourceLineNo">13464</span> if (it.isOutputDouble()) {<a name="line.13464"></a>
<span class="sourceLineNo">13465</span> while (it.hasNext()) {<a name="line.13465"></a>
<span class="sourceLineNo">13466</span> final double iax = it.aDouble;<a name="line.13466"></a>
<span class="sourceLineNo">13467</span> final double ibx = it.bDouble;<a name="line.13467"></a>
<span class="sourceLineNo">13468</span> double ox;<a name="line.13468"></a>
<span class="sourceLineNo">13469</span> ox = (Math.max(iax, ibx));<a name="line.13469"></a>
<span class="sourceLineNo">13470</span> of64data[it.oIndex] = ox;<a name="line.13470"></a>
<span class="sourceLineNo">13471</span> }<a name="line.13471"></a>
<span class="sourceLineNo">13472</span> } else {<a name="line.13472"></a>
<span class="sourceLineNo">13473</span> while (it.hasNext()) {<a name="line.13473"></a>
<span class="sourceLineNo">13474</span> final long iax = it.aLong;<a name="line.13474"></a>
<span class="sourceLineNo">13475</span> final long ibx = it.bLong;<a name="line.13475"></a>
<span class="sourceLineNo">13476</span> double ox;<a name="line.13476"></a>
<span class="sourceLineNo">13477</span> ox = (Math.max(iax, ibx));<a name="line.13477"></a>
<span class="sourceLineNo">13478</span> of64data[it.oIndex] = ox;<a name="line.13478"></a>
<span class="sourceLineNo">13479</span> }<a name="line.13479"></a>
<span class="sourceLineNo">13480</span> }<a name="line.13480"></a>
<span class="sourceLineNo">13481</span> break;<a name="line.13481"></a>
<span class="sourceLineNo">13482</span> case Dataset.ARRAYFLOAT32:<a name="line.13482"></a>
<span class="sourceLineNo">13483</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.13483"></a>
<span class="sourceLineNo">13484</span> if (is == 1) {<a name="line.13484"></a>
<span class="sourceLineNo">13485</span> if (it.isOutputDouble()) {<a name="line.13485"></a>
<span class="sourceLineNo">13486</span> while (it.hasNext()) {<a name="line.13486"></a>
<span class="sourceLineNo">13487</span> final double iax = it.aDouble;<a name="line.13487"></a>
<span class="sourceLineNo">13488</span> final double ibx = it.bDouble;<a name="line.13488"></a>
<span class="sourceLineNo">13489</span> float ox;<a name="line.13489"></a>
<span class="sourceLineNo">13490</span> ox = (float) (Math.max(iax, ibx));<a name="line.13490"></a>
<span class="sourceLineNo">13491</span> oaf32data[it.oIndex] = ox;<a name="line.13491"></a>
<span class="sourceLineNo">13492</span> }<a name="line.13492"></a>
<span class="sourceLineNo">13493</span> } else {<a name="line.13493"></a>
<span class="sourceLineNo">13494</span> while (it.hasNext()) {<a name="line.13494"></a>
<span class="sourceLineNo">13495</span> final long iax = it.aLong;<a name="line.13495"></a>
<span class="sourceLineNo">13496</span> final long ibx = it.bLong;<a name="line.13496"></a>
<span class="sourceLineNo">13497</span> float ox;<a name="line.13497"></a>
<span class="sourceLineNo">13498</span> ox = (float) (Math.max(iax, ibx));<a name="line.13498"></a>
<span class="sourceLineNo">13499</span> oaf32data[it.oIndex] = ox;<a name="line.13499"></a>
<span class="sourceLineNo">13500</span> }<a name="line.13500"></a>
<span class="sourceLineNo">13501</span> }<a name="line.13501"></a>
<span class="sourceLineNo">13502</span> } else if (as &lt; bs) {<a name="line.13502"></a>
<span class="sourceLineNo">13503</span> if (it.isOutputDouble()) {<a name="line.13503"></a>
<span class="sourceLineNo">13504</span> while (it.hasNext()) {<a name="line.13504"></a>
<span class="sourceLineNo">13505</span> final double iax = it.aDouble;<a name="line.13505"></a>
<span class="sourceLineNo">13506</span> double ibx = it.bDouble;<a name="line.13506"></a>
<span class="sourceLineNo">13507</span> float ox;<a name="line.13507"></a>
<span class="sourceLineNo">13508</span> ox = (float) (Math.max(iax, ibx));<a name="line.13508"></a>
<span class="sourceLineNo">13509</span> oaf32data[it.oIndex] = ox;<a name="line.13509"></a>
<span class="sourceLineNo">13510</span> for (int j = 1; j &lt; is; j++) {<a name="line.13510"></a>
<span class="sourceLineNo">13511</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.13511"></a>
<span class="sourceLineNo">13512</span> ox = (float) (Math.max(iax, ibx));<a name="line.13512"></a>
<span class="sourceLineNo">13513</span> oaf32data[it.oIndex + j] = ox;<a name="line.13513"></a>
<span class="sourceLineNo">13514</span> }<a name="line.13514"></a>
<span class="sourceLineNo">13515</span> }<a name="line.13515"></a>
<span class="sourceLineNo">13516</span> } else {<a name="line.13516"></a>
<span class="sourceLineNo">13517</span> while (it.hasNext()) {<a name="line.13517"></a>
<span class="sourceLineNo">13518</span> final long iax = it.aLong;<a name="line.13518"></a>
<span class="sourceLineNo">13519</span> long ibx = it.bLong;<a name="line.13519"></a>
<span class="sourceLineNo">13520</span> float ox;<a name="line.13520"></a>
<span class="sourceLineNo">13521</span> ox = (float) (Math.max(iax, ibx));<a name="line.13521"></a>
<span class="sourceLineNo">13522</span> oaf32data[it.oIndex] = ox;<a name="line.13522"></a>
<span class="sourceLineNo">13523</span> for (int j = 1; j &lt; is; j++) {<a name="line.13523"></a>
<span class="sourceLineNo">13524</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.13524"></a>
<span class="sourceLineNo">13525</span> ox = (float) (Math.max(iax, ibx));<a name="line.13525"></a>
<span class="sourceLineNo">13526</span> oaf32data[it.oIndex + j] = ox;<a name="line.13526"></a>
<span class="sourceLineNo">13527</span> }<a name="line.13527"></a>
<span class="sourceLineNo">13528</span> }<a name="line.13528"></a>
<span class="sourceLineNo">13529</span> }<a name="line.13529"></a>
<span class="sourceLineNo">13530</span> } else if (as &gt; bs) {<a name="line.13530"></a>
<span class="sourceLineNo">13531</span> if (it.isOutputDouble()) {<a name="line.13531"></a>
<span class="sourceLineNo">13532</span> while (it.hasNext()) {<a name="line.13532"></a>
<span class="sourceLineNo">13533</span> double iax = it.aDouble;<a name="line.13533"></a>
<span class="sourceLineNo">13534</span> final double ibx = it.bDouble;<a name="line.13534"></a>
<span class="sourceLineNo">13535</span> float ox;<a name="line.13535"></a>
<span class="sourceLineNo">13536</span> ox = (float) (Math.max(iax, ibx));<a name="line.13536"></a>
<span class="sourceLineNo">13537</span> oaf32data[it.oIndex] = ox;<a name="line.13537"></a>
<span class="sourceLineNo">13538</span> for (int j = 1; j &lt; is; j++) {<a name="line.13538"></a>
<span class="sourceLineNo">13539</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.13539"></a>
<span class="sourceLineNo">13540</span> ox = (float) (Math.max(iax, ibx));<a name="line.13540"></a>
<span class="sourceLineNo">13541</span> oaf32data[it.oIndex + j] = ox;<a name="line.13541"></a>
<span class="sourceLineNo">13542</span> }<a name="line.13542"></a>
<span class="sourceLineNo">13543</span> }<a name="line.13543"></a>
<span class="sourceLineNo">13544</span> } else {<a name="line.13544"></a>
<span class="sourceLineNo">13545</span> while (it.hasNext()) {<a name="line.13545"></a>
<span class="sourceLineNo">13546</span> long iax = it.aLong;<a name="line.13546"></a>
<span class="sourceLineNo">13547</span> final long ibx = it.bLong;<a name="line.13547"></a>
<span class="sourceLineNo">13548</span> float ox;<a name="line.13548"></a>
<span class="sourceLineNo">13549</span> ox = (float) (Math.max(iax, ibx));<a name="line.13549"></a>
<span class="sourceLineNo">13550</span> oaf32data[it.oIndex] = ox;<a name="line.13550"></a>
<span class="sourceLineNo">13551</span> for (int j = 1; j &lt; is; j++) {<a name="line.13551"></a>
<span class="sourceLineNo">13552</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.13552"></a>
<span class="sourceLineNo">13553</span> ox = (float) (Math.max(iax, ibx));<a name="line.13553"></a>
<span class="sourceLineNo">13554</span> oaf32data[it.oIndex + j] = ox;<a name="line.13554"></a>
<span class="sourceLineNo">13555</span> }<a name="line.13555"></a>
<span class="sourceLineNo">13556</span> }<a name="line.13556"></a>
<span class="sourceLineNo">13557</span> }<a name="line.13557"></a>
<span class="sourceLineNo">13558</span> } else if (as == 1) {<a name="line.13558"></a>
<span class="sourceLineNo">13559</span> if (it.isOutputDouble()) {<a name="line.13559"></a>
<span class="sourceLineNo">13560</span> while (it.hasNext()) {<a name="line.13560"></a>
<span class="sourceLineNo">13561</span> final double iax = it.aDouble;<a name="line.13561"></a>
<span class="sourceLineNo">13562</span> final double ibx = it.bDouble;<a name="line.13562"></a>
<span class="sourceLineNo">13563</span> float ox;<a name="line.13563"></a>
<span class="sourceLineNo">13564</span> ox = (float) (Math.max(iax, ibx));<a name="line.13564"></a>
<span class="sourceLineNo">13565</span> for (int j = 0; j &lt; is; j++) {<a name="line.13565"></a>
<span class="sourceLineNo">13566</span> oaf32data[it.oIndex + j] = ox;<a name="line.13566"></a>
<span class="sourceLineNo">13567</span> }<a name="line.13567"></a>
<span class="sourceLineNo">13568</span> }<a name="line.13568"></a>
<span class="sourceLineNo">13569</span> } else {<a name="line.13569"></a>
<span class="sourceLineNo">13570</span> while (it.hasNext()) {<a name="line.13570"></a>
<span class="sourceLineNo">13571</span> final long iax = it.aLong;<a name="line.13571"></a>
<span class="sourceLineNo">13572</span> final long ibx = it.bLong;<a name="line.13572"></a>
<span class="sourceLineNo">13573</span> float ox;<a name="line.13573"></a>
<span class="sourceLineNo">13574</span> ox = (float) (Math.max(iax, ibx));<a name="line.13574"></a>
<span class="sourceLineNo">13575</span> for (int j = 0; j &lt; is; j++) {<a name="line.13575"></a>
<span class="sourceLineNo">13576</span> oaf32data[it.oIndex + j] = ox;<a name="line.13576"></a>
<span class="sourceLineNo">13577</span> }<a name="line.13577"></a>
<span class="sourceLineNo">13578</span> }<a name="line.13578"></a>
<span class="sourceLineNo">13579</span> }<a name="line.13579"></a>
<span class="sourceLineNo">13580</span> } else {<a name="line.13580"></a>
<span class="sourceLineNo">13581</span> if (it.isOutputDouble()) {<a name="line.13581"></a>
<span class="sourceLineNo">13582</span> while (it.hasNext()) {<a name="line.13582"></a>
<span class="sourceLineNo">13583</span> double iax = it.aDouble;<a name="line.13583"></a>
<span class="sourceLineNo">13584</span> double ibx = it.bDouble;<a name="line.13584"></a>
<span class="sourceLineNo">13585</span> float ox;<a name="line.13585"></a>
<span class="sourceLineNo">13586</span> ox = (float) (Math.max(iax, ibx));<a name="line.13586"></a>
<span class="sourceLineNo">13587</span> oaf32data[it.oIndex] = ox;<a name="line.13587"></a>
<span class="sourceLineNo">13588</span> for (int j = 1; j &lt; is; j++) {<a name="line.13588"></a>
<span class="sourceLineNo">13589</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.13589"></a>
<span class="sourceLineNo">13590</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.13590"></a>
<span class="sourceLineNo">13591</span> ox = (float) (Math.max(iax, ibx));<a name="line.13591"></a>
<span class="sourceLineNo">13592</span> oaf32data[it.oIndex + j] = ox;<a name="line.13592"></a>
<span class="sourceLineNo">13593</span> }<a name="line.13593"></a>
<span class="sourceLineNo">13594</span> }<a name="line.13594"></a>
<span class="sourceLineNo">13595</span> } else {<a name="line.13595"></a>
<span class="sourceLineNo">13596</span> while (it.hasNext()) {<a name="line.13596"></a>
<span class="sourceLineNo">13597</span> long iax = it.aLong;<a name="line.13597"></a>
<span class="sourceLineNo">13598</span> long ibx = it.bLong;<a name="line.13598"></a>
<span class="sourceLineNo">13599</span> float ox;<a name="line.13599"></a>
<span class="sourceLineNo">13600</span> ox = (float) (Math.max(iax, ibx));<a name="line.13600"></a>
<span class="sourceLineNo">13601</span> oaf32data[it.oIndex] = ox;<a name="line.13601"></a>
<span class="sourceLineNo">13602</span> for (int j = 1; j &lt; is; j++) {<a name="line.13602"></a>
<span class="sourceLineNo">13603</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.13603"></a>
<span class="sourceLineNo">13604</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.13604"></a>
<span class="sourceLineNo">13605</span> ox = (float) (Math.max(iax, ibx));<a name="line.13605"></a>
<span class="sourceLineNo">13606</span> oaf32data[it.oIndex + j] = ox;<a name="line.13606"></a>
<span class="sourceLineNo">13607</span> }<a name="line.13607"></a>
<span class="sourceLineNo">13608</span> }<a name="line.13608"></a>
<span class="sourceLineNo">13609</span> }<a name="line.13609"></a>
<span class="sourceLineNo">13610</span> }<a name="line.13610"></a>
<span class="sourceLineNo">13611</span> break;<a name="line.13611"></a>
<span class="sourceLineNo">13612</span> case Dataset.ARRAYFLOAT64:<a name="line.13612"></a>
<span class="sourceLineNo">13613</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.13613"></a>
<span class="sourceLineNo">13614</span> if (is == 1) {<a name="line.13614"></a>
<span class="sourceLineNo">13615</span> if (it.isOutputDouble()) {<a name="line.13615"></a>
<span class="sourceLineNo">13616</span> while (it.hasNext()) {<a name="line.13616"></a>
<span class="sourceLineNo">13617</span> final double iax = it.aDouble;<a name="line.13617"></a>
<span class="sourceLineNo">13618</span> final double ibx = it.bDouble;<a name="line.13618"></a>
<span class="sourceLineNo">13619</span> double ox;<a name="line.13619"></a>
<span class="sourceLineNo">13620</span> ox = (Math.max(iax, ibx));<a name="line.13620"></a>
<span class="sourceLineNo">13621</span> oaf64data[it.oIndex] = ox;<a name="line.13621"></a>
<span class="sourceLineNo">13622</span> }<a name="line.13622"></a>
<span class="sourceLineNo">13623</span> } else {<a name="line.13623"></a>
<span class="sourceLineNo">13624</span> while (it.hasNext()) {<a name="line.13624"></a>
<span class="sourceLineNo">13625</span> final long iax = it.aLong;<a name="line.13625"></a>
<span class="sourceLineNo">13626</span> final long ibx = it.bLong;<a name="line.13626"></a>
<span class="sourceLineNo">13627</span> double ox;<a name="line.13627"></a>
<span class="sourceLineNo">13628</span> ox = (Math.max(iax, ibx));<a name="line.13628"></a>
<span class="sourceLineNo">13629</span> oaf64data[it.oIndex] = ox;<a name="line.13629"></a>
<span class="sourceLineNo">13630</span> }<a name="line.13630"></a>
<span class="sourceLineNo">13631</span> }<a name="line.13631"></a>
<span class="sourceLineNo">13632</span> } else if (as &lt; bs) {<a name="line.13632"></a>
<span class="sourceLineNo">13633</span> if (it.isOutputDouble()) {<a name="line.13633"></a>
<span class="sourceLineNo">13634</span> while (it.hasNext()) {<a name="line.13634"></a>
<span class="sourceLineNo">13635</span> final double iax = it.aDouble;<a name="line.13635"></a>
<span class="sourceLineNo">13636</span> double ibx = it.bDouble;<a name="line.13636"></a>
<span class="sourceLineNo">13637</span> double ox;<a name="line.13637"></a>
<span class="sourceLineNo">13638</span> ox = (Math.max(iax, ibx));<a name="line.13638"></a>
<span class="sourceLineNo">13639</span> oaf64data[it.oIndex] = ox;<a name="line.13639"></a>
<span class="sourceLineNo">13640</span> for (int j = 1; j &lt; is; j++) {<a name="line.13640"></a>
<span class="sourceLineNo">13641</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.13641"></a>
<span class="sourceLineNo">13642</span> ox = (Math.max(iax, ibx));<a name="line.13642"></a>
<span class="sourceLineNo">13643</span> oaf64data[it.oIndex + j] = ox;<a name="line.13643"></a>
<span class="sourceLineNo">13644</span> }<a name="line.13644"></a>
<span class="sourceLineNo">13645</span> }<a name="line.13645"></a>
<span class="sourceLineNo">13646</span> } else {<a name="line.13646"></a>
<span class="sourceLineNo">13647</span> while (it.hasNext()) {<a name="line.13647"></a>
<span class="sourceLineNo">13648</span> final long iax = it.aLong;<a name="line.13648"></a>
<span class="sourceLineNo">13649</span> long ibx = it.bLong;<a name="line.13649"></a>
<span class="sourceLineNo">13650</span> double ox;<a name="line.13650"></a>
<span class="sourceLineNo">13651</span> ox = (Math.max(iax, ibx));<a name="line.13651"></a>
<span class="sourceLineNo">13652</span> oaf64data[it.oIndex] = ox;<a name="line.13652"></a>
<span class="sourceLineNo">13653</span> for (int j = 1; j &lt; is; j++) {<a name="line.13653"></a>
<span class="sourceLineNo">13654</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.13654"></a>
<span class="sourceLineNo">13655</span> ox = (Math.max(iax, ibx));<a name="line.13655"></a>
<span class="sourceLineNo">13656</span> oaf64data[it.oIndex + j] = ox;<a name="line.13656"></a>
<span class="sourceLineNo">13657</span> }<a name="line.13657"></a>
<span class="sourceLineNo">13658</span> }<a name="line.13658"></a>
<span class="sourceLineNo">13659</span> }<a name="line.13659"></a>
<span class="sourceLineNo">13660</span> } else if (as &gt; bs) {<a name="line.13660"></a>
<span class="sourceLineNo">13661</span> if (it.isOutputDouble()) {<a name="line.13661"></a>
<span class="sourceLineNo">13662</span> while (it.hasNext()) {<a name="line.13662"></a>
<span class="sourceLineNo">13663</span> double iax = it.aDouble;<a name="line.13663"></a>
<span class="sourceLineNo">13664</span> final double ibx = it.bDouble;<a name="line.13664"></a>
<span class="sourceLineNo">13665</span> double ox;<a name="line.13665"></a>
<span class="sourceLineNo">13666</span> ox = (Math.max(iax, ibx));<a name="line.13666"></a>
<span class="sourceLineNo">13667</span> oaf64data[it.oIndex] = ox;<a name="line.13667"></a>
<span class="sourceLineNo">13668</span> for (int j = 1; j &lt; is; j++) {<a name="line.13668"></a>
<span class="sourceLineNo">13669</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.13669"></a>
<span class="sourceLineNo">13670</span> ox = (Math.max(iax, ibx));<a name="line.13670"></a>
<span class="sourceLineNo">13671</span> oaf64data[it.oIndex + j] = ox;<a name="line.13671"></a>
<span class="sourceLineNo">13672</span> }<a name="line.13672"></a>
<span class="sourceLineNo">13673</span> }<a name="line.13673"></a>
<span class="sourceLineNo">13674</span> } else {<a name="line.13674"></a>
<span class="sourceLineNo">13675</span> while (it.hasNext()) {<a name="line.13675"></a>
<span class="sourceLineNo">13676</span> long iax = it.aLong;<a name="line.13676"></a>
<span class="sourceLineNo">13677</span> final long ibx = it.bLong;<a name="line.13677"></a>
<span class="sourceLineNo">13678</span> double ox;<a name="line.13678"></a>
<span class="sourceLineNo">13679</span> ox = (Math.max(iax, ibx));<a name="line.13679"></a>
<span class="sourceLineNo">13680</span> oaf64data[it.oIndex] = ox;<a name="line.13680"></a>
<span class="sourceLineNo">13681</span> for (int j = 1; j &lt; is; j++) {<a name="line.13681"></a>
<span class="sourceLineNo">13682</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.13682"></a>
<span class="sourceLineNo">13683</span> ox = (Math.max(iax, ibx));<a name="line.13683"></a>
<span class="sourceLineNo">13684</span> oaf64data[it.oIndex + j] = ox;<a name="line.13684"></a>
<span class="sourceLineNo">13685</span> }<a name="line.13685"></a>
<span class="sourceLineNo">13686</span> }<a name="line.13686"></a>
<span class="sourceLineNo">13687</span> }<a name="line.13687"></a>
<span class="sourceLineNo">13688</span> } else if (as == 1) {<a name="line.13688"></a>
<span class="sourceLineNo">13689</span> if (it.isOutputDouble()) {<a name="line.13689"></a>
<span class="sourceLineNo">13690</span> while (it.hasNext()) {<a name="line.13690"></a>
<span class="sourceLineNo">13691</span> final double iax = it.aDouble;<a name="line.13691"></a>
<span class="sourceLineNo">13692</span> final double ibx = it.bDouble;<a name="line.13692"></a>
<span class="sourceLineNo">13693</span> double ox;<a name="line.13693"></a>
<span class="sourceLineNo">13694</span> ox = (Math.max(iax, ibx));<a name="line.13694"></a>
<span class="sourceLineNo">13695</span> for (int j = 0; j &lt; is; j++) {<a name="line.13695"></a>
<span class="sourceLineNo">13696</span> oaf64data[it.oIndex + j] = ox;<a name="line.13696"></a>
<span class="sourceLineNo">13697</span> }<a name="line.13697"></a>
<span class="sourceLineNo">13698</span> }<a name="line.13698"></a>
<span class="sourceLineNo">13699</span> } else {<a name="line.13699"></a>
<span class="sourceLineNo">13700</span> while (it.hasNext()) {<a name="line.13700"></a>
<span class="sourceLineNo">13701</span> final long iax = it.aLong;<a name="line.13701"></a>
<span class="sourceLineNo">13702</span> final long ibx = it.bLong;<a name="line.13702"></a>
<span class="sourceLineNo">13703</span> double ox;<a name="line.13703"></a>
<span class="sourceLineNo">13704</span> ox = (Math.max(iax, ibx));<a name="line.13704"></a>
<span class="sourceLineNo">13705</span> for (int j = 0; j &lt; is; j++) {<a name="line.13705"></a>
<span class="sourceLineNo">13706</span> oaf64data[it.oIndex + j] = ox;<a name="line.13706"></a>
<span class="sourceLineNo">13707</span> }<a name="line.13707"></a>
<span class="sourceLineNo">13708</span> }<a name="line.13708"></a>
<span class="sourceLineNo">13709</span> }<a name="line.13709"></a>
<span class="sourceLineNo">13710</span> } else {<a name="line.13710"></a>
<span class="sourceLineNo">13711</span> if (it.isOutputDouble()) {<a name="line.13711"></a>
<span class="sourceLineNo">13712</span> while (it.hasNext()) {<a name="line.13712"></a>
<span class="sourceLineNo">13713</span> double iax = it.aDouble;<a name="line.13713"></a>
<span class="sourceLineNo">13714</span> double ibx = it.bDouble;<a name="line.13714"></a>
<span class="sourceLineNo">13715</span> double ox;<a name="line.13715"></a>
<span class="sourceLineNo">13716</span> ox = (Math.max(iax, ibx));<a name="line.13716"></a>
<span class="sourceLineNo">13717</span> oaf64data[it.oIndex] = ox;<a name="line.13717"></a>
<span class="sourceLineNo">13718</span> for (int j = 1; j &lt; is; j++) {<a name="line.13718"></a>
<span class="sourceLineNo">13719</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.13719"></a>
<span class="sourceLineNo">13720</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.13720"></a>
<span class="sourceLineNo">13721</span> ox = (Math.max(iax, ibx));<a name="line.13721"></a>
<span class="sourceLineNo">13722</span> oaf64data[it.oIndex + j] = ox;<a name="line.13722"></a>
<span class="sourceLineNo">13723</span> }<a name="line.13723"></a>
<span class="sourceLineNo">13724</span> }<a name="line.13724"></a>
<span class="sourceLineNo">13725</span> } else {<a name="line.13725"></a>
<span class="sourceLineNo">13726</span> while (it.hasNext()) {<a name="line.13726"></a>
<span class="sourceLineNo">13727</span> long iax = it.aLong;<a name="line.13727"></a>
<span class="sourceLineNo">13728</span> long ibx = it.bLong;<a name="line.13728"></a>
<span class="sourceLineNo">13729</span> double ox;<a name="line.13729"></a>
<span class="sourceLineNo">13730</span> ox = (Math.max(iax, ibx));<a name="line.13730"></a>
<span class="sourceLineNo">13731</span> oaf64data[it.oIndex] = ox;<a name="line.13731"></a>
<span class="sourceLineNo">13732</span> for (int j = 1; j &lt; is; j++) {<a name="line.13732"></a>
<span class="sourceLineNo">13733</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.13733"></a>
<span class="sourceLineNo">13734</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.13734"></a>
<span class="sourceLineNo">13735</span> ox = (Math.max(iax, ibx));<a name="line.13735"></a>
<span class="sourceLineNo">13736</span> oaf64data[it.oIndex + j] = ox;<a name="line.13736"></a>
<span class="sourceLineNo">13737</span> }<a name="line.13737"></a>
<span class="sourceLineNo">13738</span> }<a name="line.13738"></a>
<span class="sourceLineNo">13739</span> }<a name="line.13739"></a>
<span class="sourceLineNo">13740</span> }<a name="line.13740"></a>
<span class="sourceLineNo">13741</span> break;<a name="line.13741"></a>
<span class="sourceLineNo">13742</span> case Dataset.COMPLEX64:<a name="line.13742"></a>
<span class="sourceLineNo">13743</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.13743"></a>
<span class="sourceLineNo">13744</span> if (!da.isComplex()) {<a name="line.13744"></a>
<span class="sourceLineNo">13745</span> if (it.isOutputDouble()) {<a name="line.13745"></a>
<span class="sourceLineNo">13746</span> final double iay = 0;<a name="line.13746"></a>
<span class="sourceLineNo">13747</span> if (db.isComplex()) {<a name="line.13747"></a>
<span class="sourceLineNo">13748</span> while (it.hasNext()) {<a name="line.13748"></a>
<span class="sourceLineNo">13749</span> final double iax = it.aDouble;<a name="line.13749"></a>
<span class="sourceLineNo">13750</span> final double ibx = it.bDouble;<a name="line.13750"></a>
<span class="sourceLineNo">13751</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.13751"></a>
<span class="sourceLineNo">13752</span> float ox;<a name="line.13752"></a>
<span class="sourceLineNo">13753</span> float oy;<a name="line.13753"></a>
<span class="sourceLineNo">13754</span> if (Double.isNaN(iax) || Double.isNaN(iay)) {<a name="line.13754"></a>
<span class="sourceLineNo">13755</span> ox = (float) (iax);<a name="line.13755"></a>
<span class="sourceLineNo">13756</span> oy = (float) (iay);<a name="line.13756"></a>
<span class="sourceLineNo">13757</span> } else if (Double.isNaN(ibx) || Double.isNaN(iby)) {<a name="line.13757"></a>
<span class="sourceLineNo">13758</span> ox = (float) (ibx);<a name="line.13758"></a>
<span class="sourceLineNo">13759</span> oy = (float) (iby);<a name="line.13759"></a>
<span class="sourceLineNo">13760</span> } else {<a name="line.13760"></a>
<span class="sourceLineNo">13761</span> ox = (float) (Math.max(iax, ibx));<a name="line.13761"></a>
<span class="sourceLineNo">13762</span> oy = (float) (Math.max(iay, iby));<a name="line.13762"></a>
<span class="sourceLineNo">13763</span> }<a name="line.13763"></a>
<span class="sourceLineNo">13764</span> oc64data[it.oIndex] = ox;<a name="line.13764"></a>
<span class="sourceLineNo">13765</span> oc64data[it.oIndex + 1] = oy;<a name="line.13765"></a>
<span class="sourceLineNo">13766</span> }<a name="line.13766"></a>
<span class="sourceLineNo">13767</span> } else {<a name="line.13767"></a>
<span class="sourceLineNo">13768</span> while (it.hasNext()) {<a name="line.13768"></a>
<span class="sourceLineNo">13769</span> final double iax = it.aDouble;<a name="line.13769"></a>
<span class="sourceLineNo">13770</span> final double ibx = it.bDouble;<a name="line.13770"></a>
<span class="sourceLineNo">13771</span> final double iby = 0;<a name="line.13771"></a>
<span class="sourceLineNo">13772</span> float ox;<a name="line.13772"></a>
<span class="sourceLineNo">13773</span> float oy;<a name="line.13773"></a>
<span class="sourceLineNo">13774</span> if (Double.isNaN(iax) || Double.isNaN(iay)) {<a name="line.13774"></a>
<span class="sourceLineNo">13775</span> ox = (float) (iax);<a name="line.13775"></a>
<span class="sourceLineNo">13776</span> oy = (float) (iay);<a name="line.13776"></a>
<span class="sourceLineNo">13777</span> } else if (Double.isNaN(ibx) || Double.isNaN(iby)) {<a name="line.13777"></a>
<span class="sourceLineNo">13778</span> ox = (float) (ibx);<a name="line.13778"></a>
<span class="sourceLineNo">13779</span> oy = (float) (iby);<a name="line.13779"></a>
<span class="sourceLineNo">13780</span> } else {<a name="line.13780"></a>
<span class="sourceLineNo">13781</span> ox = (float) (Math.max(iax, ibx));<a name="line.13781"></a>
<span class="sourceLineNo">13782</span> oy = (float) (Math.max(iay, iby));<a name="line.13782"></a>
<span class="sourceLineNo">13783</span> }<a name="line.13783"></a>
<span class="sourceLineNo">13784</span> oc64data[it.oIndex] = ox;<a name="line.13784"></a>
<span class="sourceLineNo">13785</span> oc64data[it.oIndex + 1] = oy;<a name="line.13785"></a>
<span class="sourceLineNo">13786</span> }<a name="line.13786"></a>
<span class="sourceLineNo">13787</span> }<a name="line.13787"></a>
<span class="sourceLineNo">13788</span> } else {<a name="line.13788"></a>
<span class="sourceLineNo">13789</span> final long iay = 0;<a name="line.13789"></a>
<span class="sourceLineNo">13790</span> while (it.hasNext()) {<a name="line.13790"></a>
<span class="sourceLineNo">13791</span> final long iax = it.aLong;<a name="line.13791"></a>
<span class="sourceLineNo">13792</span> final long ibx = it.bLong;<a name="line.13792"></a>
<span class="sourceLineNo">13793</span> final long iby = 0;<a name="line.13793"></a>
<span class="sourceLineNo">13794</span> float ox;<a name="line.13794"></a>
<span class="sourceLineNo">13795</span> float oy;<a name="line.13795"></a>
<span class="sourceLineNo">13796</span> if (Double.isNaN(iax) || Double.isNaN(iay)) {<a name="line.13796"></a>
<span class="sourceLineNo">13797</span> ox = (float) (iax);<a name="line.13797"></a>
<span class="sourceLineNo">13798</span> oy = (float) (iay);<a name="line.13798"></a>
<span class="sourceLineNo">13799</span> } else if (Double.isNaN(ibx) || Double.isNaN(iby)) {<a name="line.13799"></a>
<span class="sourceLineNo">13800</span> ox = (float) (ibx);<a name="line.13800"></a>
<span class="sourceLineNo">13801</span> oy = (float) (iby);<a name="line.13801"></a>
<span class="sourceLineNo">13802</span> } else {<a name="line.13802"></a>
<span class="sourceLineNo">13803</span> ox = (float) (Math.max(iax, ibx));<a name="line.13803"></a>
<span class="sourceLineNo">13804</span> oy = (float) (Math.max(iay, iby));<a name="line.13804"></a>
<span class="sourceLineNo">13805</span> }<a name="line.13805"></a>
<span class="sourceLineNo">13806</span> oc64data[it.oIndex] = ox;<a name="line.13806"></a>
<span class="sourceLineNo">13807</span> oc64data[it.oIndex + 1] = oy;<a name="line.13807"></a>
<span class="sourceLineNo">13808</span> }<a name="line.13808"></a>
<span class="sourceLineNo">13809</span> }<a name="line.13809"></a>
<span class="sourceLineNo">13810</span> } else if (!db.isComplex()) {<a name="line.13810"></a>
<span class="sourceLineNo">13811</span> final double iby = 0;<a name="line.13811"></a>
<span class="sourceLineNo">13812</span> while (it.hasNext()) {<a name="line.13812"></a>
<span class="sourceLineNo">13813</span> final double iax = it.aDouble;<a name="line.13813"></a>
<span class="sourceLineNo">13814</span> final double ibx = it.bDouble;<a name="line.13814"></a>
<span class="sourceLineNo">13815</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.13815"></a>
<span class="sourceLineNo">13816</span> float ox;<a name="line.13816"></a>
<span class="sourceLineNo">13817</span> float oy;<a name="line.13817"></a>
<span class="sourceLineNo">13818</span> if (Double.isNaN(iax) || Double.isNaN(iay)) {<a name="line.13818"></a>
<span class="sourceLineNo">13819</span> ox = (float) (iax);<a name="line.13819"></a>
<span class="sourceLineNo">13820</span> oy = (float) (iay);<a name="line.13820"></a>
<span class="sourceLineNo">13821</span> } else if (Double.isNaN(ibx) || Double.isNaN(iby)) {<a name="line.13821"></a>
<span class="sourceLineNo">13822</span> ox = (float) (ibx);<a name="line.13822"></a>
<span class="sourceLineNo">13823</span> oy = (float) (iby);<a name="line.13823"></a>
<span class="sourceLineNo">13824</span> } else {<a name="line.13824"></a>
<span class="sourceLineNo">13825</span> ox = (float) (Math.max(iax, ibx));<a name="line.13825"></a>
<span class="sourceLineNo">13826</span> oy = (float) (Math.max(iay, iby));<a name="line.13826"></a>
<span class="sourceLineNo">13827</span> }<a name="line.13827"></a>
<span class="sourceLineNo">13828</span> oc64data[it.oIndex] = ox;<a name="line.13828"></a>
<span class="sourceLineNo">13829</span> oc64data[it.oIndex + 1] = oy;<a name="line.13829"></a>
<span class="sourceLineNo">13830</span> }<a name="line.13830"></a>
<span class="sourceLineNo">13831</span> } else {<a name="line.13831"></a>
<span class="sourceLineNo">13832</span> while (it.hasNext()) {<a name="line.13832"></a>
<span class="sourceLineNo">13833</span> final double iax = it.aDouble;<a name="line.13833"></a>
<span class="sourceLineNo">13834</span> final double ibx = it.bDouble;<a name="line.13834"></a>
<span class="sourceLineNo">13835</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.13835"></a>
<span class="sourceLineNo">13836</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.13836"></a>
<span class="sourceLineNo">13837</span> float ox;<a name="line.13837"></a>
<span class="sourceLineNo">13838</span> float oy;<a name="line.13838"></a>
<span class="sourceLineNo">13839</span> if (Double.isNaN(iax) || Double.isNaN(iay)) {<a name="line.13839"></a>
<span class="sourceLineNo">13840</span> ox = (float) (iax);<a name="line.13840"></a>
<span class="sourceLineNo">13841</span> oy = (float) (iay);<a name="line.13841"></a>
<span class="sourceLineNo">13842</span> } else if (Double.isNaN(ibx) || Double.isNaN(iby)) {<a name="line.13842"></a>
<span class="sourceLineNo">13843</span> ox = (float) (ibx);<a name="line.13843"></a>
<span class="sourceLineNo">13844</span> oy = (float) (iby);<a name="line.13844"></a>
<span class="sourceLineNo">13845</span> } else {<a name="line.13845"></a>
<span class="sourceLineNo">13846</span> ox = (float) (Math.max(iax, ibx));<a name="line.13846"></a>
<span class="sourceLineNo">13847</span> oy = (float) (Math.max(iay, iby));<a name="line.13847"></a>
<span class="sourceLineNo">13848</span> }<a name="line.13848"></a>
<span class="sourceLineNo">13849</span> oc64data[it.oIndex] = ox;<a name="line.13849"></a>
<span class="sourceLineNo">13850</span> oc64data[it.oIndex + 1] = oy;<a name="line.13850"></a>
<span class="sourceLineNo">13851</span> }<a name="line.13851"></a>
<span class="sourceLineNo">13852</span> }<a name="line.13852"></a>
<span class="sourceLineNo">13853</span> break;<a name="line.13853"></a>
<span class="sourceLineNo">13854</span> case Dataset.COMPLEX128:<a name="line.13854"></a>
<span class="sourceLineNo">13855</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.13855"></a>
<span class="sourceLineNo">13856</span> if (!da.isComplex()) {<a name="line.13856"></a>
<span class="sourceLineNo">13857</span> if (it.isOutputDouble()) {<a name="line.13857"></a>
<span class="sourceLineNo">13858</span> final double iay = 0;<a name="line.13858"></a>
<span class="sourceLineNo">13859</span> if (db.isComplex()) {<a name="line.13859"></a>
<span class="sourceLineNo">13860</span> while (it.hasNext()) {<a name="line.13860"></a>
<span class="sourceLineNo">13861</span> final double iax = it.aDouble;<a name="line.13861"></a>
<span class="sourceLineNo">13862</span> final double ibx = it.bDouble;<a name="line.13862"></a>
<span class="sourceLineNo">13863</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.13863"></a>
<span class="sourceLineNo">13864</span> double ox;<a name="line.13864"></a>
<span class="sourceLineNo">13865</span> double oy;<a name="line.13865"></a>
<span class="sourceLineNo">13866</span> if (Double.isNaN(iax) || Double.isNaN(iay)) {<a name="line.13866"></a>
<span class="sourceLineNo">13867</span> ox = (iax);<a name="line.13867"></a>
<span class="sourceLineNo">13868</span> oy = (iay);<a name="line.13868"></a>
<span class="sourceLineNo">13869</span> } else if (Double.isNaN(ibx) || Double.isNaN(iby)) {<a name="line.13869"></a>
<span class="sourceLineNo">13870</span> ox = (ibx);<a name="line.13870"></a>
<span class="sourceLineNo">13871</span> oy = (iby);<a name="line.13871"></a>
<span class="sourceLineNo">13872</span> } else {<a name="line.13872"></a>
<span class="sourceLineNo">13873</span> ox = (Math.max(iax, ibx));<a name="line.13873"></a>
<span class="sourceLineNo">13874</span> oy = (Math.max(iay, iby));<a name="line.13874"></a>
<span class="sourceLineNo">13875</span> }<a name="line.13875"></a>
<span class="sourceLineNo">13876</span> oc128data[it.oIndex] = ox;<a name="line.13876"></a>
<span class="sourceLineNo">13877</span> oc128data[it.oIndex + 1] = oy;<a name="line.13877"></a>
<span class="sourceLineNo">13878</span> }<a name="line.13878"></a>
<span class="sourceLineNo">13879</span> } else {<a name="line.13879"></a>
<span class="sourceLineNo">13880</span> while (it.hasNext()) {<a name="line.13880"></a>
<span class="sourceLineNo">13881</span> final double iax = it.aDouble;<a name="line.13881"></a>
<span class="sourceLineNo">13882</span> final double ibx = it.bDouble;<a name="line.13882"></a>
<span class="sourceLineNo">13883</span> final double iby = 0;<a name="line.13883"></a>
<span class="sourceLineNo">13884</span> double ox;<a name="line.13884"></a>
<span class="sourceLineNo">13885</span> double oy;<a name="line.13885"></a>
<span class="sourceLineNo">13886</span> if (Double.isNaN(iax) || Double.isNaN(iay)) {<a name="line.13886"></a>
<span class="sourceLineNo">13887</span> ox = (iax);<a name="line.13887"></a>
<span class="sourceLineNo">13888</span> oy = (iay);<a name="line.13888"></a>
<span class="sourceLineNo">13889</span> } else if (Double.isNaN(ibx) || Double.isNaN(iby)) {<a name="line.13889"></a>
<span class="sourceLineNo">13890</span> ox = (ibx);<a name="line.13890"></a>
<span class="sourceLineNo">13891</span> oy = (iby);<a name="line.13891"></a>
<span class="sourceLineNo">13892</span> } else {<a name="line.13892"></a>
<span class="sourceLineNo">13893</span> ox = (Math.max(iax, ibx));<a name="line.13893"></a>
<span class="sourceLineNo">13894</span> oy = (Math.max(iay, iby));<a name="line.13894"></a>
<span class="sourceLineNo">13895</span> }<a name="line.13895"></a>
<span class="sourceLineNo">13896</span> oc128data[it.oIndex] = ox;<a name="line.13896"></a>
<span class="sourceLineNo">13897</span> oc128data[it.oIndex + 1] = oy;<a name="line.13897"></a>
<span class="sourceLineNo">13898</span> }<a name="line.13898"></a>
<span class="sourceLineNo">13899</span> }<a name="line.13899"></a>
<span class="sourceLineNo">13900</span> } else {<a name="line.13900"></a>
<span class="sourceLineNo">13901</span> final long iay = 0;<a name="line.13901"></a>
<span class="sourceLineNo">13902</span> while (it.hasNext()) {<a name="line.13902"></a>
<span class="sourceLineNo">13903</span> final long iax = it.aLong;<a name="line.13903"></a>
<span class="sourceLineNo">13904</span> final long ibx = it.bLong;<a name="line.13904"></a>
<span class="sourceLineNo">13905</span> final long iby = 0;<a name="line.13905"></a>
<span class="sourceLineNo">13906</span> double ox;<a name="line.13906"></a>
<span class="sourceLineNo">13907</span> double oy;<a name="line.13907"></a>
<span class="sourceLineNo">13908</span> if (Double.isNaN(iax) || Double.isNaN(iay)) {<a name="line.13908"></a>
<span class="sourceLineNo">13909</span> ox = (iax);<a name="line.13909"></a>
<span class="sourceLineNo">13910</span> oy = (iay);<a name="line.13910"></a>
<span class="sourceLineNo">13911</span> } else if (Double.isNaN(ibx) || Double.isNaN(iby)) {<a name="line.13911"></a>
<span class="sourceLineNo">13912</span> ox = (ibx);<a name="line.13912"></a>
<span class="sourceLineNo">13913</span> oy = (iby);<a name="line.13913"></a>
<span class="sourceLineNo">13914</span> } else {<a name="line.13914"></a>
<span class="sourceLineNo">13915</span> ox = (double) (Math.max(iax, ibx));<a name="line.13915"></a>
<span class="sourceLineNo">13916</span> oy = (double) (Math.max(iay, iby));<a name="line.13916"></a>
<span class="sourceLineNo">13917</span> }<a name="line.13917"></a>
<span class="sourceLineNo">13918</span> oc128data[it.oIndex] = ox;<a name="line.13918"></a>
<span class="sourceLineNo">13919</span> oc128data[it.oIndex + 1] = oy;<a name="line.13919"></a>
<span class="sourceLineNo">13920</span> }<a name="line.13920"></a>
<span class="sourceLineNo">13921</span> }<a name="line.13921"></a>
<span class="sourceLineNo">13922</span> } else if (!db.isComplex()) {<a name="line.13922"></a>
<span class="sourceLineNo">13923</span> final double iby = 0;<a name="line.13923"></a>
<span class="sourceLineNo">13924</span> while (it.hasNext()) {<a name="line.13924"></a>
<span class="sourceLineNo">13925</span> final double iax = it.aDouble;<a name="line.13925"></a>
<span class="sourceLineNo">13926</span> final double ibx = it.bDouble;<a name="line.13926"></a>
<span class="sourceLineNo">13927</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.13927"></a>
<span class="sourceLineNo">13928</span> double ox;<a name="line.13928"></a>
<span class="sourceLineNo">13929</span> double oy;<a name="line.13929"></a>
<span class="sourceLineNo">13930</span> if (Double.isNaN(iax) || Double.isNaN(iay)) {<a name="line.13930"></a>
<span class="sourceLineNo">13931</span> ox = (iax);<a name="line.13931"></a>
<span class="sourceLineNo">13932</span> oy = (iay);<a name="line.13932"></a>
<span class="sourceLineNo">13933</span> } else if (Double.isNaN(ibx) || Double.isNaN(iby)) {<a name="line.13933"></a>
<span class="sourceLineNo">13934</span> ox = (ibx);<a name="line.13934"></a>
<span class="sourceLineNo">13935</span> oy = (iby);<a name="line.13935"></a>
<span class="sourceLineNo">13936</span> } else {<a name="line.13936"></a>
<span class="sourceLineNo">13937</span> ox = (Math.max(iax, ibx));<a name="line.13937"></a>
<span class="sourceLineNo">13938</span> oy = (Math.max(iay, iby));<a name="line.13938"></a>
<span class="sourceLineNo">13939</span> }<a name="line.13939"></a>
<span class="sourceLineNo">13940</span> oc128data[it.oIndex] = ox;<a name="line.13940"></a>
<span class="sourceLineNo">13941</span> oc128data[it.oIndex + 1] = oy;<a name="line.13941"></a>
<span class="sourceLineNo">13942</span> }<a name="line.13942"></a>
<span class="sourceLineNo">13943</span> } else {<a name="line.13943"></a>
<span class="sourceLineNo">13944</span> while (it.hasNext()) {<a name="line.13944"></a>
<span class="sourceLineNo">13945</span> final double iax = it.aDouble;<a name="line.13945"></a>
<span class="sourceLineNo">13946</span> final double ibx = it.bDouble;<a name="line.13946"></a>
<span class="sourceLineNo">13947</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.13947"></a>
<span class="sourceLineNo">13948</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.13948"></a>
<span class="sourceLineNo">13949</span> double ox;<a name="line.13949"></a>
<span class="sourceLineNo">13950</span> double oy;<a name="line.13950"></a>
<span class="sourceLineNo">13951</span> if (Double.isNaN(iax) || Double.isNaN(iay)) {<a name="line.13951"></a>
<span class="sourceLineNo">13952</span> ox = (iax);<a name="line.13952"></a>
<span class="sourceLineNo">13953</span> oy = (iay);<a name="line.13953"></a>
<span class="sourceLineNo">13954</span> } else if (Double.isNaN(ibx) || Double.isNaN(iby)) {<a name="line.13954"></a>
<span class="sourceLineNo">13955</span> ox = (ibx);<a name="line.13955"></a>
<span class="sourceLineNo">13956</span> oy = (iby);<a name="line.13956"></a>
<span class="sourceLineNo">13957</span> } else {<a name="line.13957"></a>
<span class="sourceLineNo">13958</span> ox = (Math.max(iax, ibx));<a name="line.13958"></a>
<span class="sourceLineNo">13959</span> oy = (Math.max(iay, iby));<a name="line.13959"></a>
<span class="sourceLineNo">13960</span> }<a name="line.13960"></a>
<span class="sourceLineNo">13961</span> oc128data[it.oIndex] = ox;<a name="line.13961"></a>
<span class="sourceLineNo">13962</span> oc128data[it.oIndex + 1] = oy;<a name="line.13962"></a>
<span class="sourceLineNo">13963</span> }<a name="line.13963"></a>
<span class="sourceLineNo">13964</span> }<a name="line.13964"></a>
<span class="sourceLineNo">13965</span> break;<a name="line.13965"></a>
<span class="sourceLineNo">13966</span> default:<a name="line.13966"></a>
<span class="sourceLineNo">13967</span> throw new IllegalArgumentException("maximum supports integer, compound integer, real, compound real, complex datasets only");<a name="line.13967"></a>
<span class="sourceLineNo">13968</span> }<a name="line.13968"></a>
<span class="sourceLineNo">13969</span><a name="line.13969"></a>
<span class="sourceLineNo">13970</span> addBinaryOperatorName(da, db, result, "maximum");<a name="line.13970"></a>
<span class="sourceLineNo">13971</span> return result;<a name="line.13971"></a>
<span class="sourceLineNo">13972</span> }<a name="line.13972"></a>
<span class="sourceLineNo">13973</span><a name="line.13973"></a>
<span class="sourceLineNo">13974</span> /**<a name="line.13974"></a>
<span class="sourceLineNo">13975</span> * minimum operator<a name="line.13975"></a>
<span class="sourceLineNo">13976</span> * @param a<a name="line.13976"></a>
<span class="sourceLineNo">13977</span> * @param b<a name="line.13977"></a>
<span class="sourceLineNo">13978</span> * @return return minimum of a and b<a name="line.13978"></a>
<span class="sourceLineNo">13979</span> */<a name="line.13979"></a>
<span class="sourceLineNo">13980</span> public static Dataset minimum(final Object a, final Object b) {<a name="line.13980"></a>
<span class="sourceLineNo">13981</span> return minimum(a, b, null);<a name="line.13981"></a>
<span class="sourceLineNo">13982</span> }<a name="line.13982"></a>
<span class="sourceLineNo">13983</span><a name="line.13983"></a>
<span class="sourceLineNo">13984</span> /**<a name="line.13984"></a>
<span class="sourceLineNo">13985</span> * minimum operator<a name="line.13985"></a>
<span class="sourceLineNo">13986</span> * @param a<a name="line.13986"></a>
<span class="sourceLineNo">13987</span> * @param b<a name="line.13987"></a>
<span class="sourceLineNo">13988</span> * @param o output can be null - in which case, a new dataset is created<a name="line.13988"></a>
<span class="sourceLineNo">13989</span> * @return return minimum of a and b<a name="line.13989"></a>
<span class="sourceLineNo">13990</span> */<a name="line.13990"></a>
<span class="sourceLineNo">13991</span> public static Dataset minimum(final Object a, final Object b, final Dataset o) {<a name="line.13991"></a>
<span class="sourceLineNo">13992</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.13992"></a>
<span class="sourceLineNo">13993</span> Dataset db = b instanceof Dataset ? (Dataset) b : DatasetFactory.createFromObject(b);<a name="line.13993"></a>
<span class="sourceLineNo">13994</span> BroadcastIterator it = BroadcastIterator.createIterator(da, db, o, true);<a name="line.13994"></a>
<span class="sourceLineNo">13995</span> final Dataset result = it.getOutput();<a name="line.13995"></a>
<span class="sourceLineNo">13996</span> if (!result.isComplex()) {<a name="line.13996"></a>
<span class="sourceLineNo">13997</span> boolean change = false;<a name="line.13997"></a>
<span class="sourceLineNo">13998</span> if (da.isComplex()) {<a name="line.13998"></a>
<span class="sourceLineNo">13999</span> da = da.getRealView();<a name="line.13999"></a>
<span class="sourceLineNo">14000</span> change = true;<a name="line.14000"></a>
<span class="sourceLineNo">14001</span> }<a name="line.14001"></a>
<span class="sourceLineNo">14002</span> if (db.isComplex()) {<a name="line.14002"></a>
<span class="sourceLineNo">14003</span> db = db.getRealView();<a name="line.14003"></a>
<span class="sourceLineNo">14004</span> change = true;<a name="line.14004"></a>
<span class="sourceLineNo">14005</span> }<a name="line.14005"></a>
<span class="sourceLineNo">14006</span> if (change) {<a name="line.14006"></a>
<span class="sourceLineNo">14007</span> it = BroadcastIterator.createIterator(da, db, result, true);<a name="line.14007"></a>
<span class="sourceLineNo">14008</span> }<a name="line.14008"></a>
<span class="sourceLineNo">14009</span> }<a name="line.14009"></a>
<span class="sourceLineNo">14010</span> final int is = result.getElementsPerItem();<a name="line.14010"></a>
<span class="sourceLineNo">14011</span> final int as = da.getElementsPerItem();<a name="line.14011"></a>
<span class="sourceLineNo">14012</span> final int bs = db.getElementsPerItem();<a name="line.14012"></a>
<span class="sourceLineNo">14013</span> final int dt = result.getDType();<a name="line.14013"></a>
<span class="sourceLineNo">14014</span><a name="line.14014"></a>
<span class="sourceLineNo">14015</span> switch(dt) {<a name="line.14015"></a>
<span class="sourceLineNo">14016</span> case Dataset.INT8:<a name="line.14016"></a>
<span class="sourceLineNo">14017</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.14017"></a>
<span class="sourceLineNo">14018</span> if (it.isOutputDouble()) {<a name="line.14018"></a>
<span class="sourceLineNo">14019</span> while (it.hasNext()) {<a name="line.14019"></a>
<span class="sourceLineNo">14020</span> final double iax = it.aDouble;<a name="line.14020"></a>
<span class="sourceLineNo">14021</span> final double ibx = it.bDouble;<a name="line.14021"></a>
<span class="sourceLineNo">14022</span> byte ox;<a name="line.14022"></a>
<span class="sourceLineNo">14023</span> ox = (byte) toLong(Math.min(iax, ibx));<a name="line.14023"></a>
<span class="sourceLineNo">14024</span> oi8data[it.oIndex] = ox;<a name="line.14024"></a>
<span class="sourceLineNo">14025</span> }<a name="line.14025"></a>
<span class="sourceLineNo">14026</span> } else {<a name="line.14026"></a>
<span class="sourceLineNo">14027</span> while (it.hasNext()) {<a name="line.14027"></a>
<span class="sourceLineNo">14028</span> final long iax = it.aLong;<a name="line.14028"></a>
<span class="sourceLineNo">14029</span> final long ibx = it.bLong;<a name="line.14029"></a>
<span class="sourceLineNo">14030</span> byte ox;<a name="line.14030"></a>
<span class="sourceLineNo">14031</span> ox = (byte) toLong(Math.min(iax, ibx));<a name="line.14031"></a>
<span class="sourceLineNo">14032</span> oi8data[it.oIndex] = ox;<a name="line.14032"></a>
<span class="sourceLineNo">14033</span> }<a name="line.14033"></a>
<span class="sourceLineNo">14034</span> }<a name="line.14034"></a>
<span class="sourceLineNo">14035</span> break;<a name="line.14035"></a>
<span class="sourceLineNo">14036</span> case Dataset.INT16:<a name="line.14036"></a>
<span class="sourceLineNo">14037</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.14037"></a>
<span class="sourceLineNo">14038</span> if (it.isOutputDouble()) {<a name="line.14038"></a>
<span class="sourceLineNo">14039</span> while (it.hasNext()) {<a name="line.14039"></a>
<span class="sourceLineNo">14040</span> final double iax = it.aDouble;<a name="line.14040"></a>
<span class="sourceLineNo">14041</span> final double ibx = it.bDouble;<a name="line.14041"></a>
<span class="sourceLineNo">14042</span> short ox;<a name="line.14042"></a>
<span class="sourceLineNo">14043</span> ox = (short) toLong(Math.min(iax, ibx));<a name="line.14043"></a>
<span class="sourceLineNo">14044</span> oi16data[it.oIndex] = ox;<a name="line.14044"></a>
<span class="sourceLineNo">14045</span> }<a name="line.14045"></a>
<span class="sourceLineNo">14046</span> } else {<a name="line.14046"></a>
<span class="sourceLineNo">14047</span> while (it.hasNext()) {<a name="line.14047"></a>
<span class="sourceLineNo">14048</span> final long iax = it.aLong;<a name="line.14048"></a>
<span class="sourceLineNo">14049</span> final long ibx = it.bLong;<a name="line.14049"></a>
<span class="sourceLineNo">14050</span> short ox;<a name="line.14050"></a>
<span class="sourceLineNo">14051</span> ox = (short) toLong(Math.min(iax, ibx));<a name="line.14051"></a>
<span class="sourceLineNo">14052</span> oi16data[it.oIndex] = ox;<a name="line.14052"></a>
<span class="sourceLineNo">14053</span> }<a name="line.14053"></a>
<span class="sourceLineNo">14054</span> }<a name="line.14054"></a>
<span class="sourceLineNo">14055</span> break;<a name="line.14055"></a>
<span class="sourceLineNo">14056</span> case Dataset.INT64:<a name="line.14056"></a>
<span class="sourceLineNo">14057</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.14057"></a>
<span class="sourceLineNo">14058</span> if (it.isOutputDouble()) {<a name="line.14058"></a>
<span class="sourceLineNo">14059</span> while (it.hasNext()) {<a name="line.14059"></a>
<span class="sourceLineNo">14060</span> final double iax = it.aDouble;<a name="line.14060"></a>
<span class="sourceLineNo">14061</span> final double ibx = it.bDouble;<a name="line.14061"></a>
<span class="sourceLineNo">14062</span> long ox;<a name="line.14062"></a>
<span class="sourceLineNo">14063</span> ox = toLong(Math.min(iax, ibx));<a name="line.14063"></a>
<span class="sourceLineNo">14064</span> oi64data[it.oIndex] = ox;<a name="line.14064"></a>
<span class="sourceLineNo">14065</span> }<a name="line.14065"></a>
<span class="sourceLineNo">14066</span> } else {<a name="line.14066"></a>
<span class="sourceLineNo">14067</span> while (it.hasNext()) {<a name="line.14067"></a>
<span class="sourceLineNo">14068</span> final long iax = it.aLong;<a name="line.14068"></a>
<span class="sourceLineNo">14069</span> final long ibx = it.bLong;<a name="line.14069"></a>
<span class="sourceLineNo">14070</span> long ox;<a name="line.14070"></a>
<span class="sourceLineNo">14071</span> ox = toLong(Math.min(iax, ibx));<a name="line.14071"></a>
<span class="sourceLineNo">14072</span> oi64data[it.oIndex] = ox;<a name="line.14072"></a>
<span class="sourceLineNo">14073</span> }<a name="line.14073"></a>
<span class="sourceLineNo">14074</span> }<a name="line.14074"></a>
<span class="sourceLineNo">14075</span> break;<a name="line.14075"></a>
<span class="sourceLineNo">14076</span> case Dataset.INT32:<a name="line.14076"></a>
<span class="sourceLineNo">14077</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.14077"></a>
<span class="sourceLineNo">14078</span> if (it.isOutputDouble()) {<a name="line.14078"></a>
<span class="sourceLineNo">14079</span> while (it.hasNext()) {<a name="line.14079"></a>
<span class="sourceLineNo">14080</span> final double iax = it.aDouble;<a name="line.14080"></a>
<span class="sourceLineNo">14081</span> final double ibx = it.bDouble;<a name="line.14081"></a>
<span class="sourceLineNo">14082</span> int ox;<a name="line.14082"></a>
<span class="sourceLineNo">14083</span> ox = (int) toLong(Math.min(iax, ibx));<a name="line.14083"></a>
<span class="sourceLineNo">14084</span> oi32data[it.oIndex] = ox;<a name="line.14084"></a>
<span class="sourceLineNo">14085</span> }<a name="line.14085"></a>
<span class="sourceLineNo">14086</span> } else {<a name="line.14086"></a>
<span class="sourceLineNo">14087</span> while (it.hasNext()) {<a name="line.14087"></a>
<span class="sourceLineNo">14088</span> final long iax = it.aLong;<a name="line.14088"></a>
<span class="sourceLineNo">14089</span> final long ibx = it.bLong;<a name="line.14089"></a>
<span class="sourceLineNo">14090</span> int ox;<a name="line.14090"></a>
<span class="sourceLineNo">14091</span> ox = (int) toLong(Math.min(iax, ibx));<a name="line.14091"></a>
<span class="sourceLineNo">14092</span> oi32data[it.oIndex] = ox;<a name="line.14092"></a>
<span class="sourceLineNo">14093</span> }<a name="line.14093"></a>
<span class="sourceLineNo">14094</span> }<a name="line.14094"></a>
<span class="sourceLineNo">14095</span> break;<a name="line.14095"></a>
<span class="sourceLineNo">14096</span> case Dataset.ARRAYINT8:<a name="line.14096"></a>
<span class="sourceLineNo">14097</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.14097"></a>
<span class="sourceLineNo">14098</span> if (is == 1) {<a name="line.14098"></a>
<span class="sourceLineNo">14099</span> if (it.isOutputDouble()) {<a name="line.14099"></a>
<span class="sourceLineNo">14100</span> while (it.hasNext()) {<a name="line.14100"></a>
<span class="sourceLineNo">14101</span> final double iax = it.aDouble;<a name="line.14101"></a>
<span class="sourceLineNo">14102</span> final double ibx = it.bDouble;<a name="line.14102"></a>
<span class="sourceLineNo">14103</span> byte ox;<a name="line.14103"></a>
<span class="sourceLineNo">14104</span> ox = (byte) toLong(Math.min(iax, ibx));<a name="line.14104"></a>
<span class="sourceLineNo">14105</span> oai8data[it.oIndex] = ox;<a name="line.14105"></a>
<span class="sourceLineNo">14106</span> }<a name="line.14106"></a>
<span class="sourceLineNo">14107</span> } else {<a name="line.14107"></a>
<span class="sourceLineNo">14108</span> while (it.hasNext()) {<a name="line.14108"></a>
<span class="sourceLineNo">14109</span> final long iax = it.aLong;<a name="line.14109"></a>
<span class="sourceLineNo">14110</span> final long ibx = it.bLong;<a name="line.14110"></a>
<span class="sourceLineNo">14111</span> byte ox;<a name="line.14111"></a>
<span class="sourceLineNo">14112</span> ox = (byte) toLong(Math.min(iax, ibx));<a name="line.14112"></a>
<span class="sourceLineNo">14113</span> oai8data[it.oIndex] = ox;<a name="line.14113"></a>
<span class="sourceLineNo">14114</span> }<a name="line.14114"></a>
<span class="sourceLineNo">14115</span> }<a name="line.14115"></a>
<span class="sourceLineNo">14116</span> } else if (as &lt; bs) {<a name="line.14116"></a>
<span class="sourceLineNo">14117</span> if (it.isOutputDouble()) {<a name="line.14117"></a>
<span class="sourceLineNo">14118</span> while (it.hasNext()) {<a name="line.14118"></a>
<span class="sourceLineNo">14119</span> final double iax = it.aDouble;<a name="line.14119"></a>
<span class="sourceLineNo">14120</span> double ibx = it.bDouble;<a name="line.14120"></a>
<span class="sourceLineNo">14121</span> byte ox;<a name="line.14121"></a>
<span class="sourceLineNo">14122</span> ox = (byte) toLong(Math.min(iax, ibx));<a name="line.14122"></a>
<span class="sourceLineNo">14123</span> oai8data[it.oIndex] = ox;<a name="line.14123"></a>
<span class="sourceLineNo">14124</span> for (int j = 1; j &lt; is; j++) {<a name="line.14124"></a>
<span class="sourceLineNo">14125</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.14125"></a>
<span class="sourceLineNo">14126</span> ox = (byte) toLong(Math.min(iax, ibx));<a name="line.14126"></a>
<span class="sourceLineNo">14127</span> oai8data[it.oIndex + j] = ox;<a name="line.14127"></a>
<span class="sourceLineNo">14128</span> }<a name="line.14128"></a>
<span class="sourceLineNo">14129</span> }<a name="line.14129"></a>
<span class="sourceLineNo">14130</span> } else {<a name="line.14130"></a>
<span class="sourceLineNo">14131</span> while (it.hasNext()) {<a name="line.14131"></a>
<span class="sourceLineNo">14132</span> final long iax = it.aLong;<a name="line.14132"></a>
<span class="sourceLineNo">14133</span> long ibx = it.bLong;<a name="line.14133"></a>
<span class="sourceLineNo">14134</span> byte ox;<a name="line.14134"></a>
<span class="sourceLineNo">14135</span> ox = (byte) toLong(Math.min(iax, ibx));<a name="line.14135"></a>
<span class="sourceLineNo">14136</span> oai8data[it.oIndex] = ox;<a name="line.14136"></a>
<span class="sourceLineNo">14137</span> for (int j = 1; j &lt; is; j++) {<a name="line.14137"></a>
<span class="sourceLineNo">14138</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.14138"></a>
<span class="sourceLineNo">14139</span> ox = (byte) toLong(Math.min(iax, ibx));<a name="line.14139"></a>
<span class="sourceLineNo">14140</span> oai8data[it.oIndex + j] = ox;<a name="line.14140"></a>
<span class="sourceLineNo">14141</span> }<a name="line.14141"></a>
<span class="sourceLineNo">14142</span> }<a name="line.14142"></a>
<span class="sourceLineNo">14143</span> }<a name="line.14143"></a>
<span class="sourceLineNo">14144</span> } else if (as &gt; bs) {<a name="line.14144"></a>
<span class="sourceLineNo">14145</span> if (it.isOutputDouble()) {<a name="line.14145"></a>
<span class="sourceLineNo">14146</span> while (it.hasNext()) {<a name="line.14146"></a>
<span class="sourceLineNo">14147</span> double iax = it.aDouble;<a name="line.14147"></a>
<span class="sourceLineNo">14148</span> final double ibx = it.bDouble;<a name="line.14148"></a>
<span class="sourceLineNo">14149</span> byte ox;<a name="line.14149"></a>
<span class="sourceLineNo">14150</span> ox = (byte) toLong(Math.min(iax, ibx));<a name="line.14150"></a>
<span class="sourceLineNo">14151</span> oai8data[it.oIndex] = ox;<a name="line.14151"></a>
<span class="sourceLineNo">14152</span> for (int j = 1; j &lt; is; j++) {<a name="line.14152"></a>
<span class="sourceLineNo">14153</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.14153"></a>
<span class="sourceLineNo">14154</span> ox = (byte) toLong(Math.min(iax, ibx));<a name="line.14154"></a>
<span class="sourceLineNo">14155</span> oai8data[it.oIndex + j] = ox;<a name="line.14155"></a>
<span class="sourceLineNo">14156</span> }<a name="line.14156"></a>
<span class="sourceLineNo">14157</span> }<a name="line.14157"></a>
<span class="sourceLineNo">14158</span> } else {<a name="line.14158"></a>
<span class="sourceLineNo">14159</span> while (it.hasNext()) {<a name="line.14159"></a>
<span class="sourceLineNo">14160</span> long iax = it.aLong;<a name="line.14160"></a>
<span class="sourceLineNo">14161</span> final long ibx = it.bLong;<a name="line.14161"></a>
<span class="sourceLineNo">14162</span> byte ox;<a name="line.14162"></a>
<span class="sourceLineNo">14163</span> ox = (byte) toLong(Math.min(iax, ibx));<a name="line.14163"></a>
<span class="sourceLineNo">14164</span> oai8data[it.oIndex] = ox;<a name="line.14164"></a>
<span class="sourceLineNo">14165</span> for (int j = 1; j &lt; is; j++) {<a name="line.14165"></a>
<span class="sourceLineNo">14166</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.14166"></a>
<span class="sourceLineNo">14167</span> ox = (byte) toLong(Math.min(iax, ibx));<a name="line.14167"></a>
<span class="sourceLineNo">14168</span> oai8data[it.oIndex + j] = ox;<a name="line.14168"></a>
<span class="sourceLineNo">14169</span> }<a name="line.14169"></a>
<span class="sourceLineNo">14170</span> }<a name="line.14170"></a>
<span class="sourceLineNo">14171</span> }<a name="line.14171"></a>
<span class="sourceLineNo">14172</span> } else if (as == 1) {<a name="line.14172"></a>
<span class="sourceLineNo">14173</span> if (it.isOutputDouble()) {<a name="line.14173"></a>
<span class="sourceLineNo">14174</span> while (it.hasNext()) {<a name="line.14174"></a>
<span class="sourceLineNo">14175</span> final double iax = it.aDouble;<a name="line.14175"></a>
<span class="sourceLineNo">14176</span> final double ibx = it.bDouble;<a name="line.14176"></a>
<span class="sourceLineNo">14177</span> byte ox;<a name="line.14177"></a>
<span class="sourceLineNo">14178</span> ox = (byte) toLong(Math.min(iax, ibx));<a name="line.14178"></a>
<span class="sourceLineNo">14179</span> for (int j = 0; j &lt; is; j++) {<a name="line.14179"></a>
<span class="sourceLineNo">14180</span> oai8data[it.oIndex + j] = ox;<a name="line.14180"></a>
<span class="sourceLineNo">14181</span> }<a name="line.14181"></a>
<span class="sourceLineNo">14182</span> }<a name="line.14182"></a>
<span class="sourceLineNo">14183</span> } else {<a name="line.14183"></a>
<span class="sourceLineNo">14184</span> while (it.hasNext()) {<a name="line.14184"></a>
<span class="sourceLineNo">14185</span> final long iax = it.aLong;<a name="line.14185"></a>
<span class="sourceLineNo">14186</span> final long ibx = it.bLong;<a name="line.14186"></a>
<span class="sourceLineNo">14187</span> byte ox;<a name="line.14187"></a>
<span class="sourceLineNo">14188</span> ox = (byte) toLong(Math.min(iax, ibx));<a name="line.14188"></a>
<span class="sourceLineNo">14189</span> for (int j = 0; j &lt; is; j++) {<a name="line.14189"></a>
<span class="sourceLineNo">14190</span> oai8data[it.oIndex + j] = ox;<a name="line.14190"></a>
<span class="sourceLineNo">14191</span> }<a name="line.14191"></a>
<span class="sourceLineNo">14192</span> }<a name="line.14192"></a>
<span class="sourceLineNo">14193</span> }<a name="line.14193"></a>
<span class="sourceLineNo">14194</span> } else {<a name="line.14194"></a>
<span class="sourceLineNo">14195</span> if (it.isOutputDouble()) {<a name="line.14195"></a>
<span class="sourceLineNo">14196</span> while (it.hasNext()) {<a name="line.14196"></a>
<span class="sourceLineNo">14197</span> double iax = it.aDouble;<a name="line.14197"></a>
<span class="sourceLineNo">14198</span> double ibx = it.bDouble;<a name="line.14198"></a>
<span class="sourceLineNo">14199</span> byte ox;<a name="line.14199"></a>
<span class="sourceLineNo">14200</span> ox = (byte) toLong(Math.min(iax, ibx));<a name="line.14200"></a>
<span class="sourceLineNo">14201</span> oai8data[it.oIndex] = ox;<a name="line.14201"></a>
<span class="sourceLineNo">14202</span> for (int j = 1; j &lt; is; j++) {<a name="line.14202"></a>
<span class="sourceLineNo">14203</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.14203"></a>
<span class="sourceLineNo">14204</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.14204"></a>
<span class="sourceLineNo">14205</span> ox = (byte) toLong(Math.min(iax, ibx));<a name="line.14205"></a>
<span class="sourceLineNo">14206</span> oai8data[it.oIndex + j] = ox;<a name="line.14206"></a>
<span class="sourceLineNo">14207</span> }<a name="line.14207"></a>
<span class="sourceLineNo">14208</span> }<a name="line.14208"></a>
<span class="sourceLineNo">14209</span> } else {<a name="line.14209"></a>
<span class="sourceLineNo">14210</span> while (it.hasNext()) {<a name="line.14210"></a>
<span class="sourceLineNo">14211</span> long iax = it.aLong;<a name="line.14211"></a>
<span class="sourceLineNo">14212</span> long ibx = it.bLong;<a name="line.14212"></a>
<span class="sourceLineNo">14213</span> byte ox;<a name="line.14213"></a>
<span class="sourceLineNo">14214</span> ox = (byte) toLong(Math.min(iax, ibx));<a name="line.14214"></a>
<span class="sourceLineNo">14215</span> oai8data[it.oIndex] = ox;<a name="line.14215"></a>
<span class="sourceLineNo">14216</span> for (int j = 1; j &lt; is; j++) {<a name="line.14216"></a>
<span class="sourceLineNo">14217</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.14217"></a>
<span class="sourceLineNo">14218</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.14218"></a>
<span class="sourceLineNo">14219</span> ox = (byte) toLong(Math.min(iax, ibx));<a name="line.14219"></a>
<span class="sourceLineNo">14220</span> oai8data[it.oIndex + j] = ox;<a name="line.14220"></a>
<span class="sourceLineNo">14221</span> }<a name="line.14221"></a>
<span class="sourceLineNo">14222</span> }<a name="line.14222"></a>
<span class="sourceLineNo">14223</span> }<a name="line.14223"></a>
<span class="sourceLineNo">14224</span> }<a name="line.14224"></a>
<span class="sourceLineNo">14225</span> break;<a name="line.14225"></a>
<span class="sourceLineNo">14226</span> case Dataset.ARRAYINT16:<a name="line.14226"></a>
<span class="sourceLineNo">14227</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.14227"></a>
<span class="sourceLineNo">14228</span> if (is == 1) {<a name="line.14228"></a>
<span class="sourceLineNo">14229</span> if (it.isOutputDouble()) {<a name="line.14229"></a>
<span class="sourceLineNo">14230</span> while (it.hasNext()) {<a name="line.14230"></a>
<span class="sourceLineNo">14231</span> final double iax = it.aDouble;<a name="line.14231"></a>
<span class="sourceLineNo">14232</span> final double ibx = it.bDouble;<a name="line.14232"></a>
<span class="sourceLineNo">14233</span> short ox;<a name="line.14233"></a>
<span class="sourceLineNo">14234</span> ox = (short) toLong(Math.min(iax, ibx));<a name="line.14234"></a>
<span class="sourceLineNo">14235</span> oai16data[it.oIndex] = ox;<a name="line.14235"></a>
<span class="sourceLineNo">14236</span> }<a name="line.14236"></a>
<span class="sourceLineNo">14237</span> } else {<a name="line.14237"></a>
<span class="sourceLineNo">14238</span> while (it.hasNext()) {<a name="line.14238"></a>
<span class="sourceLineNo">14239</span> final long iax = it.aLong;<a name="line.14239"></a>
<span class="sourceLineNo">14240</span> final long ibx = it.bLong;<a name="line.14240"></a>
<span class="sourceLineNo">14241</span> short ox;<a name="line.14241"></a>
<span class="sourceLineNo">14242</span> ox = (short) toLong(Math.min(iax, ibx));<a name="line.14242"></a>
<span class="sourceLineNo">14243</span> oai16data[it.oIndex] = ox;<a name="line.14243"></a>
<span class="sourceLineNo">14244</span> }<a name="line.14244"></a>
<span class="sourceLineNo">14245</span> }<a name="line.14245"></a>
<span class="sourceLineNo">14246</span> } else if (as &lt; bs) {<a name="line.14246"></a>
<span class="sourceLineNo">14247</span> if (it.isOutputDouble()) {<a name="line.14247"></a>
<span class="sourceLineNo">14248</span> while (it.hasNext()) {<a name="line.14248"></a>
<span class="sourceLineNo">14249</span> final double iax = it.aDouble;<a name="line.14249"></a>
<span class="sourceLineNo">14250</span> double ibx = it.bDouble;<a name="line.14250"></a>
<span class="sourceLineNo">14251</span> short ox;<a name="line.14251"></a>
<span class="sourceLineNo">14252</span> ox = (short) toLong(Math.min(iax, ibx));<a name="line.14252"></a>
<span class="sourceLineNo">14253</span> oai16data[it.oIndex] = ox;<a name="line.14253"></a>
<span class="sourceLineNo">14254</span> for (int j = 1; j &lt; is; j++) {<a name="line.14254"></a>
<span class="sourceLineNo">14255</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.14255"></a>
<span class="sourceLineNo">14256</span> ox = (short) toLong(Math.min(iax, ibx));<a name="line.14256"></a>
<span class="sourceLineNo">14257</span> oai16data[it.oIndex + j] = ox;<a name="line.14257"></a>
<span class="sourceLineNo">14258</span> }<a name="line.14258"></a>
<span class="sourceLineNo">14259</span> }<a name="line.14259"></a>
<span class="sourceLineNo">14260</span> } else {<a name="line.14260"></a>
<span class="sourceLineNo">14261</span> while (it.hasNext()) {<a name="line.14261"></a>
<span class="sourceLineNo">14262</span> final long iax = it.aLong;<a name="line.14262"></a>
<span class="sourceLineNo">14263</span> long ibx = it.bLong;<a name="line.14263"></a>
<span class="sourceLineNo">14264</span> short ox;<a name="line.14264"></a>
<span class="sourceLineNo">14265</span> ox = (short) toLong(Math.min(iax, ibx));<a name="line.14265"></a>
<span class="sourceLineNo">14266</span> oai16data[it.oIndex] = ox;<a name="line.14266"></a>
<span class="sourceLineNo">14267</span> for (int j = 1; j &lt; is; j++) {<a name="line.14267"></a>
<span class="sourceLineNo">14268</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.14268"></a>
<span class="sourceLineNo">14269</span> ox = (short) toLong(Math.min(iax, ibx));<a name="line.14269"></a>
<span class="sourceLineNo">14270</span> oai16data[it.oIndex + j] = ox;<a name="line.14270"></a>
<span class="sourceLineNo">14271</span> }<a name="line.14271"></a>
<span class="sourceLineNo">14272</span> }<a name="line.14272"></a>
<span class="sourceLineNo">14273</span> }<a name="line.14273"></a>
<span class="sourceLineNo">14274</span> } else if (as &gt; bs) {<a name="line.14274"></a>
<span class="sourceLineNo">14275</span> if (it.isOutputDouble()) {<a name="line.14275"></a>
<span class="sourceLineNo">14276</span> while (it.hasNext()) {<a name="line.14276"></a>
<span class="sourceLineNo">14277</span> double iax = it.aDouble;<a name="line.14277"></a>
<span class="sourceLineNo">14278</span> final double ibx = it.bDouble;<a name="line.14278"></a>
<span class="sourceLineNo">14279</span> short ox;<a name="line.14279"></a>
<span class="sourceLineNo">14280</span> ox = (short) toLong(Math.min(iax, ibx));<a name="line.14280"></a>
<span class="sourceLineNo">14281</span> oai16data[it.oIndex] = ox;<a name="line.14281"></a>
<span class="sourceLineNo">14282</span> for (int j = 1; j &lt; is; j++) {<a name="line.14282"></a>
<span class="sourceLineNo">14283</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.14283"></a>
<span class="sourceLineNo">14284</span> ox = (short) toLong(Math.min(iax, ibx));<a name="line.14284"></a>
<span class="sourceLineNo">14285</span> oai16data[it.oIndex + j] = ox;<a name="line.14285"></a>
<span class="sourceLineNo">14286</span> }<a name="line.14286"></a>
<span class="sourceLineNo">14287</span> }<a name="line.14287"></a>
<span class="sourceLineNo">14288</span> } else {<a name="line.14288"></a>
<span class="sourceLineNo">14289</span> while (it.hasNext()) {<a name="line.14289"></a>
<span class="sourceLineNo">14290</span> long iax = it.aLong;<a name="line.14290"></a>
<span class="sourceLineNo">14291</span> final long ibx = it.bLong;<a name="line.14291"></a>
<span class="sourceLineNo">14292</span> short ox;<a name="line.14292"></a>
<span class="sourceLineNo">14293</span> ox = (short) toLong(Math.min(iax, ibx));<a name="line.14293"></a>
<span class="sourceLineNo">14294</span> oai16data[it.oIndex] = ox;<a name="line.14294"></a>
<span class="sourceLineNo">14295</span> for (int j = 1; j &lt; is; j++) {<a name="line.14295"></a>
<span class="sourceLineNo">14296</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.14296"></a>
<span class="sourceLineNo">14297</span> ox = (short) toLong(Math.min(iax, ibx));<a name="line.14297"></a>
<span class="sourceLineNo">14298</span> oai16data[it.oIndex + j] = ox;<a name="line.14298"></a>
<span class="sourceLineNo">14299</span> }<a name="line.14299"></a>
<span class="sourceLineNo">14300</span> }<a name="line.14300"></a>
<span class="sourceLineNo">14301</span> }<a name="line.14301"></a>
<span class="sourceLineNo">14302</span> } else if (as == 1) {<a name="line.14302"></a>
<span class="sourceLineNo">14303</span> if (it.isOutputDouble()) {<a name="line.14303"></a>
<span class="sourceLineNo">14304</span> while (it.hasNext()) {<a name="line.14304"></a>
<span class="sourceLineNo">14305</span> final double iax = it.aDouble;<a name="line.14305"></a>
<span class="sourceLineNo">14306</span> final double ibx = it.bDouble;<a name="line.14306"></a>
<span class="sourceLineNo">14307</span> short ox;<a name="line.14307"></a>
<span class="sourceLineNo">14308</span> ox = (short) toLong(Math.min(iax, ibx));<a name="line.14308"></a>
<span class="sourceLineNo">14309</span> for (int j = 0; j &lt; is; j++) {<a name="line.14309"></a>
<span class="sourceLineNo">14310</span> oai16data[it.oIndex + j] = ox;<a name="line.14310"></a>
<span class="sourceLineNo">14311</span> }<a name="line.14311"></a>
<span class="sourceLineNo">14312</span> }<a name="line.14312"></a>
<span class="sourceLineNo">14313</span> } else {<a name="line.14313"></a>
<span class="sourceLineNo">14314</span> while (it.hasNext()) {<a name="line.14314"></a>
<span class="sourceLineNo">14315</span> final long iax = it.aLong;<a name="line.14315"></a>
<span class="sourceLineNo">14316</span> final long ibx = it.bLong;<a name="line.14316"></a>
<span class="sourceLineNo">14317</span> short ox;<a name="line.14317"></a>
<span class="sourceLineNo">14318</span> ox = (short) toLong(Math.min(iax, ibx));<a name="line.14318"></a>
<span class="sourceLineNo">14319</span> for (int j = 0; j &lt; is; j++) {<a name="line.14319"></a>
<span class="sourceLineNo">14320</span> oai16data[it.oIndex + j] = ox;<a name="line.14320"></a>
<span class="sourceLineNo">14321</span> }<a name="line.14321"></a>
<span class="sourceLineNo">14322</span> }<a name="line.14322"></a>
<span class="sourceLineNo">14323</span> }<a name="line.14323"></a>
<span class="sourceLineNo">14324</span> } else {<a name="line.14324"></a>
<span class="sourceLineNo">14325</span> if (it.isOutputDouble()) {<a name="line.14325"></a>
<span class="sourceLineNo">14326</span> while (it.hasNext()) {<a name="line.14326"></a>
<span class="sourceLineNo">14327</span> double iax = it.aDouble;<a name="line.14327"></a>
<span class="sourceLineNo">14328</span> double ibx = it.bDouble;<a name="line.14328"></a>
<span class="sourceLineNo">14329</span> short ox;<a name="line.14329"></a>
<span class="sourceLineNo">14330</span> ox = (short) toLong(Math.min(iax, ibx));<a name="line.14330"></a>
<span class="sourceLineNo">14331</span> oai16data[it.oIndex] = ox;<a name="line.14331"></a>
<span class="sourceLineNo">14332</span> for (int j = 1; j &lt; is; j++) {<a name="line.14332"></a>
<span class="sourceLineNo">14333</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.14333"></a>
<span class="sourceLineNo">14334</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.14334"></a>
<span class="sourceLineNo">14335</span> ox = (short) toLong(Math.min(iax, ibx));<a name="line.14335"></a>
<span class="sourceLineNo">14336</span> oai16data[it.oIndex + j] = ox;<a name="line.14336"></a>
<span class="sourceLineNo">14337</span> }<a name="line.14337"></a>
<span class="sourceLineNo">14338</span> }<a name="line.14338"></a>
<span class="sourceLineNo">14339</span> } else {<a name="line.14339"></a>
<span class="sourceLineNo">14340</span> while (it.hasNext()) {<a name="line.14340"></a>
<span class="sourceLineNo">14341</span> long iax = it.aLong;<a name="line.14341"></a>
<span class="sourceLineNo">14342</span> long ibx = it.bLong;<a name="line.14342"></a>
<span class="sourceLineNo">14343</span> short ox;<a name="line.14343"></a>
<span class="sourceLineNo">14344</span> ox = (short) toLong(Math.min(iax, ibx));<a name="line.14344"></a>
<span class="sourceLineNo">14345</span> oai16data[it.oIndex] = ox;<a name="line.14345"></a>
<span class="sourceLineNo">14346</span> for (int j = 1; j &lt; is; j++) {<a name="line.14346"></a>
<span class="sourceLineNo">14347</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.14347"></a>
<span class="sourceLineNo">14348</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.14348"></a>
<span class="sourceLineNo">14349</span> ox = (short) toLong(Math.min(iax, ibx));<a name="line.14349"></a>
<span class="sourceLineNo">14350</span> oai16data[it.oIndex + j] = ox;<a name="line.14350"></a>
<span class="sourceLineNo">14351</span> }<a name="line.14351"></a>
<span class="sourceLineNo">14352</span> }<a name="line.14352"></a>
<span class="sourceLineNo">14353</span> }<a name="line.14353"></a>
<span class="sourceLineNo">14354</span> }<a name="line.14354"></a>
<span class="sourceLineNo">14355</span> break;<a name="line.14355"></a>
<span class="sourceLineNo">14356</span> case Dataset.ARRAYINT64:<a name="line.14356"></a>
<span class="sourceLineNo">14357</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.14357"></a>
<span class="sourceLineNo">14358</span> if (is == 1) {<a name="line.14358"></a>
<span class="sourceLineNo">14359</span> if (it.isOutputDouble()) {<a name="line.14359"></a>
<span class="sourceLineNo">14360</span> while (it.hasNext()) {<a name="line.14360"></a>
<span class="sourceLineNo">14361</span> final double iax = it.aDouble;<a name="line.14361"></a>
<span class="sourceLineNo">14362</span> final double ibx = it.bDouble;<a name="line.14362"></a>
<span class="sourceLineNo">14363</span> long ox;<a name="line.14363"></a>
<span class="sourceLineNo">14364</span> ox = toLong(Math.min(iax, ibx));<a name="line.14364"></a>
<span class="sourceLineNo">14365</span> oai64data[it.oIndex] = ox;<a name="line.14365"></a>
<span class="sourceLineNo">14366</span> }<a name="line.14366"></a>
<span class="sourceLineNo">14367</span> } else {<a name="line.14367"></a>
<span class="sourceLineNo">14368</span> while (it.hasNext()) {<a name="line.14368"></a>
<span class="sourceLineNo">14369</span> final long iax = it.aLong;<a name="line.14369"></a>
<span class="sourceLineNo">14370</span> final long ibx = it.bLong;<a name="line.14370"></a>
<span class="sourceLineNo">14371</span> long ox;<a name="line.14371"></a>
<span class="sourceLineNo">14372</span> ox = toLong(Math.min(iax, ibx));<a name="line.14372"></a>
<span class="sourceLineNo">14373</span> oai64data[it.oIndex] = ox;<a name="line.14373"></a>
<span class="sourceLineNo">14374</span> }<a name="line.14374"></a>
<span class="sourceLineNo">14375</span> }<a name="line.14375"></a>
<span class="sourceLineNo">14376</span> } else if (as &lt; bs) {<a name="line.14376"></a>
<span class="sourceLineNo">14377</span> if (it.isOutputDouble()) {<a name="line.14377"></a>
<span class="sourceLineNo">14378</span> while (it.hasNext()) {<a name="line.14378"></a>
<span class="sourceLineNo">14379</span> final double iax = it.aDouble;<a name="line.14379"></a>
<span class="sourceLineNo">14380</span> double ibx = it.bDouble;<a name="line.14380"></a>
<span class="sourceLineNo">14381</span> long ox;<a name="line.14381"></a>
<span class="sourceLineNo">14382</span> ox = toLong(Math.min(iax, ibx));<a name="line.14382"></a>
<span class="sourceLineNo">14383</span> oai64data[it.oIndex] = ox;<a name="line.14383"></a>
<span class="sourceLineNo">14384</span> for (int j = 1; j &lt; is; j++) {<a name="line.14384"></a>
<span class="sourceLineNo">14385</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.14385"></a>
<span class="sourceLineNo">14386</span> ox = toLong(Math.min(iax, ibx));<a name="line.14386"></a>
<span class="sourceLineNo">14387</span> oai64data[it.oIndex + j] = ox;<a name="line.14387"></a>
<span class="sourceLineNo">14388</span> }<a name="line.14388"></a>
<span class="sourceLineNo">14389</span> }<a name="line.14389"></a>
<span class="sourceLineNo">14390</span> } else {<a name="line.14390"></a>
<span class="sourceLineNo">14391</span> while (it.hasNext()) {<a name="line.14391"></a>
<span class="sourceLineNo">14392</span> final long iax = it.aLong;<a name="line.14392"></a>
<span class="sourceLineNo">14393</span> long ibx = it.bLong;<a name="line.14393"></a>
<span class="sourceLineNo">14394</span> long ox;<a name="line.14394"></a>
<span class="sourceLineNo">14395</span> ox = toLong(Math.min(iax, ibx));<a name="line.14395"></a>
<span class="sourceLineNo">14396</span> oai64data[it.oIndex] = ox;<a name="line.14396"></a>
<span class="sourceLineNo">14397</span> for (int j = 1; j &lt; is; j++) {<a name="line.14397"></a>
<span class="sourceLineNo">14398</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.14398"></a>
<span class="sourceLineNo">14399</span> ox = toLong(Math.min(iax, ibx));<a name="line.14399"></a>
<span class="sourceLineNo">14400</span> oai64data[it.oIndex + j] = ox;<a name="line.14400"></a>
<span class="sourceLineNo">14401</span> }<a name="line.14401"></a>
<span class="sourceLineNo">14402</span> }<a name="line.14402"></a>
<span class="sourceLineNo">14403</span> }<a name="line.14403"></a>
<span class="sourceLineNo">14404</span> } else if (as &gt; bs) {<a name="line.14404"></a>
<span class="sourceLineNo">14405</span> if (it.isOutputDouble()) {<a name="line.14405"></a>
<span class="sourceLineNo">14406</span> while (it.hasNext()) {<a name="line.14406"></a>
<span class="sourceLineNo">14407</span> double iax = it.aDouble;<a name="line.14407"></a>
<span class="sourceLineNo">14408</span> final double ibx = it.bDouble;<a name="line.14408"></a>
<span class="sourceLineNo">14409</span> long ox;<a name="line.14409"></a>
<span class="sourceLineNo">14410</span> ox = toLong(Math.min(iax, ibx));<a name="line.14410"></a>
<span class="sourceLineNo">14411</span> oai64data[it.oIndex] = ox;<a name="line.14411"></a>
<span class="sourceLineNo">14412</span> for (int j = 1; j &lt; is; j++) {<a name="line.14412"></a>
<span class="sourceLineNo">14413</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.14413"></a>
<span class="sourceLineNo">14414</span> ox = toLong(Math.min(iax, ibx));<a name="line.14414"></a>
<span class="sourceLineNo">14415</span> oai64data[it.oIndex + j] = ox;<a name="line.14415"></a>
<span class="sourceLineNo">14416</span> }<a name="line.14416"></a>
<span class="sourceLineNo">14417</span> }<a name="line.14417"></a>
<span class="sourceLineNo">14418</span> } else {<a name="line.14418"></a>
<span class="sourceLineNo">14419</span> while (it.hasNext()) {<a name="line.14419"></a>
<span class="sourceLineNo">14420</span> long iax = it.aLong;<a name="line.14420"></a>
<span class="sourceLineNo">14421</span> final long ibx = it.bLong;<a name="line.14421"></a>
<span class="sourceLineNo">14422</span> long ox;<a name="line.14422"></a>
<span class="sourceLineNo">14423</span> ox = toLong(Math.min(iax, ibx));<a name="line.14423"></a>
<span class="sourceLineNo">14424</span> oai64data[it.oIndex] = ox;<a name="line.14424"></a>
<span class="sourceLineNo">14425</span> for (int j = 1; j &lt; is; j++) {<a name="line.14425"></a>
<span class="sourceLineNo">14426</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.14426"></a>
<span class="sourceLineNo">14427</span> ox = toLong(Math.min(iax, ibx));<a name="line.14427"></a>
<span class="sourceLineNo">14428</span> oai64data[it.oIndex + j] = ox;<a name="line.14428"></a>
<span class="sourceLineNo">14429</span> }<a name="line.14429"></a>
<span class="sourceLineNo">14430</span> }<a name="line.14430"></a>
<span class="sourceLineNo">14431</span> }<a name="line.14431"></a>
<span class="sourceLineNo">14432</span> } else if (as == 1) {<a name="line.14432"></a>
<span class="sourceLineNo">14433</span> if (it.isOutputDouble()) {<a name="line.14433"></a>
<span class="sourceLineNo">14434</span> while (it.hasNext()) {<a name="line.14434"></a>
<span class="sourceLineNo">14435</span> final double iax = it.aDouble;<a name="line.14435"></a>
<span class="sourceLineNo">14436</span> final double ibx = it.bDouble;<a name="line.14436"></a>
<span class="sourceLineNo">14437</span> long ox;<a name="line.14437"></a>
<span class="sourceLineNo">14438</span> ox = toLong(Math.min(iax, ibx));<a name="line.14438"></a>
<span class="sourceLineNo">14439</span> for (int j = 0; j &lt; is; j++) {<a name="line.14439"></a>
<span class="sourceLineNo">14440</span> oai64data[it.oIndex + j] = ox;<a name="line.14440"></a>
<span class="sourceLineNo">14441</span> }<a name="line.14441"></a>
<span class="sourceLineNo">14442</span> }<a name="line.14442"></a>
<span class="sourceLineNo">14443</span> } else {<a name="line.14443"></a>
<span class="sourceLineNo">14444</span> while (it.hasNext()) {<a name="line.14444"></a>
<span class="sourceLineNo">14445</span> final long iax = it.aLong;<a name="line.14445"></a>
<span class="sourceLineNo">14446</span> final long ibx = it.bLong;<a name="line.14446"></a>
<span class="sourceLineNo">14447</span> long ox;<a name="line.14447"></a>
<span class="sourceLineNo">14448</span> ox = toLong(Math.min(iax, ibx));<a name="line.14448"></a>
<span class="sourceLineNo">14449</span> for (int j = 0; j &lt; is; j++) {<a name="line.14449"></a>
<span class="sourceLineNo">14450</span> oai64data[it.oIndex + j] = ox;<a name="line.14450"></a>
<span class="sourceLineNo">14451</span> }<a name="line.14451"></a>
<span class="sourceLineNo">14452</span> }<a name="line.14452"></a>
<span class="sourceLineNo">14453</span> }<a name="line.14453"></a>
<span class="sourceLineNo">14454</span> } else {<a name="line.14454"></a>
<span class="sourceLineNo">14455</span> if (it.isOutputDouble()) {<a name="line.14455"></a>
<span class="sourceLineNo">14456</span> while (it.hasNext()) {<a name="line.14456"></a>
<span class="sourceLineNo">14457</span> double iax = it.aDouble;<a name="line.14457"></a>
<span class="sourceLineNo">14458</span> double ibx = it.bDouble;<a name="line.14458"></a>
<span class="sourceLineNo">14459</span> long ox;<a name="line.14459"></a>
<span class="sourceLineNo">14460</span> ox = toLong(Math.min(iax, ibx));<a name="line.14460"></a>
<span class="sourceLineNo">14461</span> oai64data[it.oIndex] = ox;<a name="line.14461"></a>
<span class="sourceLineNo">14462</span> for (int j = 1; j &lt; is; j++) {<a name="line.14462"></a>
<span class="sourceLineNo">14463</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.14463"></a>
<span class="sourceLineNo">14464</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.14464"></a>
<span class="sourceLineNo">14465</span> ox = toLong(Math.min(iax, ibx));<a name="line.14465"></a>
<span class="sourceLineNo">14466</span> oai64data[it.oIndex + j] = ox;<a name="line.14466"></a>
<span class="sourceLineNo">14467</span> }<a name="line.14467"></a>
<span class="sourceLineNo">14468</span> }<a name="line.14468"></a>
<span class="sourceLineNo">14469</span> } else {<a name="line.14469"></a>
<span class="sourceLineNo">14470</span> while (it.hasNext()) {<a name="line.14470"></a>
<span class="sourceLineNo">14471</span> long iax = it.aLong;<a name="line.14471"></a>
<span class="sourceLineNo">14472</span> long ibx = it.bLong;<a name="line.14472"></a>
<span class="sourceLineNo">14473</span> long ox;<a name="line.14473"></a>
<span class="sourceLineNo">14474</span> ox = toLong(Math.min(iax, ibx));<a name="line.14474"></a>
<span class="sourceLineNo">14475</span> oai64data[it.oIndex] = ox;<a name="line.14475"></a>
<span class="sourceLineNo">14476</span> for (int j = 1; j &lt; is; j++) {<a name="line.14476"></a>
<span class="sourceLineNo">14477</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.14477"></a>
<span class="sourceLineNo">14478</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.14478"></a>
<span class="sourceLineNo">14479</span> ox = toLong(Math.min(iax, ibx));<a name="line.14479"></a>
<span class="sourceLineNo">14480</span> oai64data[it.oIndex + j] = ox;<a name="line.14480"></a>
<span class="sourceLineNo">14481</span> }<a name="line.14481"></a>
<span class="sourceLineNo">14482</span> }<a name="line.14482"></a>
<span class="sourceLineNo">14483</span> }<a name="line.14483"></a>
<span class="sourceLineNo">14484</span> }<a name="line.14484"></a>
<span class="sourceLineNo">14485</span> break;<a name="line.14485"></a>
<span class="sourceLineNo">14486</span> case Dataset.ARRAYINT32:<a name="line.14486"></a>
<span class="sourceLineNo">14487</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.14487"></a>
<span class="sourceLineNo">14488</span> if (is == 1) {<a name="line.14488"></a>
<span class="sourceLineNo">14489</span> if (it.isOutputDouble()) {<a name="line.14489"></a>
<span class="sourceLineNo">14490</span> while (it.hasNext()) {<a name="line.14490"></a>
<span class="sourceLineNo">14491</span> final double iax = it.aDouble;<a name="line.14491"></a>
<span class="sourceLineNo">14492</span> final double ibx = it.bDouble;<a name="line.14492"></a>
<span class="sourceLineNo">14493</span> int ox;<a name="line.14493"></a>
<span class="sourceLineNo">14494</span> ox = (int) toLong(Math.min(iax, ibx));<a name="line.14494"></a>
<span class="sourceLineNo">14495</span> oai32data[it.oIndex] = ox;<a name="line.14495"></a>
<span class="sourceLineNo">14496</span> }<a name="line.14496"></a>
<span class="sourceLineNo">14497</span> } else {<a name="line.14497"></a>
<span class="sourceLineNo">14498</span> while (it.hasNext()) {<a name="line.14498"></a>
<span class="sourceLineNo">14499</span> final long iax = it.aLong;<a name="line.14499"></a>
<span class="sourceLineNo">14500</span> final long ibx = it.bLong;<a name="line.14500"></a>
<span class="sourceLineNo">14501</span> int ox;<a name="line.14501"></a>
<span class="sourceLineNo">14502</span> ox = (int) toLong(Math.min(iax, ibx));<a name="line.14502"></a>
<span class="sourceLineNo">14503</span> oai32data[it.oIndex] = ox;<a name="line.14503"></a>
<span class="sourceLineNo">14504</span> }<a name="line.14504"></a>
<span class="sourceLineNo">14505</span> }<a name="line.14505"></a>
<span class="sourceLineNo">14506</span> } else if (as &lt; bs) {<a name="line.14506"></a>
<span class="sourceLineNo">14507</span> if (it.isOutputDouble()) {<a name="line.14507"></a>
<span class="sourceLineNo">14508</span> while (it.hasNext()) {<a name="line.14508"></a>
<span class="sourceLineNo">14509</span> final double iax = it.aDouble;<a name="line.14509"></a>
<span class="sourceLineNo">14510</span> double ibx = it.bDouble;<a name="line.14510"></a>
<span class="sourceLineNo">14511</span> int ox;<a name="line.14511"></a>
<span class="sourceLineNo">14512</span> ox = (int) toLong(Math.min(iax, ibx));<a name="line.14512"></a>
<span class="sourceLineNo">14513</span> oai32data[it.oIndex] = ox;<a name="line.14513"></a>
<span class="sourceLineNo">14514</span> for (int j = 1; j &lt; is; j++) {<a name="line.14514"></a>
<span class="sourceLineNo">14515</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.14515"></a>
<span class="sourceLineNo">14516</span> ox = (int) toLong(Math.min(iax, ibx));<a name="line.14516"></a>
<span class="sourceLineNo">14517</span> oai32data[it.oIndex + j] = ox;<a name="line.14517"></a>
<span class="sourceLineNo">14518</span> }<a name="line.14518"></a>
<span class="sourceLineNo">14519</span> }<a name="line.14519"></a>
<span class="sourceLineNo">14520</span> } else {<a name="line.14520"></a>
<span class="sourceLineNo">14521</span> while (it.hasNext()) {<a name="line.14521"></a>
<span class="sourceLineNo">14522</span> final long iax = it.aLong;<a name="line.14522"></a>
<span class="sourceLineNo">14523</span> long ibx = it.bLong;<a name="line.14523"></a>
<span class="sourceLineNo">14524</span> int ox;<a name="line.14524"></a>
<span class="sourceLineNo">14525</span> ox = (int) toLong(Math.min(iax, ibx));<a name="line.14525"></a>
<span class="sourceLineNo">14526</span> oai32data[it.oIndex] = ox;<a name="line.14526"></a>
<span class="sourceLineNo">14527</span> for (int j = 1; j &lt; is; j++) {<a name="line.14527"></a>
<span class="sourceLineNo">14528</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.14528"></a>
<span class="sourceLineNo">14529</span> ox = (int) toLong(Math.min(iax, ibx));<a name="line.14529"></a>
<span class="sourceLineNo">14530</span> oai32data[it.oIndex + j] = ox;<a name="line.14530"></a>
<span class="sourceLineNo">14531</span> }<a name="line.14531"></a>
<span class="sourceLineNo">14532</span> }<a name="line.14532"></a>
<span class="sourceLineNo">14533</span> }<a name="line.14533"></a>
<span class="sourceLineNo">14534</span> } else if (as &gt; bs) {<a name="line.14534"></a>
<span class="sourceLineNo">14535</span> if (it.isOutputDouble()) {<a name="line.14535"></a>
<span class="sourceLineNo">14536</span> while (it.hasNext()) {<a name="line.14536"></a>
<span class="sourceLineNo">14537</span> double iax = it.aDouble;<a name="line.14537"></a>
<span class="sourceLineNo">14538</span> final double ibx = it.bDouble;<a name="line.14538"></a>
<span class="sourceLineNo">14539</span> int ox;<a name="line.14539"></a>
<span class="sourceLineNo">14540</span> ox = (int) toLong(Math.min(iax, ibx));<a name="line.14540"></a>
<span class="sourceLineNo">14541</span> oai32data[it.oIndex] = ox;<a name="line.14541"></a>
<span class="sourceLineNo">14542</span> for (int j = 1; j &lt; is; j++) {<a name="line.14542"></a>
<span class="sourceLineNo">14543</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.14543"></a>
<span class="sourceLineNo">14544</span> ox = (int) toLong(Math.min(iax, ibx));<a name="line.14544"></a>
<span class="sourceLineNo">14545</span> oai32data[it.oIndex + j] = ox;<a name="line.14545"></a>
<span class="sourceLineNo">14546</span> }<a name="line.14546"></a>
<span class="sourceLineNo">14547</span> }<a name="line.14547"></a>
<span class="sourceLineNo">14548</span> } else {<a name="line.14548"></a>
<span class="sourceLineNo">14549</span> while (it.hasNext()) {<a name="line.14549"></a>
<span class="sourceLineNo">14550</span> long iax = it.aLong;<a name="line.14550"></a>
<span class="sourceLineNo">14551</span> final long ibx = it.bLong;<a name="line.14551"></a>
<span class="sourceLineNo">14552</span> int ox;<a name="line.14552"></a>
<span class="sourceLineNo">14553</span> ox = (int) toLong(Math.min(iax, ibx));<a name="line.14553"></a>
<span class="sourceLineNo">14554</span> oai32data[it.oIndex] = ox;<a name="line.14554"></a>
<span class="sourceLineNo">14555</span> for (int j = 1; j &lt; is; j++) {<a name="line.14555"></a>
<span class="sourceLineNo">14556</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.14556"></a>
<span class="sourceLineNo">14557</span> ox = (int) toLong(Math.min(iax, ibx));<a name="line.14557"></a>
<span class="sourceLineNo">14558</span> oai32data[it.oIndex + j] = ox;<a name="line.14558"></a>
<span class="sourceLineNo">14559</span> }<a name="line.14559"></a>
<span class="sourceLineNo">14560</span> }<a name="line.14560"></a>
<span class="sourceLineNo">14561</span> }<a name="line.14561"></a>
<span class="sourceLineNo">14562</span> } else if (as == 1) {<a name="line.14562"></a>
<span class="sourceLineNo">14563</span> if (it.isOutputDouble()) {<a name="line.14563"></a>
<span class="sourceLineNo">14564</span> while (it.hasNext()) {<a name="line.14564"></a>
<span class="sourceLineNo">14565</span> final double iax = it.aDouble;<a name="line.14565"></a>
<span class="sourceLineNo">14566</span> final double ibx = it.bDouble;<a name="line.14566"></a>
<span class="sourceLineNo">14567</span> int ox;<a name="line.14567"></a>
<span class="sourceLineNo">14568</span> ox = (int) toLong(Math.min(iax, ibx));<a name="line.14568"></a>
<span class="sourceLineNo">14569</span> for (int j = 0; j &lt; is; j++) {<a name="line.14569"></a>
<span class="sourceLineNo">14570</span> oai32data[it.oIndex + j] = ox;<a name="line.14570"></a>
<span class="sourceLineNo">14571</span> }<a name="line.14571"></a>
<span class="sourceLineNo">14572</span> }<a name="line.14572"></a>
<span class="sourceLineNo">14573</span> } else {<a name="line.14573"></a>
<span class="sourceLineNo">14574</span> while (it.hasNext()) {<a name="line.14574"></a>
<span class="sourceLineNo">14575</span> final long iax = it.aLong;<a name="line.14575"></a>
<span class="sourceLineNo">14576</span> final long ibx = it.bLong;<a name="line.14576"></a>
<span class="sourceLineNo">14577</span> int ox;<a name="line.14577"></a>
<span class="sourceLineNo">14578</span> ox = (int) toLong(Math.min(iax, ibx));<a name="line.14578"></a>
<span class="sourceLineNo">14579</span> for (int j = 0; j &lt; is; j++) {<a name="line.14579"></a>
<span class="sourceLineNo">14580</span> oai32data[it.oIndex + j] = ox;<a name="line.14580"></a>
<span class="sourceLineNo">14581</span> }<a name="line.14581"></a>
<span class="sourceLineNo">14582</span> }<a name="line.14582"></a>
<span class="sourceLineNo">14583</span> }<a name="line.14583"></a>
<span class="sourceLineNo">14584</span> } else {<a name="line.14584"></a>
<span class="sourceLineNo">14585</span> if (it.isOutputDouble()) {<a name="line.14585"></a>
<span class="sourceLineNo">14586</span> while (it.hasNext()) {<a name="line.14586"></a>
<span class="sourceLineNo">14587</span> double iax = it.aDouble;<a name="line.14587"></a>
<span class="sourceLineNo">14588</span> double ibx = it.bDouble;<a name="line.14588"></a>
<span class="sourceLineNo">14589</span> int ox;<a name="line.14589"></a>
<span class="sourceLineNo">14590</span> ox = (int) toLong(Math.min(iax, ibx));<a name="line.14590"></a>
<span class="sourceLineNo">14591</span> oai32data[it.oIndex] = ox;<a name="line.14591"></a>
<span class="sourceLineNo">14592</span> for (int j = 1; j &lt; is; j++) {<a name="line.14592"></a>
<span class="sourceLineNo">14593</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.14593"></a>
<span class="sourceLineNo">14594</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.14594"></a>
<span class="sourceLineNo">14595</span> ox = (int) toLong(Math.min(iax, ibx));<a name="line.14595"></a>
<span class="sourceLineNo">14596</span> oai32data[it.oIndex + j] = ox;<a name="line.14596"></a>
<span class="sourceLineNo">14597</span> }<a name="line.14597"></a>
<span class="sourceLineNo">14598</span> }<a name="line.14598"></a>
<span class="sourceLineNo">14599</span> } else {<a name="line.14599"></a>
<span class="sourceLineNo">14600</span> while (it.hasNext()) {<a name="line.14600"></a>
<span class="sourceLineNo">14601</span> long iax = it.aLong;<a name="line.14601"></a>
<span class="sourceLineNo">14602</span> long ibx = it.bLong;<a name="line.14602"></a>
<span class="sourceLineNo">14603</span> int ox;<a name="line.14603"></a>
<span class="sourceLineNo">14604</span> ox = (int) toLong(Math.min(iax, ibx));<a name="line.14604"></a>
<span class="sourceLineNo">14605</span> oai32data[it.oIndex] = ox;<a name="line.14605"></a>
<span class="sourceLineNo">14606</span> for (int j = 1; j &lt; is; j++) {<a name="line.14606"></a>
<span class="sourceLineNo">14607</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.14607"></a>
<span class="sourceLineNo">14608</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.14608"></a>
<span class="sourceLineNo">14609</span> ox = (int) toLong(Math.min(iax, ibx));<a name="line.14609"></a>
<span class="sourceLineNo">14610</span> oai32data[it.oIndex + j] = ox;<a name="line.14610"></a>
<span class="sourceLineNo">14611</span> }<a name="line.14611"></a>
<span class="sourceLineNo">14612</span> }<a name="line.14612"></a>
<span class="sourceLineNo">14613</span> }<a name="line.14613"></a>
<span class="sourceLineNo">14614</span> }<a name="line.14614"></a>
<span class="sourceLineNo">14615</span> break;<a name="line.14615"></a>
<span class="sourceLineNo">14616</span> case Dataset.FLOAT32:<a name="line.14616"></a>
<span class="sourceLineNo">14617</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.14617"></a>
<span class="sourceLineNo">14618</span> if (it.isOutputDouble()) {<a name="line.14618"></a>
<span class="sourceLineNo">14619</span> while (it.hasNext()) {<a name="line.14619"></a>
<span class="sourceLineNo">14620</span> final double iax = it.aDouble;<a name="line.14620"></a>
<span class="sourceLineNo">14621</span> final double ibx = it.bDouble;<a name="line.14621"></a>
<span class="sourceLineNo">14622</span> float ox;<a name="line.14622"></a>
<span class="sourceLineNo">14623</span> ox = (float) (Math.min(iax, ibx));<a name="line.14623"></a>
<span class="sourceLineNo">14624</span> of32data[it.oIndex] = ox;<a name="line.14624"></a>
<span class="sourceLineNo">14625</span> }<a name="line.14625"></a>
<span class="sourceLineNo">14626</span> } else {<a name="line.14626"></a>
<span class="sourceLineNo">14627</span> while (it.hasNext()) {<a name="line.14627"></a>
<span class="sourceLineNo">14628</span> final long iax = it.aLong;<a name="line.14628"></a>
<span class="sourceLineNo">14629</span> final long ibx = it.bLong;<a name="line.14629"></a>
<span class="sourceLineNo">14630</span> float ox;<a name="line.14630"></a>
<span class="sourceLineNo">14631</span> ox = (float) (Math.min(iax, ibx));<a name="line.14631"></a>
<span class="sourceLineNo">14632</span> of32data[it.oIndex] = ox;<a name="line.14632"></a>
<span class="sourceLineNo">14633</span> }<a name="line.14633"></a>
<span class="sourceLineNo">14634</span> }<a name="line.14634"></a>
<span class="sourceLineNo">14635</span> break;<a name="line.14635"></a>
<span class="sourceLineNo">14636</span> case Dataset.FLOAT64:<a name="line.14636"></a>
<span class="sourceLineNo">14637</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.14637"></a>
<span class="sourceLineNo">14638</span> if (it.isOutputDouble()) {<a name="line.14638"></a>
<span class="sourceLineNo">14639</span> while (it.hasNext()) {<a name="line.14639"></a>
<span class="sourceLineNo">14640</span> final double iax = it.aDouble;<a name="line.14640"></a>
<span class="sourceLineNo">14641</span> final double ibx = it.bDouble;<a name="line.14641"></a>
<span class="sourceLineNo">14642</span> double ox;<a name="line.14642"></a>
<span class="sourceLineNo">14643</span> ox = (Math.min(iax, ibx));<a name="line.14643"></a>
<span class="sourceLineNo">14644</span> of64data[it.oIndex] = ox;<a name="line.14644"></a>
<span class="sourceLineNo">14645</span> }<a name="line.14645"></a>
<span class="sourceLineNo">14646</span> } else {<a name="line.14646"></a>
<span class="sourceLineNo">14647</span> while (it.hasNext()) {<a name="line.14647"></a>
<span class="sourceLineNo">14648</span> final long iax = it.aLong;<a name="line.14648"></a>
<span class="sourceLineNo">14649</span> final long ibx = it.bLong;<a name="line.14649"></a>
<span class="sourceLineNo">14650</span> double ox;<a name="line.14650"></a>
<span class="sourceLineNo">14651</span> ox = (Math.min(iax, ibx));<a name="line.14651"></a>
<span class="sourceLineNo">14652</span> of64data[it.oIndex] = ox;<a name="line.14652"></a>
<span class="sourceLineNo">14653</span> }<a name="line.14653"></a>
<span class="sourceLineNo">14654</span> }<a name="line.14654"></a>
<span class="sourceLineNo">14655</span> break;<a name="line.14655"></a>
<span class="sourceLineNo">14656</span> case Dataset.ARRAYFLOAT32:<a name="line.14656"></a>
<span class="sourceLineNo">14657</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.14657"></a>
<span class="sourceLineNo">14658</span> if (is == 1) {<a name="line.14658"></a>
<span class="sourceLineNo">14659</span> if (it.isOutputDouble()) {<a name="line.14659"></a>
<span class="sourceLineNo">14660</span> while (it.hasNext()) {<a name="line.14660"></a>
<span class="sourceLineNo">14661</span> final double iax = it.aDouble;<a name="line.14661"></a>
<span class="sourceLineNo">14662</span> final double ibx = it.bDouble;<a name="line.14662"></a>
<span class="sourceLineNo">14663</span> float ox;<a name="line.14663"></a>
<span class="sourceLineNo">14664</span> ox = (float) (Math.min(iax, ibx));<a name="line.14664"></a>
<span class="sourceLineNo">14665</span> oaf32data[it.oIndex] = ox;<a name="line.14665"></a>
<span class="sourceLineNo">14666</span> }<a name="line.14666"></a>
<span class="sourceLineNo">14667</span> } else {<a name="line.14667"></a>
<span class="sourceLineNo">14668</span> while (it.hasNext()) {<a name="line.14668"></a>
<span class="sourceLineNo">14669</span> final long iax = it.aLong;<a name="line.14669"></a>
<span class="sourceLineNo">14670</span> final long ibx = it.bLong;<a name="line.14670"></a>
<span class="sourceLineNo">14671</span> float ox;<a name="line.14671"></a>
<span class="sourceLineNo">14672</span> ox = (float) (Math.min(iax, ibx));<a name="line.14672"></a>
<span class="sourceLineNo">14673</span> oaf32data[it.oIndex] = ox;<a name="line.14673"></a>
<span class="sourceLineNo">14674</span> }<a name="line.14674"></a>
<span class="sourceLineNo">14675</span> }<a name="line.14675"></a>
<span class="sourceLineNo">14676</span> } else if (as &lt; bs) {<a name="line.14676"></a>
<span class="sourceLineNo">14677</span> if (it.isOutputDouble()) {<a name="line.14677"></a>
<span class="sourceLineNo">14678</span> while (it.hasNext()) {<a name="line.14678"></a>
<span class="sourceLineNo">14679</span> final double iax = it.aDouble;<a name="line.14679"></a>
<span class="sourceLineNo">14680</span> double ibx = it.bDouble;<a name="line.14680"></a>
<span class="sourceLineNo">14681</span> float ox;<a name="line.14681"></a>
<span class="sourceLineNo">14682</span> ox = (float) (Math.min(iax, ibx));<a name="line.14682"></a>
<span class="sourceLineNo">14683</span> oaf32data[it.oIndex] = ox;<a name="line.14683"></a>
<span class="sourceLineNo">14684</span> for (int j = 1; j &lt; is; j++) {<a name="line.14684"></a>
<span class="sourceLineNo">14685</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.14685"></a>
<span class="sourceLineNo">14686</span> ox = (float) (Math.min(iax, ibx));<a name="line.14686"></a>
<span class="sourceLineNo">14687</span> oaf32data[it.oIndex + j] = ox;<a name="line.14687"></a>
<span class="sourceLineNo">14688</span> }<a name="line.14688"></a>
<span class="sourceLineNo">14689</span> }<a name="line.14689"></a>
<span class="sourceLineNo">14690</span> } else {<a name="line.14690"></a>
<span class="sourceLineNo">14691</span> while (it.hasNext()) {<a name="line.14691"></a>
<span class="sourceLineNo">14692</span> final long iax = it.aLong;<a name="line.14692"></a>
<span class="sourceLineNo">14693</span> long ibx = it.bLong;<a name="line.14693"></a>
<span class="sourceLineNo">14694</span> float ox;<a name="line.14694"></a>
<span class="sourceLineNo">14695</span> ox = (float) (Math.min(iax, ibx));<a name="line.14695"></a>
<span class="sourceLineNo">14696</span> oaf32data[it.oIndex] = ox;<a name="line.14696"></a>
<span class="sourceLineNo">14697</span> for (int j = 1; j &lt; is; j++) {<a name="line.14697"></a>
<span class="sourceLineNo">14698</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.14698"></a>
<span class="sourceLineNo">14699</span> ox = (float) (Math.min(iax, ibx));<a name="line.14699"></a>
<span class="sourceLineNo">14700</span> oaf32data[it.oIndex + j] = ox;<a name="line.14700"></a>
<span class="sourceLineNo">14701</span> }<a name="line.14701"></a>
<span class="sourceLineNo">14702</span> }<a name="line.14702"></a>
<span class="sourceLineNo">14703</span> }<a name="line.14703"></a>
<span class="sourceLineNo">14704</span> } else if (as &gt; bs) {<a name="line.14704"></a>
<span class="sourceLineNo">14705</span> if (it.isOutputDouble()) {<a name="line.14705"></a>
<span class="sourceLineNo">14706</span> while (it.hasNext()) {<a name="line.14706"></a>
<span class="sourceLineNo">14707</span> double iax = it.aDouble;<a name="line.14707"></a>
<span class="sourceLineNo">14708</span> final double ibx = it.bDouble;<a name="line.14708"></a>
<span class="sourceLineNo">14709</span> float ox;<a name="line.14709"></a>
<span class="sourceLineNo">14710</span> ox = (float) (Math.min(iax, ibx));<a name="line.14710"></a>
<span class="sourceLineNo">14711</span> oaf32data[it.oIndex] = ox;<a name="line.14711"></a>
<span class="sourceLineNo">14712</span> for (int j = 1; j &lt; is; j++) {<a name="line.14712"></a>
<span class="sourceLineNo">14713</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.14713"></a>
<span class="sourceLineNo">14714</span> ox = (float) (Math.min(iax, ibx));<a name="line.14714"></a>
<span class="sourceLineNo">14715</span> oaf32data[it.oIndex + j] = ox;<a name="line.14715"></a>
<span class="sourceLineNo">14716</span> }<a name="line.14716"></a>
<span class="sourceLineNo">14717</span> }<a name="line.14717"></a>
<span class="sourceLineNo">14718</span> } else {<a name="line.14718"></a>
<span class="sourceLineNo">14719</span> while (it.hasNext()) {<a name="line.14719"></a>
<span class="sourceLineNo">14720</span> long iax = it.aLong;<a name="line.14720"></a>
<span class="sourceLineNo">14721</span> final long ibx = it.bLong;<a name="line.14721"></a>
<span class="sourceLineNo">14722</span> float ox;<a name="line.14722"></a>
<span class="sourceLineNo">14723</span> ox = (float) (Math.min(iax, ibx));<a name="line.14723"></a>
<span class="sourceLineNo">14724</span> oaf32data[it.oIndex] = ox;<a name="line.14724"></a>
<span class="sourceLineNo">14725</span> for (int j = 1; j &lt; is; j++) {<a name="line.14725"></a>
<span class="sourceLineNo">14726</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.14726"></a>
<span class="sourceLineNo">14727</span> ox = (float) (Math.min(iax, ibx));<a name="line.14727"></a>
<span class="sourceLineNo">14728</span> oaf32data[it.oIndex + j] = ox;<a name="line.14728"></a>
<span class="sourceLineNo">14729</span> }<a name="line.14729"></a>
<span class="sourceLineNo">14730</span> }<a name="line.14730"></a>
<span class="sourceLineNo">14731</span> }<a name="line.14731"></a>
<span class="sourceLineNo">14732</span> } else if (as == 1) {<a name="line.14732"></a>
<span class="sourceLineNo">14733</span> if (it.isOutputDouble()) {<a name="line.14733"></a>
<span class="sourceLineNo">14734</span> while (it.hasNext()) {<a name="line.14734"></a>
<span class="sourceLineNo">14735</span> final double iax = it.aDouble;<a name="line.14735"></a>
<span class="sourceLineNo">14736</span> final double ibx = it.bDouble;<a name="line.14736"></a>
<span class="sourceLineNo">14737</span> float ox;<a name="line.14737"></a>
<span class="sourceLineNo">14738</span> ox = (float) (Math.min(iax, ibx));<a name="line.14738"></a>
<span class="sourceLineNo">14739</span> for (int j = 0; j &lt; is; j++) {<a name="line.14739"></a>
<span class="sourceLineNo">14740</span> oaf32data[it.oIndex + j] = ox;<a name="line.14740"></a>
<span class="sourceLineNo">14741</span> }<a name="line.14741"></a>
<span class="sourceLineNo">14742</span> }<a name="line.14742"></a>
<span class="sourceLineNo">14743</span> } else {<a name="line.14743"></a>
<span class="sourceLineNo">14744</span> while (it.hasNext()) {<a name="line.14744"></a>
<span class="sourceLineNo">14745</span> final long iax = it.aLong;<a name="line.14745"></a>
<span class="sourceLineNo">14746</span> final long ibx = it.bLong;<a name="line.14746"></a>
<span class="sourceLineNo">14747</span> float ox;<a name="line.14747"></a>
<span class="sourceLineNo">14748</span> ox = (float) (Math.min(iax, ibx));<a name="line.14748"></a>
<span class="sourceLineNo">14749</span> for (int j = 0; j &lt; is; j++) {<a name="line.14749"></a>
<span class="sourceLineNo">14750</span> oaf32data[it.oIndex + j] = ox;<a name="line.14750"></a>
<span class="sourceLineNo">14751</span> }<a name="line.14751"></a>
<span class="sourceLineNo">14752</span> }<a name="line.14752"></a>
<span class="sourceLineNo">14753</span> }<a name="line.14753"></a>
<span class="sourceLineNo">14754</span> } else {<a name="line.14754"></a>
<span class="sourceLineNo">14755</span> if (it.isOutputDouble()) {<a name="line.14755"></a>
<span class="sourceLineNo">14756</span> while (it.hasNext()) {<a name="line.14756"></a>
<span class="sourceLineNo">14757</span> double iax = it.aDouble;<a name="line.14757"></a>
<span class="sourceLineNo">14758</span> double ibx = it.bDouble;<a name="line.14758"></a>
<span class="sourceLineNo">14759</span> float ox;<a name="line.14759"></a>
<span class="sourceLineNo">14760</span> ox = (float) (Math.min(iax, ibx));<a name="line.14760"></a>
<span class="sourceLineNo">14761</span> oaf32data[it.oIndex] = ox;<a name="line.14761"></a>
<span class="sourceLineNo">14762</span> for (int j = 1; j &lt; is; j++) {<a name="line.14762"></a>
<span class="sourceLineNo">14763</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.14763"></a>
<span class="sourceLineNo">14764</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.14764"></a>
<span class="sourceLineNo">14765</span> ox = (float) (Math.min(iax, ibx));<a name="line.14765"></a>
<span class="sourceLineNo">14766</span> oaf32data[it.oIndex + j] = ox;<a name="line.14766"></a>
<span class="sourceLineNo">14767</span> }<a name="line.14767"></a>
<span class="sourceLineNo">14768</span> }<a name="line.14768"></a>
<span class="sourceLineNo">14769</span> } else {<a name="line.14769"></a>
<span class="sourceLineNo">14770</span> while (it.hasNext()) {<a name="line.14770"></a>
<span class="sourceLineNo">14771</span> long iax = it.aLong;<a name="line.14771"></a>
<span class="sourceLineNo">14772</span> long ibx = it.bLong;<a name="line.14772"></a>
<span class="sourceLineNo">14773</span> float ox;<a name="line.14773"></a>
<span class="sourceLineNo">14774</span> ox = (float) (Math.min(iax, ibx));<a name="line.14774"></a>
<span class="sourceLineNo">14775</span> oaf32data[it.oIndex] = ox;<a name="line.14775"></a>
<span class="sourceLineNo">14776</span> for (int j = 1; j &lt; is; j++) {<a name="line.14776"></a>
<span class="sourceLineNo">14777</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.14777"></a>
<span class="sourceLineNo">14778</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.14778"></a>
<span class="sourceLineNo">14779</span> ox = (float) (Math.min(iax, ibx));<a name="line.14779"></a>
<span class="sourceLineNo">14780</span> oaf32data[it.oIndex + j] = ox;<a name="line.14780"></a>
<span class="sourceLineNo">14781</span> }<a name="line.14781"></a>
<span class="sourceLineNo">14782</span> }<a name="line.14782"></a>
<span class="sourceLineNo">14783</span> }<a name="line.14783"></a>
<span class="sourceLineNo">14784</span> }<a name="line.14784"></a>
<span class="sourceLineNo">14785</span> break;<a name="line.14785"></a>
<span class="sourceLineNo">14786</span> case Dataset.ARRAYFLOAT64:<a name="line.14786"></a>
<span class="sourceLineNo">14787</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.14787"></a>
<span class="sourceLineNo">14788</span> if (is == 1) {<a name="line.14788"></a>
<span class="sourceLineNo">14789</span> if (it.isOutputDouble()) {<a name="line.14789"></a>
<span class="sourceLineNo">14790</span> while (it.hasNext()) {<a name="line.14790"></a>
<span class="sourceLineNo">14791</span> final double iax = it.aDouble;<a name="line.14791"></a>
<span class="sourceLineNo">14792</span> final double ibx = it.bDouble;<a name="line.14792"></a>
<span class="sourceLineNo">14793</span> double ox;<a name="line.14793"></a>
<span class="sourceLineNo">14794</span> ox = (Math.min(iax, ibx));<a name="line.14794"></a>
<span class="sourceLineNo">14795</span> oaf64data[it.oIndex] = ox;<a name="line.14795"></a>
<span class="sourceLineNo">14796</span> }<a name="line.14796"></a>
<span class="sourceLineNo">14797</span> } else {<a name="line.14797"></a>
<span class="sourceLineNo">14798</span> while (it.hasNext()) {<a name="line.14798"></a>
<span class="sourceLineNo">14799</span> final long iax = it.aLong;<a name="line.14799"></a>
<span class="sourceLineNo">14800</span> final long ibx = it.bLong;<a name="line.14800"></a>
<span class="sourceLineNo">14801</span> double ox;<a name="line.14801"></a>
<span class="sourceLineNo">14802</span> ox = (Math.min(iax, ibx));<a name="line.14802"></a>
<span class="sourceLineNo">14803</span> oaf64data[it.oIndex] = ox;<a name="line.14803"></a>
<span class="sourceLineNo">14804</span> }<a name="line.14804"></a>
<span class="sourceLineNo">14805</span> }<a name="line.14805"></a>
<span class="sourceLineNo">14806</span> } else if (as &lt; bs) {<a name="line.14806"></a>
<span class="sourceLineNo">14807</span> if (it.isOutputDouble()) {<a name="line.14807"></a>
<span class="sourceLineNo">14808</span> while (it.hasNext()) {<a name="line.14808"></a>
<span class="sourceLineNo">14809</span> final double iax = it.aDouble;<a name="line.14809"></a>
<span class="sourceLineNo">14810</span> double ibx = it.bDouble;<a name="line.14810"></a>
<span class="sourceLineNo">14811</span> double ox;<a name="line.14811"></a>
<span class="sourceLineNo">14812</span> ox = (Math.min(iax, ibx));<a name="line.14812"></a>
<span class="sourceLineNo">14813</span> oaf64data[it.oIndex] = ox;<a name="line.14813"></a>
<span class="sourceLineNo">14814</span> for (int j = 1; j &lt; is; j++) {<a name="line.14814"></a>
<span class="sourceLineNo">14815</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.14815"></a>
<span class="sourceLineNo">14816</span> ox = (Math.min(iax, ibx));<a name="line.14816"></a>
<span class="sourceLineNo">14817</span> oaf64data[it.oIndex + j] = ox;<a name="line.14817"></a>
<span class="sourceLineNo">14818</span> }<a name="line.14818"></a>
<span class="sourceLineNo">14819</span> }<a name="line.14819"></a>
<span class="sourceLineNo">14820</span> } else {<a name="line.14820"></a>
<span class="sourceLineNo">14821</span> while (it.hasNext()) {<a name="line.14821"></a>
<span class="sourceLineNo">14822</span> final long iax = it.aLong;<a name="line.14822"></a>
<span class="sourceLineNo">14823</span> long ibx = it.bLong;<a name="line.14823"></a>
<span class="sourceLineNo">14824</span> double ox;<a name="line.14824"></a>
<span class="sourceLineNo">14825</span> ox = (Math.min(iax, ibx));<a name="line.14825"></a>
<span class="sourceLineNo">14826</span> oaf64data[it.oIndex] = ox;<a name="line.14826"></a>
<span class="sourceLineNo">14827</span> for (int j = 1; j &lt; is; j++) {<a name="line.14827"></a>
<span class="sourceLineNo">14828</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.14828"></a>
<span class="sourceLineNo">14829</span> ox = (Math.min(iax, ibx));<a name="line.14829"></a>
<span class="sourceLineNo">14830</span> oaf64data[it.oIndex + j] = ox;<a name="line.14830"></a>
<span class="sourceLineNo">14831</span> }<a name="line.14831"></a>
<span class="sourceLineNo">14832</span> }<a name="line.14832"></a>
<span class="sourceLineNo">14833</span> }<a name="line.14833"></a>
<span class="sourceLineNo">14834</span> } else if (as &gt; bs) {<a name="line.14834"></a>
<span class="sourceLineNo">14835</span> if (it.isOutputDouble()) {<a name="line.14835"></a>
<span class="sourceLineNo">14836</span> while (it.hasNext()) {<a name="line.14836"></a>
<span class="sourceLineNo">14837</span> double iax = it.aDouble;<a name="line.14837"></a>
<span class="sourceLineNo">14838</span> final double ibx = it.bDouble;<a name="line.14838"></a>
<span class="sourceLineNo">14839</span> double ox;<a name="line.14839"></a>
<span class="sourceLineNo">14840</span> ox = (Math.min(iax, ibx));<a name="line.14840"></a>
<span class="sourceLineNo">14841</span> oaf64data[it.oIndex] = ox;<a name="line.14841"></a>
<span class="sourceLineNo">14842</span> for (int j = 1; j &lt; is; j++) {<a name="line.14842"></a>
<span class="sourceLineNo">14843</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.14843"></a>
<span class="sourceLineNo">14844</span> ox = (Math.min(iax, ibx));<a name="line.14844"></a>
<span class="sourceLineNo">14845</span> oaf64data[it.oIndex + j] = ox;<a name="line.14845"></a>
<span class="sourceLineNo">14846</span> }<a name="line.14846"></a>
<span class="sourceLineNo">14847</span> }<a name="line.14847"></a>
<span class="sourceLineNo">14848</span> } else {<a name="line.14848"></a>
<span class="sourceLineNo">14849</span> while (it.hasNext()) {<a name="line.14849"></a>
<span class="sourceLineNo">14850</span> long iax = it.aLong;<a name="line.14850"></a>
<span class="sourceLineNo">14851</span> final long ibx = it.bLong;<a name="line.14851"></a>
<span class="sourceLineNo">14852</span> double ox;<a name="line.14852"></a>
<span class="sourceLineNo">14853</span> ox = (Math.min(iax, ibx));<a name="line.14853"></a>
<span class="sourceLineNo">14854</span> oaf64data[it.oIndex] = ox;<a name="line.14854"></a>
<span class="sourceLineNo">14855</span> for (int j = 1; j &lt; is; j++) {<a name="line.14855"></a>
<span class="sourceLineNo">14856</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.14856"></a>
<span class="sourceLineNo">14857</span> ox = (Math.min(iax, ibx));<a name="line.14857"></a>
<span class="sourceLineNo">14858</span> oaf64data[it.oIndex + j] = ox;<a name="line.14858"></a>
<span class="sourceLineNo">14859</span> }<a name="line.14859"></a>
<span class="sourceLineNo">14860</span> }<a name="line.14860"></a>
<span class="sourceLineNo">14861</span> }<a name="line.14861"></a>
<span class="sourceLineNo">14862</span> } else if (as == 1) {<a name="line.14862"></a>
<span class="sourceLineNo">14863</span> if (it.isOutputDouble()) {<a name="line.14863"></a>
<span class="sourceLineNo">14864</span> while (it.hasNext()) {<a name="line.14864"></a>
<span class="sourceLineNo">14865</span> final double iax = it.aDouble;<a name="line.14865"></a>
<span class="sourceLineNo">14866</span> final double ibx = it.bDouble;<a name="line.14866"></a>
<span class="sourceLineNo">14867</span> double ox;<a name="line.14867"></a>
<span class="sourceLineNo">14868</span> ox = (Math.min(iax, ibx));<a name="line.14868"></a>
<span class="sourceLineNo">14869</span> for (int j = 0; j &lt; is; j++) {<a name="line.14869"></a>
<span class="sourceLineNo">14870</span> oaf64data[it.oIndex + j] = ox;<a name="line.14870"></a>
<span class="sourceLineNo">14871</span> }<a name="line.14871"></a>
<span class="sourceLineNo">14872</span> }<a name="line.14872"></a>
<span class="sourceLineNo">14873</span> } else {<a name="line.14873"></a>
<span class="sourceLineNo">14874</span> while (it.hasNext()) {<a name="line.14874"></a>
<span class="sourceLineNo">14875</span> final long iax = it.aLong;<a name="line.14875"></a>
<span class="sourceLineNo">14876</span> final long ibx = it.bLong;<a name="line.14876"></a>
<span class="sourceLineNo">14877</span> double ox;<a name="line.14877"></a>
<span class="sourceLineNo">14878</span> ox = (Math.min(iax, ibx));<a name="line.14878"></a>
<span class="sourceLineNo">14879</span> for (int j = 0; j &lt; is; j++) {<a name="line.14879"></a>
<span class="sourceLineNo">14880</span> oaf64data[it.oIndex + j] = ox;<a name="line.14880"></a>
<span class="sourceLineNo">14881</span> }<a name="line.14881"></a>
<span class="sourceLineNo">14882</span> }<a name="line.14882"></a>
<span class="sourceLineNo">14883</span> }<a name="line.14883"></a>
<span class="sourceLineNo">14884</span> } else {<a name="line.14884"></a>
<span class="sourceLineNo">14885</span> if (it.isOutputDouble()) {<a name="line.14885"></a>
<span class="sourceLineNo">14886</span> while (it.hasNext()) {<a name="line.14886"></a>
<span class="sourceLineNo">14887</span> double iax = it.aDouble;<a name="line.14887"></a>
<span class="sourceLineNo">14888</span> double ibx = it.bDouble;<a name="line.14888"></a>
<span class="sourceLineNo">14889</span> double ox;<a name="line.14889"></a>
<span class="sourceLineNo">14890</span> ox = (Math.min(iax, ibx));<a name="line.14890"></a>
<span class="sourceLineNo">14891</span> oaf64data[it.oIndex] = ox;<a name="line.14891"></a>
<span class="sourceLineNo">14892</span> for (int j = 1; j &lt; is; j++) {<a name="line.14892"></a>
<span class="sourceLineNo">14893</span> iax = da.getElementDoubleAbs(it.aIndex + j);<a name="line.14893"></a>
<span class="sourceLineNo">14894</span> ibx = db.getElementDoubleAbs(it.bIndex + j);<a name="line.14894"></a>
<span class="sourceLineNo">14895</span> ox = (Math.min(iax, ibx));<a name="line.14895"></a>
<span class="sourceLineNo">14896</span> oaf64data[it.oIndex + j] = ox;<a name="line.14896"></a>
<span class="sourceLineNo">14897</span> }<a name="line.14897"></a>
<span class="sourceLineNo">14898</span> }<a name="line.14898"></a>
<span class="sourceLineNo">14899</span> } else {<a name="line.14899"></a>
<span class="sourceLineNo">14900</span> while (it.hasNext()) {<a name="line.14900"></a>
<span class="sourceLineNo">14901</span> long iax = it.aLong;<a name="line.14901"></a>
<span class="sourceLineNo">14902</span> long ibx = it.bLong;<a name="line.14902"></a>
<span class="sourceLineNo">14903</span> double ox;<a name="line.14903"></a>
<span class="sourceLineNo">14904</span> ox = (Math.min(iax, ibx));<a name="line.14904"></a>
<span class="sourceLineNo">14905</span> oaf64data[it.oIndex] = ox;<a name="line.14905"></a>
<span class="sourceLineNo">14906</span> for (int j = 1; j &lt; is; j++) {<a name="line.14906"></a>
<span class="sourceLineNo">14907</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.14907"></a>
<span class="sourceLineNo">14908</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.14908"></a>
<span class="sourceLineNo">14909</span> ox = (Math.min(iax, ibx));<a name="line.14909"></a>
<span class="sourceLineNo">14910</span> oaf64data[it.oIndex + j] = ox;<a name="line.14910"></a>
<span class="sourceLineNo">14911</span> }<a name="line.14911"></a>
<span class="sourceLineNo">14912</span> }<a name="line.14912"></a>
<span class="sourceLineNo">14913</span> }<a name="line.14913"></a>
<span class="sourceLineNo">14914</span> }<a name="line.14914"></a>
<span class="sourceLineNo">14915</span> break;<a name="line.14915"></a>
<span class="sourceLineNo">14916</span> case Dataset.COMPLEX64:<a name="line.14916"></a>
<span class="sourceLineNo">14917</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.14917"></a>
<span class="sourceLineNo">14918</span> if (!da.isComplex()) {<a name="line.14918"></a>
<span class="sourceLineNo">14919</span> if (it.isOutputDouble()) {<a name="line.14919"></a>
<span class="sourceLineNo">14920</span> final double iay = 0;<a name="line.14920"></a>
<span class="sourceLineNo">14921</span> if (db.isComplex()) {<a name="line.14921"></a>
<span class="sourceLineNo">14922</span> while (it.hasNext()) {<a name="line.14922"></a>
<span class="sourceLineNo">14923</span> final double iax = it.aDouble;<a name="line.14923"></a>
<span class="sourceLineNo">14924</span> final double ibx = it.bDouble;<a name="line.14924"></a>
<span class="sourceLineNo">14925</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.14925"></a>
<span class="sourceLineNo">14926</span> float ox;<a name="line.14926"></a>
<span class="sourceLineNo">14927</span> float oy;<a name="line.14927"></a>
<span class="sourceLineNo">14928</span> if (Double.isNaN(iax) || Double.isNaN(iay)) {<a name="line.14928"></a>
<span class="sourceLineNo">14929</span> ox = (float) (iax);<a name="line.14929"></a>
<span class="sourceLineNo">14930</span> oy = (float) (iay);<a name="line.14930"></a>
<span class="sourceLineNo">14931</span> } else if (Double.isNaN(ibx) || Double.isNaN(iby)) {<a name="line.14931"></a>
<span class="sourceLineNo">14932</span> ox = (float) (ibx);<a name="line.14932"></a>
<span class="sourceLineNo">14933</span> oy = (float) (iby);<a name="line.14933"></a>
<span class="sourceLineNo">14934</span> } else {<a name="line.14934"></a>
<span class="sourceLineNo">14935</span> ox = (float) (Math.min(iax, ibx));<a name="line.14935"></a>
<span class="sourceLineNo">14936</span> oy = (float) (Math.min(iay, iby));<a name="line.14936"></a>
<span class="sourceLineNo">14937</span> }<a name="line.14937"></a>
<span class="sourceLineNo">14938</span> oc64data[it.oIndex] = ox;<a name="line.14938"></a>
<span class="sourceLineNo">14939</span> oc64data[it.oIndex + 1] = oy;<a name="line.14939"></a>
<span class="sourceLineNo">14940</span> }<a name="line.14940"></a>
<span class="sourceLineNo">14941</span> } else {<a name="line.14941"></a>
<span class="sourceLineNo">14942</span> while (it.hasNext()) {<a name="line.14942"></a>
<span class="sourceLineNo">14943</span> final double iax = it.aDouble;<a name="line.14943"></a>
<span class="sourceLineNo">14944</span> final double ibx = it.bDouble;<a name="line.14944"></a>
<span class="sourceLineNo">14945</span> final double iby = 0;<a name="line.14945"></a>
<span class="sourceLineNo">14946</span> float ox;<a name="line.14946"></a>
<span class="sourceLineNo">14947</span> float oy;<a name="line.14947"></a>
<span class="sourceLineNo">14948</span> if (Double.isNaN(iax) || Double.isNaN(iay)) {<a name="line.14948"></a>
<span class="sourceLineNo">14949</span> ox = (float) (iax);<a name="line.14949"></a>
<span class="sourceLineNo">14950</span> oy = (float) (iay);<a name="line.14950"></a>
<span class="sourceLineNo">14951</span> } else if (Double.isNaN(ibx) || Double.isNaN(iby)) {<a name="line.14951"></a>
<span class="sourceLineNo">14952</span> ox = (float) (ibx);<a name="line.14952"></a>
<span class="sourceLineNo">14953</span> oy = (float) (iby);<a name="line.14953"></a>
<span class="sourceLineNo">14954</span> } else {<a name="line.14954"></a>
<span class="sourceLineNo">14955</span> ox = (float) (Math.min(iax, ibx));<a name="line.14955"></a>
<span class="sourceLineNo">14956</span> oy = (float) (Math.min(iay, iby));<a name="line.14956"></a>
<span class="sourceLineNo">14957</span> }<a name="line.14957"></a>
<span class="sourceLineNo">14958</span> oc64data[it.oIndex] = ox;<a name="line.14958"></a>
<span class="sourceLineNo">14959</span> oc64data[it.oIndex + 1] = oy;<a name="line.14959"></a>
<span class="sourceLineNo">14960</span> }<a name="line.14960"></a>
<span class="sourceLineNo">14961</span> }<a name="line.14961"></a>
<span class="sourceLineNo">14962</span> } else {<a name="line.14962"></a>
<span class="sourceLineNo">14963</span> final long iay = 0;<a name="line.14963"></a>
<span class="sourceLineNo">14964</span> while (it.hasNext()) {<a name="line.14964"></a>
<span class="sourceLineNo">14965</span> final long iax = it.aLong;<a name="line.14965"></a>
<span class="sourceLineNo">14966</span> final long ibx = it.bLong;<a name="line.14966"></a>
<span class="sourceLineNo">14967</span> final long iby = 0;<a name="line.14967"></a>
<span class="sourceLineNo">14968</span> float ox;<a name="line.14968"></a>
<span class="sourceLineNo">14969</span> float oy;<a name="line.14969"></a>
<span class="sourceLineNo">14970</span> if (Double.isNaN(iax) || Double.isNaN(iay)) {<a name="line.14970"></a>
<span class="sourceLineNo">14971</span> ox = (float) (iax);<a name="line.14971"></a>
<span class="sourceLineNo">14972</span> oy = (float) (iay);<a name="line.14972"></a>
<span class="sourceLineNo">14973</span> } else if (Double.isNaN(ibx) || Double.isNaN(iby)) {<a name="line.14973"></a>
<span class="sourceLineNo">14974</span> ox = (float) (ibx);<a name="line.14974"></a>
<span class="sourceLineNo">14975</span> oy = (float) (iby);<a name="line.14975"></a>
<span class="sourceLineNo">14976</span> } else {<a name="line.14976"></a>
<span class="sourceLineNo">14977</span> ox = (float) (Math.min(iax, ibx));<a name="line.14977"></a>
<span class="sourceLineNo">14978</span> oy = (float) (Math.min(iay, iby));<a name="line.14978"></a>
<span class="sourceLineNo">14979</span> }<a name="line.14979"></a>
<span class="sourceLineNo">14980</span> oc64data[it.oIndex] = ox;<a name="line.14980"></a>
<span class="sourceLineNo">14981</span> oc64data[it.oIndex + 1] = oy;<a name="line.14981"></a>
<span class="sourceLineNo">14982</span> }<a name="line.14982"></a>
<span class="sourceLineNo">14983</span> }<a name="line.14983"></a>
<span class="sourceLineNo">14984</span> } else if (!db.isComplex()) {<a name="line.14984"></a>
<span class="sourceLineNo">14985</span> final double iby = 0;<a name="line.14985"></a>
<span class="sourceLineNo">14986</span> while (it.hasNext()) {<a name="line.14986"></a>
<span class="sourceLineNo">14987</span> final double iax = it.aDouble;<a name="line.14987"></a>
<span class="sourceLineNo">14988</span> final double ibx = it.bDouble;<a name="line.14988"></a>
<span class="sourceLineNo">14989</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.14989"></a>
<span class="sourceLineNo">14990</span> float ox;<a name="line.14990"></a>
<span class="sourceLineNo">14991</span> float oy;<a name="line.14991"></a>
<span class="sourceLineNo">14992</span> if (Double.isNaN(iax) || Double.isNaN(iay)) {<a name="line.14992"></a>
<span class="sourceLineNo">14993</span> ox = (float) (iax);<a name="line.14993"></a>
<span class="sourceLineNo">14994</span> oy = (float) (iay);<a name="line.14994"></a>
<span class="sourceLineNo">14995</span> } else if (Double.isNaN(ibx) || Double.isNaN(iby)) {<a name="line.14995"></a>
<span class="sourceLineNo">14996</span> ox = (float) (ibx);<a name="line.14996"></a>
<span class="sourceLineNo">14997</span> oy = (float) (iby);<a name="line.14997"></a>
<span class="sourceLineNo">14998</span> } else {<a name="line.14998"></a>
<span class="sourceLineNo">14999</span> ox = (float) (Math.min(iax, ibx));<a name="line.14999"></a>
<span class="sourceLineNo">15000</span> oy = (float) (Math.min(iay, iby));<a name="line.15000"></a>
<span class="sourceLineNo">15001</span> }<a name="line.15001"></a>
<span class="sourceLineNo">15002</span> oc64data[it.oIndex] = ox;<a name="line.15002"></a>
<span class="sourceLineNo">15003</span> oc64data[it.oIndex + 1] = oy;<a name="line.15003"></a>
<span class="sourceLineNo">15004</span> }<a name="line.15004"></a>
<span class="sourceLineNo">15005</span> } else {<a name="line.15005"></a>
<span class="sourceLineNo">15006</span> while (it.hasNext()) {<a name="line.15006"></a>
<span class="sourceLineNo">15007</span> final double iax = it.aDouble;<a name="line.15007"></a>
<span class="sourceLineNo">15008</span> final double ibx = it.bDouble;<a name="line.15008"></a>
<span class="sourceLineNo">15009</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.15009"></a>
<span class="sourceLineNo">15010</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.15010"></a>
<span class="sourceLineNo">15011</span> float ox;<a name="line.15011"></a>
<span class="sourceLineNo">15012</span> float oy;<a name="line.15012"></a>
<span class="sourceLineNo">15013</span> if (Double.isNaN(iax) || Double.isNaN(iay)) {<a name="line.15013"></a>
<span class="sourceLineNo">15014</span> ox = (float) (iax);<a name="line.15014"></a>
<span class="sourceLineNo">15015</span> oy = (float) (iay);<a name="line.15015"></a>
<span class="sourceLineNo">15016</span> } else if (Double.isNaN(ibx) || Double.isNaN(iby)) {<a name="line.15016"></a>
<span class="sourceLineNo">15017</span> ox = (float) (ibx);<a name="line.15017"></a>
<span class="sourceLineNo">15018</span> oy = (float) (iby);<a name="line.15018"></a>
<span class="sourceLineNo">15019</span> } else {<a name="line.15019"></a>
<span class="sourceLineNo">15020</span> ox = (float) (Math.min(iax, ibx));<a name="line.15020"></a>
<span class="sourceLineNo">15021</span> oy = (float) (Math.min(iay, iby));<a name="line.15021"></a>
<span class="sourceLineNo">15022</span> }<a name="line.15022"></a>
<span class="sourceLineNo">15023</span> oc64data[it.oIndex] = ox;<a name="line.15023"></a>
<span class="sourceLineNo">15024</span> oc64data[it.oIndex + 1] = oy;<a name="line.15024"></a>
<span class="sourceLineNo">15025</span> }<a name="line.15025"></a>
<span class="sourceLineNo">15026</span> }<a name="line.15026"></a>
<span class="sourceLineNo">15027</span> break;<a name="line.15027"></a>
<span class="sourceLineNo">15028</span> case Dataset.COMPLEX128:<a name="line.15028"></a>
<span class="sourceLineNo">15029</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.15029"></a>
<span class="sourceLineNo">15030</span> if (!da.isComplex()) {<a name="line.15030"></a>
<span class="sourceLineNo">15031</span> if (it.isOutputDouble()) {<a name="line.15031"></a>
<span class="sourceLineNo">15032</span> final double iay = 0;<a name="line.15032"></a>
<span class="sourceLineNo">15033</span> if (db.isComplex()) {<a name="line.15033"></a>
<span class="sourceLineNo">15034</span> while (it.hasNext()) {<a name="line.15034"></a>
<span class="sourceLineNo">15035</span> final double iax = it.aDouble;<a name="line.15035"></a>
<span class="sourceLineNo">15036</span> final double ibx = it.bDouble;<a name="line.15036"></a>
<span class="sourceLineNo">15037</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.15037"></a>
<span class="sourceLineNo">15038</span> double ox;<a name="line.15038"></a>
<span class="sourceLineNo">15039</span> double oy;<a name="line.15039"></a>
<span class="sourceLineNo">15040</span> if (Double.isNaN(iax) || Double.isNaN(iay)) {<a name="line.15040"></a>
<span class="sourceLineNo">15041</span> ox = (iax);<a name="line.15041"></a>
<span class="sourceLineNo">15042</span> oy = (iay);<a name="line.15042"></a>
<span class="sourceLineNo">15043</span> } else if (Double.isNaN(ibx) || Double.isNaN(iby)) {<a name="line.15043"></a>
<span class="sourceLineNo">15044</span> ox = (ibx);<a name="line.15044"></a>
<span class="sourceLineNo">15045</span> oy = (iby);<a name="line.15045"></a>
<span class="sourceLineNo">15046</span> } else {<a name="line.15046"></a>
<span class="sourceLineNo">15047</span> ox = (Math.min(iax, ibx));<a name="line.15047"></a>
<span class="sourceLineNo">15048</span> oy = (Math.min(iay, iby));<a name="line.15048"></a>
<span class="sourceLineNo">15049</span> }<a name="line.15049"></a>
<span class="sourceLineNo">15050</span> oc128data[it.oIndex] = ox;<a name="line.15050"></a>
<span class="sourceLineNo">15051</span> oc128data[it.oIndex + 1] = oy;<a name="line.15051"></a>
<span class="sourceLineNo">15052</span> }<a name="line.15052"></a>
<span class="sourceLineNo">15053</span> } else {<a name="line.15053"></a>
<span class="sourceLineNo">15054</span> while (it.hasNext()) {<a name="line.15054"></a>
<span class="sourceLineNo">15055</span> final double iax = it.aDouble;<a name="line.15055"></a>
<span class="sourceLineNo">15056</span> final double ibx = it.bDouble;<a name="line.15056"></a>
<span class="sourceLineNo">15057</span> final double iby = 0;<a name="line.15057"></a>
<span class="sourceLineNo">15058</span> double ox;<a name="line.15058"></a>
<span class="sourceLineNo">15059</span> double oy;<a name="line.15059"></a>
<span class="sourceLineNo">15060</span> if (Double.isNaN(iax) || Double.isNaN(iay)) {<a name="line.15060"></a>
<span class="sourceLineNo">15061</span> ox = (iax);<a name="line.15061"></a>
<span class="sourceLineNo">15062</span> oy = (iay);<a name="line.15062"></a>
<span class="sourceLineNo">15063</span> } else if (Double.isNaN(ibx) || Double.isNaN(iby)) {<a name="line.15063"></a>
<span class="sourceLineNo">15064</span> ox = (ibx);<a name="line.15064"></a>
<span class="sourceLineNo">15065</span> oy = (iby);<a name="line.15065"></a>
<span class="sourceLineNo">15066</span> } else {<a name="line.15066"></a>
<span class="sourceLineNo">15067</span> ox = (Math.min(iax, ibx));<a name="line.15067"></a>
<span class="sourceLineNo">15068</span> oy = (Math.min(iay, iby));<a name="line.15068"></a>
<span class="sourceLineNo">15069</span> }<a name="line.15069"></a>
<span class="sourceLineNo">15070</span> oc128data[it.oIndex] = ox;<a name="line.15070"></a>
<span class="sourceLineNo">15071</span> oc128data[it.oIndex + 1] = oy;<a name="line.15071"></a>
<span class="sourceLineNo">15072</span> }<a name="line.15072"></a>
<span class="sourceLineNo">15073</span> }<a name="line.15073"></a>
<span class="sourceLineNo">15074</span> } else {<a name="line.15074"></a>
<span class="sourceLineNo">15075</span> final long iay = 0;<a name="line.15075"></a>
<span class="sourceLineNo">15076</span> while (it.hasNext()) {<a name="line.15076"></a>
<span class="sourceLineNo">15077</span> final long iax = it.aLong;<a name="line.15077"></a>
<span class="sourceLineNo">15078</span> final long ibx = it.bLong;<a name="line.15078"></a>
<span class="sourceLineNo">15079</span> final long iby = 0;<a name="line.15079"></a>
<span class="sourceLineNo">15080</span> double ox;<a name="line.15080"></a>
<span class="sourceLineNo">15081</span> double oy;<a name="line.15081"></a>
<span class="sourceLineNo">15082</span> if (Double.isNaN(iax) || Double.isNaN(iay)) {<a name="line.15082"></a>
<span class="sourceLineNo">15083</span> ox = (iax);<a name="line.15083"></a>
<span class="sourceLineNo">15084</span> oy = (iay);<a name="line.15084"></a>
<span class="sourceLineNo">15085</span> } else if (Double.isNaN(ibx) || Double.isNaN(iby)) {<a name="line.15085"></a>
<span class="sourceLineNo">15086</span> ox = (ibx);<a name="line.15086"></a>
<span class="sourceLineNo">15087</span> oy = (iby);<a name="line.15087"></a>
<span class="sourceLineNo">15088</span> } else {<a name="line.15088"></a>
<span class="sourceLineNo">15089</span> ox = (double) (Math.min(iax, ibx));<a name="line.15089"></a>
<span class="sourceLineNo">15090</span> oy = (double) (Math.min(iay, iby));<a name="line.15090"></a>
<span class="sourceLineNo">15091</span> }<a name="line.15091"></a>
<span class="sourceLineNo">15092</span> oc128data[it.oIndex] = ox;<a name="line.15092"></a>
<span class="sourceLineNo">15093</span> oc128data[it.oIndex + 1] = oy;<a name="line.15093"></a>
<span class="sourceLineNo">15094</span> }<a name="line.15094"></a>
<span class="sourceLineNo">15095</span> }<a name="line.15095"></a>
<span class="sourceLineNo">15096</span> } else if (!db.isComplex()) {<a name="line.15096"></a>
<span class="sourceLineNo">15097</span> final double iby = 0;<a name="line.15097"></a>
<span class="sourceLineNo">15098</span> while (it.hasNext()) {<a name="line.15098"></a>
<span class="sourceLineNo">15099</span> final double iax = it.aDouble;<a name="line.15099"></a>
<span class="sourceLineNo">15100</span> final double ibx = it.bDouble;<a name="line.15100"></a>
<span class="sourceLineNo">15101</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.15101"></a>
<span class="sourceLineNo">15102</span> double ox;<a name="line.15102"></a>
<span class="sourceLineNo">15103</span> double oy;<a name="line.15103"></a>
<span class="sourceLineNo">15104</span> if (Double.isNaN(iax) || Double.isNaN(iay)) {<a name="line.15104"></a>
<span class="sourceLineNo">15105</span> ox = (iax);<a name="line.15105"></a>
<span class="sourceLineNo">15106</span> oy = (iay);<a name="line.15106"></a>
<span class="sourceLineNo">15107</span> } else if (Double.isNaN(ibx) || Double.isNaN(iby)) {<a name="line.15107"></a>
<span class="sourceLineNo">15108</span> ox = (ibx);<a name="line.15108"></a>
<span class="sourceLineNo">15109</span> oy = (iby);<a name="line.15109"></a>
<span class="sourceLineNo">15110</span> } else {<a name="line.15110"></a>
<span class="sourceLineNo">15111</span> ox = (Math.min(iax, ibx));<a name="line.15111"></a>
<span class="sourceLineNo">15112</span> oy = (Math.min(iay, iby));<a name="line.15112"></a>
<span class="sourceLineNo">15113</span> }<a name="line.15113"></a>
<span class="sourceLineNo">15114</span> oc128data[it.oIndex] = ox;<a name="line.15114"></a>
<span class="sourceLineNo">15115</span> oc128data[it.oIndex + 1] = oy;<a name="line.15115"></a>
<span class="sourceLineNo">15116</span> }<a name="line.15116"></a>
<span class="sourceLineNo">15117</span> } else {<a name="line.15117"></a>
<span class="sourceLineNo">15118</span> while (it.hasNext()) {<a name="line.15118"></a>
<span class="sourceLineNo">15119</span> final double iax = it.aDouble;<a name="line.15119"></a>
<span class="sourceLineNo">15120</span> final double ibx = it.bDouble;<a name="line.15120"></a>
<span class="sourceLineNo">15121</span> final double iay = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.15121"></a>
<span class="sourceLineNo">15122</span> final double iby = db.getElementDoubleAbs(it.bIndex + 1);<a name="line.15122"></a>
<span class="sourceLineNo">15123</span> double ox;<a name="line.15123"></a>
<span class="sourceLineNo">15124</span> double oy;<a name="line.15124"></a>
<span class="sourceLineNo">15125</span> if (Double.isNaN(iax) || Double.isNaN(iay)) {<a name="line.15125"></a>
<span class="sourceLineNo">15126</span> ox = (iax);<a name="line.15126"></a>
<span class="sourceLineNo">15127</span> oy = (iay);<a name="line.15127"></a>
<span class="sourceLineNo">15128</span> } else if (Double.isNaN(ibx) || Double.isNaN(iby)) {<a name="line.15128"></a>
<span class="sourceLineNo">15129</span> ox = (ibx);<a name="line.15129"></a>
<span class="sourceLineNo">15130</span> oy = (iby);<a name="line.15130"></a>
<span class="sourceLineNo">15131</span> } else {<a name="line.15131"></a>
<span class="sourceLineNo">15132</span> ox = (Math.min(iax, ibx));<a name="line.15132"></a>
<span class="sourceLineNo">15133</span> oy = (Math.min(iay, iby));<a name="line.15133"></a>
<span class="sourceLineNo">15134</span> }<a name="line.15134"></a>
<span class="sourceLineNo">15135</span> oc128data[it.oIndex] = ox;<a name="line.15135"></a>
<span class="sourceLineNo">15136</span> oc128data[it.oIndex + 1] = oy;<a name="line.15136"></a>
<span class="sourceLineNo">15137</span> }<a name="line.15137"></a>
<span class="sourceLineNo">15138</span> }<a name="line.15138"></a>
<span class="sourceLineNo">15139</span> break;<a name="line.15139"></a>
<span class="sourceLineNo">15140</span> default:<a name="line.15140"></a>
<span class="sourceLineNo">15141</span> throw new IllegalArgumentException("minimum supports integer, compound integer, real, compound real, complex datasets only");<a name="line.15141"></a>
<span class="sourceLineNo">15142</span> }<a name="line.15142"></a>
<span class="sourceLineNo">15143</span><a name="line.15143"></a>
<span class="sourceLineNo">15144</span> addBinaryOperatorName(da, db, result, "minimum");<a name="line.15144"></a>
<span class="sourceLineNo">15145</span> return result;<a name="line.15145"></a>
<span class="sourceLineNo">15146</span> }<a name="line.15146"></a>
<span class="sourceLineNo">15147</span><a name="line.15147"></a>
<span class="sourceLineNo">15148</span> /**<a name="line.15148"></a>
<span class="sourceLineNo">15149</span> * bitwiseAnd operator<a name="line.15149"></a>
<span class="sourceLineNo">15150</span> * @param a<a name="line.15150"></a>
<span class="sourceLineNo">15151</span> * @param b<a name="line.15151"></a>
<span class="sourceLineNo">15152</span> * @return {@code a &amp; b}, bitwise AND of a and b<a name="line.15152"></a>
<span class="sourceLineNo">15153</span> */<a name="line.15153"></a>
<span class="sourceLineNo">15154</span> public static Dataset bitwiseAnd(final Object a, final Object b) {<a name="line.15154"></a>
<span class="sourceLineNo">15155</span> return bitwiseAnd(a, b, null);<a name="line.15155"></a>
<span class="sourceLineNo">15156</span> }<a name="line.15156"></a>
<span class="sourceLineNo">15157</span><a name="line.15157"></a>
<span class="sourceLineNo">15158</span> /**<a name="line.15158"></a>
<span class="sourceLineNo">15159</span> * bitwiseAnd operator<a name="line.15159"></a>
<span class="sourceLineNo">15160</span> * @param a<a name="line.15160"></a>
<span class="sourceLineNo">15161</span> * @param b<a name="line.15161"></a>
<span class="sourceLineNo">15162</span> * @param o output can be null - in which case, a new dataset is created<a name="line.15162"></a>
<span class="sourceLineNo">15163</span> * @return {@code a &amp; b}, bitwise AND of a and b<a name="line.15163"></a>
<span class="sourceLineNo">15164</span> */<a name="line.15164"></a>
<span class="sourceLineNo">15165</span> public static Dataset bitwiseAnd(final Object a, final Object b, final Dataset o) {<a name="line.15165"></a>
<span class="sourceLineNo">15166</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.15166"></a>
<span class="sourceLineNo">15167</span> Dataset db = b instanceof Dataset ? (Dataset) b : DatasetFactory.createFromObject(b);<a name="line.15167"></a>
<span class="sourceLineNo">15168</span> BroadcastIterator it = BroadcastIterator.createIterator(da, db, o, true);<a name="line.15168"></a>
<span class="sourceLineNo">15169</span> it.setOutputDouble(false);<a name="line.15169"></a>
<span class="sourceLineNo">15170</span> final Dataset result = it.getOutput();<a name="line.15170"></a>
<span class="sourceLineNo">15171</span> if (!result.isComplex()) {<a name="line.15171"></a>
<span class="sourceLineNo">15172</span> boolean change = false;<a name="line.15172"></a>
<span class="sourceLineNo">15173</span> if (da.isComplex()) {<a name="line.15173"></a>
<span class="sourceLineNo">15174</span> da = da.getRealView();<a name="line.15174"></a>
<span class="sourceLineNo">15175</span> change = true;<a name="line.15175"></a>
<span class="sourceLineNo">15176</span> }<a name="line.15176"></a>
<span class="sourceLineNo">15177</span> if (db.isComplex()) {<a name="line.15177"></a>
<span class="sourceLineNo">15178</span> db = db.getRealView();<a name="line.15178"></a>
<span class="sourceLineNo">15179</span> change = true;<a name="line.15179"></a>
<span class="sourceLineNo">15180</span> }<a name="line.15180"></a>
<span class="sourceLineNo">15181</span> if (change) {<a name="line.15181"></a>
<span class="sourceLineNo">15182</span> it = BroadcastIterator.createIterator(da, db, result, true);<a name="line.15182"></a>
<span class="sourceLineNo">15183</span> it.setOutputDouble(false);<a name="line.15183"></a>
<span class="sourceLineNo">15184</span> }<a name="line.15184"></a>
<span class="sourceLineNo">15185</span> }<a name="line.15185"></a>
<span class="sourceLineNo">15186</span> final int is = result.getElementsPerItem();<a name="line.15186"></a>
<span class="sourceLineNo">15187</span> final int as = da.getElementsPerItem();<a name="line.15187"></a>
<span class="sourceLineNo">15188</span> final int bs = db.getElementsPerItem();<a name="line.15188"></a>
<span class="sourceLineNo">15189</span> final int dt = result.getDType();<a name="line.15189"></a>
<span class="sourceLineNo">15190</span><a name="line.15190"></a>
<span class="sourceLineNo">15191</span> switch(dt) {<a name="line.15191"></a>
<span class="sourceLineNo">15192</span> case Dataset.INT8:<a name="line.15192"></a>
<span class="sourceLineNo">15193</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.15193"></a>
<span class="sourceLineNo">15194</span> {<a name="line.15194"></a>
<span class="sourceLineNo">15195</span> while (it.hasNext()) {<a name="line.15195"></a>
<span class="sourceLineNo">15196</span> final long iax = it.aLong;<a name="line.15196"></a>
<span class="sourceLineNo">15197</span> final long ibx = it.bLong;<a name="line.15197"></a>
<span class="sourceLineNo">15198</span> byte ox;<a name="line.15198"></a>
<span class="sourceLineNo">15199</span> ox = (byte) (iax &amp; ibx);<a name="line.15199"></a>
<span class="sourceLineNo">15200</span> oi8data[it.oIndex] = ox;<a name="line.15200"></a>
<span class="sourceLineNo">15201</span> }<a name="line.15201"></a>
<span class="sourceLineNo">15202</span> }<a name="line.15202"></a>
<span class="sourceLineNo">15203</span> break;<a name="line.15203"></a>
<span class="sourceLineNo">15204</span> case Dataset.INT16:<a name="line.15204"></a>
<span class="sourceLineNo">15205</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.15205"></a>
<span class="sourceLineNo">15206</span> {<a name="line.15206"></a>
<span class="sourceLineNo">15207</span> while (it.hasNext()) {<a name="line.15207"></a>
<span class="sourceLineNo">15208</span> final long iax = it.aLong;<a name="line.15208"></a>
<span class="sourceLineNo">15209</span> final long ibx = it.bLong;<a name="line.15209"></a>
<span class="sourceLineNo">15210</span> short ox;<a name="line.15210"></a>
<span class="sourceLineNo">15211</span> ox = (short) (iax &amp; ibx);<a name="line.15211"></a>
<span class="sourceLineNo">15212</span> oi16data[it.oIndex] = ox;<a name="line.15212"></a>
<span class="sourceLineNo">15213</span> }<a name="line.15213"></a>
<span class="sourceLineNo">15214</span> }<a name="line.15214"></a>
<span class="sourceLineNo">15215</span> break;<a name="line.15215"></a>
<span class="sourceLineNo">15216</span> case Dataset.INT64:<a name="line.15216"></a>
<span class="sourceLineNo">15217</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.15217"></a>
<span class="sourceLineNo">15218</span> {<a name="line.15218"></a>
<span class="sourceLineNo">15219</span> while (it.hasNext()) {<a name="line.15219"></a>
<span class="sourceLineNo">15220</span> final long iax = it.aLong;<a name="line.15220"></a>
<span class="sourceLineNo">15221</span> final long ibx = it.bLong;<a name="line.15221"></a>
<span class="sourceLineNo">15222</span> long ox;<a name="line.15222"></a>
<span class="sourceLineNo">15223</span> ox = (iax &amp; ibx);<a name="line.15223"></a>
<span class="sourceLineNo">15224</span> oi64data[it.oIndex] = ox;<a name="line.15224"></a>
<span class="sourceLineNo">15225</span> }<a name="line.15225"></a>
<span class="sourceLineNo">15226</span> }<a name="line.15226"></a>
<span class="sourceLineNo">15227</span> break;<a name="line.15227"></a>
<span class="sourceLineNo">15228</span> case Dataset.INT32:<a name="line.15228"></a>
<span class="sourceLineNo">15229</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.15229"></a>
<span class="sourceLineNo">15230</span> {<a name="line.15230"></a>
<span class="sourceLineNo">15231</span> while (it.hasNext()) {<a name="line.15231"></a>
<span class="sourceLineNo">15232</span> final long iax = it.aLong;<a name="line.15232"></a>
<span class="sourceLineNo">15233</span> final long ibx = it.bLong;<a name="line.15233"></a>
<span class="sourceLineNo">15234</span> int ox;<a name="line.15234"></a>
<span class="sourceLineNo">15235</span> ox = (int) (iax &amp; ibx);<a name="line.15235"></a>
<span class="sourceLineNo">15236</span> oi32data[it.oIndex] = ox;<a name="line.15236"></a>
<span class="sourceLineNo">15237</span> }<a name="line.15237"></a>
<span class="sourceLineNo">15238</span> }<a name="line.15238"></a>
<span class="sourceLineNo">15239</span> break;<a name="line.15239"></a>
<span class="sourceLineNo">15240</span> case Dataset.ARRAYINT8:<a name="line.15240"></a>
<span class="sourceLineNo">15241</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.15241"></a>
<span class="sourceLineNo">15242</span> if (is == 1) {<a name="line.15242"></a>
<span class="sourceLineNo">15243</span> {<a name="line.15243"></a>
<span class="sourceLineNo">15244</span> while (it.hasNext()) {<a name="line.15244"></a>
<span class="sourceLineNo">15245</span> final long iax = it.aLong;<a name="line.15245"></a>
<span class="sourceLineNo">15246</span> final long ibx = it.bLong;<a name="line.15246"></a>
<span class="sourceLineNo">15247</span> byte ox;<a name="line.15247"></a>
<span class="sourceLineNo">15248</span> ox = (byte) (iax &amp; ibx);<a name="line.15248"></a>
<span class="sourceLineNo">15249</span> oai8data[it.oIndex] = ox;<a name="line.15249"></a>
<span class="sourceLineNo">15250</span> }<a name="line.15250"></a>
<span class="sourceLineNo">15251</span> }<a name="line.15251"></a>
<span class="sourceLineNo">15252</span> } else if (as &lt; bs) {<a name="line.15252"></a>
<span class="sourceLineNo">15253</span> {<a name="line.15253"></a>
<span class="sourceLineNo">15254</span> while (it.hasNext()) {<a name="line.15254"></a>
<span class="sourceLineNo">15255</span> final long iax = it.aLong;<a name="line.15255"></a>
<span class="sourceLineNo">15256</span> long ibx = it.bLong;<a name="line.15256"></a>
<span class="sourceLineNo">15257</span> byte ox;<a name="line.15257"></a>
<span class="sourceLineNo">15258</span> ox = (byte) (iax &amp; ibx);<a name="line.15258"></a>
<span class="sourceLineNo">15259</span> oai8data[it.oIndex] = ox;<a name="line.15259"></a>
<span class="sourceLineNo">15260</span> for (int j = 1; j &lt; is; j++) {<a name="line.15260"></a>
<span class="sourceLineNo">15261</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.15261"></a>
<span class="sourceLineNo">15262</span> ox = (byte) (iax &amp; ibx);<a name="line.15262"></a>
<span class="sourceLineNo">15263</span> oai8data[it.oIndex + j] = ox;<a name="line.15263"></a>
<span class="sourceLineNo">15264</span> }<a name="line.15264"></a>
<span class="sourceLineNo">15265</span> }<a name="line.15265"></a>
<span class="sourceLineNo">15266</span> }<a name="line.15266"></a>
<span class="sourceLineNo">15267</span> } else if (as &gt; bs) {<a name="line.15267"></a>
<span class="sourceLineNo">15268</span> {<a name="line.15268"></a>
<span class="sourceLineNo">15269</span> while (it.hasNext()) {<a name="line.15269"></a>
<span class="sourceLineNo">15270</span> long iax = it.aLong;<a name="line.15270"></a>
<span class="sourceLineNo">15271</span> final long ibx = it.bLong;<a name="line.15271"></a>
<span class="sourceLineNo">15272</span> byte ox;<a name="line.15272"></a>
<span class="sourceLineNo">15273</span> ox = (byte) (iax &amp; ibx);<a name="line.15273"></a>
<span class="sourceLineNo">15274</span> oai8data[it.oIndex] = ox;<a name="line.15274"></a>
<span class="sourceLineNo">15275</span> for (int j = 1; j &lt; is; j++) {<a name="line.15275"></a>
<span class="sourceLineNo">15276</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.15276"></a>
<span class="sourceLineNo">15277</span> ox = (byte) (iax &amp; ibx);<a name="line.15277"></a>
<span class="sourceLineNo">15278</span> oai8data[it.oIndex + j] = ox;<a name="line.15278"></a>
<span class="sourceLineNo">15279</span> }<a name="line.15279"></a>
<span class="sourceLineNo">15280</span> }<a name="line.15280"></a>
<span class="sourceLineNo">15281</span> }<a name="line.15281"></a>
<span class="sourceLineNo">15282</span> } else if (as == 1) {<a name="line.15282"></a>
<span class="sourceLineNo">15283</span> {<a name="line.15283"></a>
<span class="sourceLineNo">15284</span> while (it.hasNext()) {<a name="line.15284"></a>
<span class="sourceLineNo">15285</span> final long iax = it.aLong;<a name="line.15285"></a>
<span class="sourceLineNo">15286</span> final long ibx = it.bLong;<a name="line.15286"></a>
<span class="sourceLineNo">15287</span> byte ox;<a name="line.15287"></a>
<span class="sourceLineNo">15288</span> ox = (byte) (iax &amp; ibx);<a name="line.15288"></a>
<span class="sourceLineNo">15289</span> for (int j = 0; j &lt; is; j++) {<a name="line.15289"></a>
<span class="sourceLineNo">15290</span> oai8data[it.oIndex + j] = ox;<a name="line.15290"></a>
<span class="sourceLineNo">15291</span> }<a name="line.15291"></a>
<span class="sourceLineNo">15292</span> }<a name="line.15292"></a>
<span class="sourceLineNo">15293</span> }<a name="line.15293"></a>
<span class="sourceLineNo">15294</span> } else {<a name="line.15294"></a>
<span class="sourceLineNo">15295</span> {<a name="line.15295"></a>
<span class="sourceLineNo">15296</span> while (it.hasNext()) {<a name="line.15296"></a>
<span class="sourceLineNo">15297</span> long iax = it.aLong;<a name="line.15297"></a>
<span class="sourceLineNo">15298</span> long ibx = it.bLong;<a name="line.15298"></a>
<span class="sourceLineNo">15299</span> byte ox;<a name="line.15299"></a>
<span class="sourceLineNo">15300</span> ox = (byte) (iax &amp; ibx);<a name="line.15300"></a>
<span class="sourceLineNo">15301</span> oai8data[it.oIndex] = ox;<a name="line.15301"></a>
<span class="sourceLineNo">15302</span> for (int j = 1; j &lt; is; j++) {<a name="line.15302"></a>
<span class="sourceLineNo">15303</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.15303"></a>
<span class="sourceLineNo">15304</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.15304"></a>
<span class="sourceLineNo">15305</span> ox = (byte) (iax &amp; ibx);<a name="line.15305"></a>
<span class="sourceLineNo">15306</span> oai8data[it.oIndex + j] = ox;<a name="line.15306"></a>
<span class="sourceLineNo">15307</span> }<a name="line.15307"></a>
<span class="sourceLineNo">15308</span> }<a name="line.15308"></a>
<span class="sourceLineNo">15309</span> }<a name="line.15309"></a>
<span class="sourceLineNo">15310</span> }<a name="line.15310"></a>
<span class="sourceLineNo">15311</span> break;<a name="line.15311"></a>
<span class="sourceLineNo">15312</span> case Dataset.ARRAYINT16:<a name="line.15312"></a>
<span class="sourceLineNo">15313</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.15313"></a>
<span class="sourceLineNo">15314</span> if (is == 1) {<a name="line.15314"></a>
<span class="sourceLineNo">15315</span> {<a name="line.15315"></a>
<span class="sourceLineNo">15316</span> while (it.hasNext()) {<a name="line.15316"></a>
<span class="sourceLineNo">15317</span> final long iax = it.aLong;<a name="line.15317"></a>
<span class="sourceLineNo">15318</span> final long ibx = it.bLong;<a name="line.15318"></a>
<span class="sourceLineNo">15319</span> short ox;<a name="line.15319"></a>
<span class="sourceLineNo">15320</span> ox = (short) (iax &amp; ibx);<a name="line.15320"></a>
<span class="sourceLineNo">15321</span> oai16data[it.oIndex] = ox;<a name="line.15321"></a>
<span class="sourceLineNo">15322</span> }<a name="line.15322"></a>
<span class="sourceLineNo">15323</span> }<a name="line.15323"></a>
<span class="sourceLineNo">15324</span> } else if (as &lt; bs) {<a name="line.15324"></a>
<span class="sourceLineNo">15325</span> {<a name="line.15325"></a>
<span class="sourceLineNo">15326</span> while (it.hasNext()) {<a name="line.15326"></a>
<span class="sourceLineNo">15327</span> final long iax = it.aLong;<a name="line.15327"></a>
<span class="sourceLineNo">15328</span> long ibx = it.bLong;<a name="line.15328"></a>
<span class="sourceLineNo">15329</span> short ox;<a name="line.15329"></a>
<span class="sourceLineNo">15330</span> ox = (short) (iax &amp; ibx);<a name="line.15330"></a>
<span class="sourceLineNo">15331</span> oai16data[it.oIndex] = ox;<a name="line.15331"></a>
<span class="sourceLineNo">15332</span> for (int j = 1; j &lt; is; j++) {<a name="line.15332"></a>
<span class="sourceLineNo">15333</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.15333"></a>
<span class="sourceLineNo">15334</span> ox = (short) (iax &amp; ibx);<a name="line.15334"></a>
<span class="sourceLineNo">15335</span> oai16data[it.oIndex + j] = ox;<a name="line.15335"></a>
<span class="sourceLineNo">15336</span> }<a name="line.15336"></a>
<span class="sourceLineNo">15337</span> }<a name="line.15337"></a>
<span class="sourceLineNo">15338</span> }<a name="line.15338"></a>
<span class="sourceLineNo">15339</span> } else if (as &gt; bs) {<a name="line.15339"></a>
<span class="sourceLineNo">15340</span> {<a name="line.15340"></a>
<span class="sourceLineNo">15341</span> while (it.hasNext()) {<a name="line.15341"></a>
<span class="sourceLineNo">15342</span> long iax = it.aLong;<a name="line.15342"></a>
<span class="sourceLineNo">15343</span> final long ibx = it.bLong;<a name="line.15343"></a>
<span class="sourceLineNo">15344</span> short ox;<a name="line.15344"></a>
<span class="sourceLineNo">15345</span> ox = (short) (iax &amp; ibx);<a name="line.15345"></a>
<span class="sourceLineNo">15346</span> oai16data[it.oIndex] = ox;<a name="line.15346"></a>
<span class="sourceLineNo">15347</span> for (int j = 1; j &lt; is; j++) {<a name="line.15347"></a>
<span class="sourceLineNo">15348</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.15348"></a>
<span class="sourceLineNo">15349</span> ox = (short) (iax &amp; ibx);<a name="line.15349"></a>
<span class="sourceLineNo">15350</span> oai16data[it.oIndex + j] = ox;<a name="line.15350"></a>
<span class="sourceLineNo">15351</span> }<a name="line.15351"></a>
<span class="sourceLineNo">15352</span> }<a name="line.15352"></a>
<span class="sourceLineNo">15353</span> }<a name="line.15353"></a>
<span class="sourceLineNo">15354</span> } else if (as == 1) {<a name="line.15354"></a>
<span class="sourceLineNo">15355</span> {<a name="line.15355"></a>
<span class="sourceLineNo">15356</span> while (it.hasNext()) {<a name="line.15356"></a>
<span class="sourceLineNo">15357</span> final long iax = it.aLong;<a name="line.15357"></a>
<span class="sourceLineNo">15358</span> final long ibx = it.bLong;<a name="line.15358"></a>
<span class="sourceLineNo">15359</span> short ox;<a name="line.15359"></a>
<span class="sourceLineNo">15360</span> ox = (short) (iax &amp; ibx);<a name="line.15360"></a>
<span class="sourceLineNo">15361</span> for (int j = 0; j &lt; is; j++) {<a name="line.15361"></a>
<span class="sourceLineNo">15362</span> oai16data[it.oIndex + j] = ox;<a name="line.15362"></a>
<span class="sourceLineNo">15363</span> }<a name="line.15363"></a>
<span class="sourceLineNo">15364</span> }<a name="line.15364"></a>
<span class="sourceLineNo">15365</span> }<a name="line.15365"></a>
<span class="sourceLineNo">15366</span> } else {<a name="line.15366"></a>
<span class="sourceLineNo">15367</span> {<a name="line.15367"></a>
<span class="sourceLineNo">15368</span> while (it.hasNext()) {<a name="line.15368"></a>
<span class="sourceLineNo">15369</span> long iax = it.aLong;<a name="line.15369"></a>
<span class="sourceLineNo">15370</span> long ibx = it.bLong;<a name="line.15370"></a>
<span class="sourceLineNo">15371</span> short ox;<a name="line.15371"></a>
<span class="sourceLineNo">15372</span> ox = (short) (iax &amp; ibx);<a name="line.15372"></a>
<span class="sourceLineNo">15373</span> oai16data[it.oIndex] = ox;<a name="line.15373"></a>
<span class="sourceLineNo">15374</span> for (int j = 1; j &lt; is; j++) {<a name="line.15374"></a>
<span class="sourceLineNo">15375</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.15375"></a>
<span class="sourceLineNo">15376</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.15376"></a>
<span class="sourceLineNo">15377</span> ox = (short) (iax &amp; ibx);<a name="line.15377"></a>
<span class="sourceLineNo">15378</span> oai16data[it.oIndex + j] = ox;<a name="line.15378"></a>
<span class="sourceLineNo">15379</span> }<a name="line.15379"></a>
<span class="sourceLineNo">15380</span> }<a name="line.15380"></a>
<span class="sourceLineNo">15381</span> }<a name="line.15381"></a>
<span class="sourceLineNo">15382</span> }<a name="line.15382"></a>
<span class="sourceLineNo">15383</span> break;<a name="line.15383"></a>
<span class="sourceLineNo">15384</span> case Dataset.ARRAYINT64:<a name="line.15384"></a>
<span class="sourceLineNo">15385</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.15385"></a>
<span class="sourceLineNo">15386</span> if (is == 1) {<a name="line.15386"></a>
<span class="sourceLineNo">15387</span> {<a name="line.15387"></a>
<span class="sourceLineNo">15388</span> while (it.hasNext()) {<a name="line.15388"></a>
<span class="sourceLineNo">15389</span> final long iax = it.aLong;<a name="line.15389"></a>
<span class="sourceLineNo">15390</span> final long ibx = it.bLong;<a name="line.15390"></a>
<span class="sourceLineNo">15391</span> long ox;<a name="line.15391"></a>
<span class="sourceLineNo">15392</span> ox = (iax &amp; ibx);<a name="line.15392"></a>
<span class="sourceLineNo">15393</span> oai64data[it.oIndex] = ox;<a name="line.15393"></a>
<span class="sourceLineNo">15394</span> }<a name="line.15394"></a>
<span class="sourceLineNo">15395</span> }<a name="line.15395"></a>
<span class="sourceLineNo">15396</span> } else if (as &lt; bs) {<a name="line.15396"></a>
<span class="sourceLineNo">15397</span> {<a name="line.15397"></a>
<span class="sourceLineNo">15398</span> while (it.hasNext()) {<a name="line.15398"></a>
<span class="sourceLineNo">15399</span> final long iax = it.aLong;<a name="line.15399"></a>
<span class="sourceLineNo">15400</span> long ibx = it.bLong;<a name="line.15400"></a>
<span class="sourceLineNo">15401</span> long ox;<a name="line.15401"></a>
<span class="sourceLineNo">15402</span> ox = (iax &amp; ibx);<a name="line.15402"></a>
<span class="sourceLineNo">15403</span> oai64data[it.oIndex] = ox;<a name="line.15403"></a>
<span class="sourceLineNo">15404</span> for (int j = 1; j &lt; is; j++) {<a name="line.15404"></a>
<span class="sourceLineNo">15405</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.15405"></a>
<span class="sourceLineNo">15406</span> ox = (iax &amp; ibx);<a name="line.15406"></a>
<span class="sourceLineNo">15407</span> oai64data[it.oIndex + j] = ox;<a name="line.15407"></a>
<span class="sourceLineNo">15408</span> }<a name="line.15408"></a>
<span class="sourceLineNo">15409</span> }<a name="line.15409"></a>
<span class="sourceLineNo">15410</span> }<a name="line.15410"></a>
<span class="sourceLineNo">15411</span> } else if (as &gt; bs) {<a name="line.15411"></a>
<span class="sourceLineNo">15412</span> {<a name="line.15412"></a>
<span class="sourceLineNo">15413</span> while (it.hasNext()) {<a name="line.15413"></a>
<span class="sourceLineNo">15414</span> long iax = it.aLong;<a name="line.15414"></a>
<span class="sourceLineNo">15415</span> final long ibx = it.bLong;<a name="line.15415"></a>
<span class="sourceLineNo">15416</span> long ox;<a name="line.15416"></a>
<span class="sourceLineNo">15417</span> ox = (iax &amp; ibx);<a name="line.15417"></a>
<span class="sourceLineNo">15418</span> oai64data[it.oIndex] = ox;<a name="line.15418"></a>
<span class="sourceLineNo">15419</span> for (int j = 1; j &lt; is; j++) {<a name="line.15419"></a>
<span class="sourceLineNo">15420</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.15420"></a>
<span class="sourceLineNo">15421</span> ox = (iax &amp; ibx);<a name="line.15421"></a>
<span class="sourceLineNo">15422</span> oai64data[it.oIndex + j] = ox;<a name="line.15422"></a>
<span class="sourceLineNo">15423</span> }<a name="line.15423"></a>
<span class="sourceLineNo">15424</span> }<a name="line.15424"></a>
<span class="sourceLineNo">15425</span> }<a name="line.15425"></a>
<span class="sourceLineNo">15426</span> } else if (as == 1) {<a name="line.15426"></a>
<span class="sourceLineNo">15427</span> {<a name="line.15427"></a>
<span class="sourceLineNo">15428</span> while (it.hasNext()) {<a name="line.15428"></a>
<span class="sourceLineNo">15429</span> final long iax = it.aLong;<a name="line.15429"></a>
<span class="sourceLineNo">15430</span> final long ibx = it.bLong;<a name="line.15430"></a>
<span class="sourceLineNo">15431</span> long ox;<a name="line.15431"></a>
<span class="sourceLineNo">15432</span> ox = (iax &amp; ibx);<a name="line.15432"></a>
<span class="sourceLineNo">15433</span> for (int j = 0; j &lt; is; j++) {<a name="line.15433"></a>
<span class="sourceLineNo">15434</span> oai64data[it.oIndex + j] = ox;<a name="line.15434"></a>
<span class="sourceLineNo">15435</span> }<a name="line.15435"></a>
<span class="sourceLineNo">15436</span> }<a name="line.15436"></a>
<span class="sourceLineNo">15437</span> }<a name="line.15437"></a>
<span class="sourceLineNo">15438</span> } else {<a name="line.15438"></a>
<span class="sourceLineNo">15439</span> {<a name="line.15439"></a>
<span class="sourceLineNo">15440</span> while (it.hasNext()) {<a name="line.15440"></a>
<span class="sourceLineNo">15441</span> long iax = it.aLong;<a name="line.15441"></a>
<span class="sourceLineNo">15442</span> long ibx = it.bLong;<a name="line.15442"></a>
<span class="sourceLineNo">15443</span> long ox;<a name="line.15443"></a>
<span class="sourceLineNo">15444</span> ox = (iax &amp; ibx);<a name="line.15444"></a>
<span class="sourceLineNo">15445</span> oai64data[it.oIndex] = ox;<a name="line.15445"></a>
<span class="sourceLineNo">15446</span> for (int j = 1; j &lt; is; j++) {<a name="line.15446"></a>
<span class="sourceLineNo">15447</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.15447"></a>
<span class="sourceLineNo">15448</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.15448"></a>
<span class="sourceLineNo">15449</span> ox = (iax &amp; ibx);<a name="line.15449"></a>
<span class="sourceLineNo">15450</span> oai64data[it.oIndex + j] = ox;<a name="line.15450"></a>
<span class="sourceLineNo">15451</span> }<a name="line.15451"></a>
<span class="sourceLineNo">15452</span> }<a name="line.15452"></a>
<span class="sourceLineNo">15453</span> }<a name="line.15453"></a>
<span class="sourceLineNo">15454</span> }<a name="line.15454"></a>
<span class="sourceLineNo">15455</span> break;<a name="line.15455"></a>
<span class="sourceLineNo">15456</span> case Dataset.ARRAYINT32:<a name="line.15456"></a>
<span class="sourceLineNo">15457</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.15457"></a>
<span class="sourceLineNo">15458</span> if (is == 1) {<a name="line.15458"></a>
<span class="sourceLineNo">15459</span> {<a name="line.15459"></a>
<span class="sourceLineNo">15460</span> while (it.hasNext()) {<a name="line.15460"></a>
<span class="sourceLineNo">15461</span> final long iax = it.aLong;<a name="line.15461"></a>
<span class="sourceLineNo">15462</span> final long ibx = it.bLong;<a name="line.15462"></a>
<span class="sourceLineNo">15463</span> int ox;<a name="line.15463"></a>
<span class="sourceLineNo">15464</span> ox = (int) (iax &amp; ibx);<a name="line.15464"></a>
<span class="sourceLineNo">15465</span> oai32data[it.oIndex] = ox;<a name="line.15465"></a>
<span class="sourceLineNo">15466</span> }<a name="line.15466"></a>
<span class="sourceLineNo">15467</span> }<a name="line.15467"></a>
<span class="sourceLineNo">15468</span> } else if (as &lt; bs) {<a name="line.15468"></a>
<span class="sourceLineNo">15469</span> {<a name="line.15469"></a>
<span class="sourceLineNo">15470</span> while (it.hasNext()) {<a name="line.15470"></a>
<span class="sourceLineNo">15471</span> final long iax = it.aLong;<a name="line.15471"></a>
<span class="sourceLineNo">15472</span> long ibx = it.bLong;<a name="line.15472"></a>
<span class="sourceLineNo">15473</span> int ox;<a name="line.15473"></a>
<span class="sourceLineNo">15474</span> ox = (int) (iax &amp; ibx);<a name="line.15474"></a>
<span class="sourceLineNo">15475</span> oai32data[it.oIndex] = ox;<a name="line.15475"></a>
<span class="sourceLineNo">15476</span> for (int j = 1; j &lt; is; j++) {<a name="line.15476"></a>
<span class="sourceLineNo">15477</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.15477"></a>
<span class="sourceLineNo">15478</span> ox = (int) (iax &amp; ibx);<a name="line.15478"></a>
<span class="sourceLineNo">15479</span> oai32data[it.oIndex + j] = ox;<a name="line.15479"></a>
<span class="sourceLineNo">15480</span> }<a name="line.15480"></a>
<span class="sourceLineNo">15481</span> }<a name="line.15481"></a>
<span class="sourceLineNo">15482</span> }<a name="line.15482"></a>
<span class="sourceLineNo">15483</span> } else if (as &gt; bs) {<a name="line.15483"></a>
<span class="sourceLineNo">15484</span> {<a name="line.15484"></a>
<span class="sourceLineNo">15485</span> while (it.hasNext()) {<a name="line.15485"></a>
<span class="sourceLineNo">15486</span> long iax = it.aLong;<a name="line.15486"></a>
<span class="sourceLineNo">15487</span> final long ibx = it.bLong;<a name="line.15487"></a>
<span class="sourceLineNo">15488</span> int ox;<a name="line.15488"></a>
<span class="sourceLineNo">15489</span> ox = (int) (iax &amp; ibx);<a name="line.15489"></a>
<span class="sourceLineNo">15490</span> oai32data[it.oIndex] = ox;<a name="line.15490"></a>
<span class="sourceLineNo">15491</span> for (int j = 1; j &lt; is; j++) {<a name="line.15491"></a>
<span class="sourceLineNo">15492</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.15492"></a>
<span class="sourceLineNo">15493</span> ox = (int) (iax &amp; ibx);<a name="line.15493"></a>
<span class="sourceLineNo">15494</span> oai32data[it.oIndex + j] = ox;<a name="line.15494"></a>
<span class="sourceLineNo">15495</span> }<a name="line.15495"></a>
<span class="sourceLineNo">15496</span> }<a name="line.15496"></a>
<span class="sourceLineNo">15497</span> }<a name="line.15497"></a>
<span class="sourceLineNo">15498</span> } else if (as == 1) {<a name="line.15498"></a>
<span class="sourceLineNo">15499</span> {<a name="line.15499"></a>
<span class="sourceLineNo">15500</span> while (it.hasNext()) {<a name="line.15500"></a>
<span class="sourceLineNo">15501</span> final long iax = it.aLong;<a name="line.15501"></a>
<span class="sourceLineNo">15502</span> final long ibx = it.bLong;<a name="line.15502"></a>
<span class="sourceLineNo">15503</span> int ox;<a name="line.15503"></a>
<span class="sourceLineNo">15504</span> ox = (int) (iax &amp; ibx);<a name="line.15504"></a>
<span class="sourceLineNo">15505</span> for (int j = 0; j &lt; is; j++) {<a name="line.15505"></a>
<span class="sourceLineNo">15506</span> oai32data[it.oIndex + j] = ox;<a name="line.15506"></a>
<span class="sourceLineNo">15507</span> }<a name="line.15507"></a>
<span class="sourceLineNo">15508</span> }<a name="line.15508"></a>
<span class="sourceLineNo">15509</span> }<a name="line.15509"></a>
<span class="sourceLineNo">15510</span> } else {<a name="line.15510"></a>
<span class="sourceLineNo">15511</span> {<a name="line.15511"></a>
<span class="sourceLineNo">15512</span> while (it.hasNext()) {<a name="line.15512"></a>
<span class="sourceLineNo">15513</span> long iax = it.aLong;<a name="line.15513"></a>
<span class="sourceLineNo">15514</span> long ibx = it.bLong;<a name="line.15514"></a>
<span class="sourceLineNo">15515</span> int ox;<a name="line.15515"></a>
<span class="sourceLineNo">15516</span> ox = (int) (iax &amp; ibx);<a name="line.15516"></a>
<span class="sourceLineNo">15517</span> oai32data[it.oIndex] = ox;<a name="line.15517"></a>
<span class="sourceLineNo">15518</span> for (int j = 1; j &lt; is; j++) {<a name="line.15518"></a>
<span class="sourceLineNo">15519</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.15519"></a>
<span class="sourceLineNo">15520</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.15520"></a>
<span class="sourceLineNo">15521</span> ox = (int) (iax &amp; ibx);<a name="line.15521"></a>
<span class="sourceLineNo">15522</span> oai32data[it.oIndex + j] = ox;<a name="line.15522"></a>
<span class="sourceLineNo">15523</span> }<a name="line.15523"></a>
<span class="sourceLineNo">15524</span> }<a name="line.15524"></a>
<span class="sourceLineNo">15525</span> }<a name="line.15525"></a>
<span class="sourceLineNo">15526</span> }<a name="line.15526"></a>
<span class="sourceLineNo">15527</span> break;<a name="line.15527"></a>
<span class="sourceLineNo">15528</span> default:<a name="line.15528"></a>
<span class="sourceLineNo">15529</span> throw new IllegalArgumentException("bitwiseAnd supports integer, compound integer datasets only");<a name="line.15529"></a>
<span class="sourceLineNo">15530</span> }<a name="line.15530"></a>
<span class="sourceLineNo">15531</span><a name="line.15531"></a>
<span class="sourceLineNo">15532</span> addBinaryOperatorName(da, db, result, "&amp;");<a name="line.15532"></a>
<span class="sourceLineNo">15533</span> return result;<a name="line.15533"></a>
<span class="sourceLineNo">15534</span> }<a name="line.15534"></a>
<span class="sourceLineNo">15535</span><a name="line.15535"></a>
<span class="sourceLineNo">15536</span> /**<a name="line.15536"></a>
<span class="sourceLineNo">15537</span> * bitwiseOr operator<a name="line.15537"></a>
<span class="sourceLineNo">15538</span> * @param a<a name="line.15538"></a>
<span class="sourceLineNo">15539</span> * @param b<a name="line.15539"></a>
<span class="sourceLineNo">15540</span> * @return {@code a | b}, bitwise inclusive OR of a and b<a name="line.15540"></a>
<span class="sourceLineNo">15541</span> */<a name="line.15541"></a>
<span class="sourceLineNo">15542</span> public static Dataset bitwiseOr(final Object a, final Object b) {<a name="line.15542"></a>
<span class="sourceLineNo">15543</span> return bitwiseOr(a, b, null);<a name="line.15543"></a>
<span class="sourceLineNo">15544</span> }<a name="line.15544"></a>
<span class="sourceLineNo">15545</span><a name="line.15545"></a>
<span class="sourceLineNo">15546</span> /**<a name="line.15546"></a>
<span class="sourceLineNo">15547</span> * bitwiseOr operator<a name="line.15547"></a>
<span class="sourceLineNo">15548</span> * @param a<a name="line.15548"></a>
<span class="sourceLineNo">15549</span> * @param b<a name="line.15549"></a>
<span class="sourceLineNo">15550</span> * @param o output can be null - in which case, a new dataset is created<a name="line.15550"></a>
<span class="sourceLineNo">15551</span> * @return {@code a | b}, bitwise inclusive OR of a and b<a name="line.15551"></a>
<span class="sourceLineNo">15552</span> */<a name="line.15552"></a>
<span class="sourceLineNo">15553</span> public static Dataset bitwiseOr(final Object a, final Object b, final Dataset o) {<a name="line.15553"></a>
<span class="sourceLineNo">15554</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.15554"></a>
<span class="sourceLineNo">15555</span> Dataset db = b instanceof Dataset ? (Dataset) b : DatasetFactory.createFromObject(b);<a name="line.15555"></a>
<span class="sourceLineNo">15556</span> BroadcastIterator it = BroadcastIterator.createIterator(da, db, o, true);<a name="line.15556"></a>
<span class="sourceLineNo">15557</span> it.setOutputDouble(false);<a name="line.15557"></a>
<span class="sourceLineNo">15558</span> final Dataset result = it.getOutput();<a name="line.15558"></a>
<span class="sourceLineNo">15559</span> if (!result.isComplex()) {<a name="line.15559"></a>
<span class="sourceLineNo">15560</span> boolean change = false;<a name="line.15560"></a>
<span class="sourceLineNo">15561</span> if (da.isComplex()) {<a name="line.15561"></a>
<span class="sourceLineNo">15562</span> da = da.getRealView();<a name="line.15562"></a>
<span class="sourceLineNo">15563</span> change = true;<a name="line.15563"></a>
<span class="sourceLineNo">15564</span> }<a name="line.15564"></a>
<span class="sourceLineNo">15565</span> if (db.isComplex()) {<a name="line.15565"></a>
<span class="sourceLineNo">15566</span> db = db.getRealView();<a name="line.15566"></a>
<span class="sourceLineNo">15567</span> change = true;<a name="line.15567"></a>
<span class="sourceLineNo">15568</span> }<a name="line.15568"></a>
<span class="sourceLineNo">15569</span> if (change) {<a name="line.15569"></a>
<span class="sourceLineNo">15570</span> it = BroadcastIterator.createIterator(da, db, result, true);<a name="line.15570"></a>
<span class="sourceLineNo">15571</span> it.setOutputDouble(false);<a name="line.15571"></a>
<span class="sourceLineNo">15572</span> }<a name="line.15572"></a>
<span class="sourceLineNo">15573</span> }<a name="line.15573"></a>
<span class="sourceLineNo">15574</span> final int is = result.getElementsPerItem();<a name="line.15574"></a>
<span class="sourceLineNo">15575</span> final int as = da.getElementsPerItem();<a name="line.15575"></a>
<span class="sourceLineNo">15576</span> final int bs = db.getElementsPerItem();<a name="line.15576"></a>
<span class="sourceLineNo">15577</span> final int dt = result.getDType();<a name="line.15577"></a>
<span class="sourceLineNo">15578</span><a name="line.15578"></a>
<span class="sourceLineNo">15579</span> switch(dt) {<a name="line.15579"></a>
<span class="sourceLineNo">15580</span> case Dataset.INT8:<a name="line.15580"></a>
<span class="sourceLineNo">15581</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.15581"></a>
<span class="sourceLineNo">15582</span> {<a name="line.15582"></a>
<span class="sourceLineNo">15583</span> while (it.hasNext()) {<a name="line.15583"></a>
<span class="sourceLineNo">15584</span> final long iax = it.aLong;<a name="line.15584"></a>
<span class="sourceLineNo">15585</span> final long ibx = it.bLong;<a name="line.15585"></a>
<span class="sourceLineNo">15586</span> byte ox;<a name="line.15586"></a>
<span class="sourceLineNo">15587</span> ox = (byte) (iax | ibx);<a name="line.15587"></a>
<span class="sourceLineNo">15588</span> oi8data[it.oIndex] = ox;<a name="line.15588"></a>
<span class="sourceLineNo">15589</span> }<a name="line.15589"></a>
<span class="sourceLineNo">15590</span> }<a name="line.15590"></a>
<span class="sourceLineNo">15591</span> break;<a name="line.15591"></a>
<span class="sourceLineNo">15592</span> case Dataset.INT16:<a name="line.15592"></a>
<span class="sourceLineNo">15593</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.15593"></a>
<span class="sourceLineNo">15594</span> {<a name="line.15594"></a>
<span class="sourceLineNo">15595</span> while (it.hasNext()) {<a name="line.15595"></a>
<span class="sourceLineNo">15596</span> final long iax = it.aLong;<a name="line.15596"></a>
<span class="sourceLineNo">15597</span> final long ibx = it.bLong;<a name="line.15597"></a>
<span class="sourceLineNo">15598</span> short ox;<a name="line.15598"></a>
<span class="sourceLineNo">15599</span> ox = (short) (iax | ibx);<a name="line.15599"></a>
<span class="sourceLineNo">15600</span> oi16data[it.oIndex] = ox;<a name="line.15600"></a>
<span class="sourceLineNo">15601</span> }<a name="line.15601"></a>
<span class="sourceLineNo">15602</span> }<a name="line.15602"></a>
<span class="sourceLineNo">15603</span> break;<a name="line.15603"></a>
<span class="sourceLineNo">15604</span> case Dataset.INT64:<a name="line.15604"></a>
<span class="sourceLineNo">15605</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.15605"></a>
<span class="sourceLineNo">15606</span> {<a name="line.15606"></a>
<span class="sourceLineNo">15607</span> while (it.hasNext()) {<a name="line.15607"></a>
<span class="sourceLineNo">15608</span> final long iax = it.aLong;<a name="line.15608"></a>
<span class="sourceLineNo">15609</span> final long ibx = it.bLong;<a name="line.15609"></a>
<span class="sourceLineNo">15610</span> long ox;<a name="line.15610"></a>
<span class="sourceLineNo">15611</span> ox = (iax | ibx);<a name="line.15611"></a>
<span class="sourceLineNo">15612</span> oi64data[it.oIndex] = ox;<a name="line.15612"></a>
<span class="sourceLineNo">15613</span> }<a name="line.15613"></a>
<span class="sourceLineNo">15614</span> }<a name="line.15614"></a>
<span class="sourceLineNo">15615</span> break;<a name="line.15615"></a>
<span class="sourceLineNo">15616</span> case Dataset.INT32:<a name="line.15616"></a>
<span class="sourceLineNo">15617</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.15617"></a>
<span class="sourceLineNo">15618</span> {<a name="line.15618"></a>
<span class="sourceLineNo">15619</span> while (it.hasNext()) {<a name="line.15619"></a>
<span class="sourceLineNo">15620</span> final long iax = it.aLong;<a name="line.15620"></a>
<span class="sourceLineNo">15621</span> final long ibx = it.bLong;<a name="line.15621"></a>
<span class="sourceLineNo">15622</span> int ox;<a name="line.15622"></a>
<span class="sourceLineNo">15623</span> ox = (int) (iax | ibx);<a name="line.15623"></a>
<span class="sourceLineNo">15624</span> oi32data[it.oIndex] = ox;<a name="line.15624"></a>
<span class="sourceLineNo">15625</span> }<a name="line.15625"></a>
<span class="sourceLineNo">15626</span> }<a name="line.15626"></a>
<span class="sourceLineNo">15627</span> break;<a name="line.15627"></a>
<span class="sourceLineNo">15628</span> case Dataset.ARRAYINT8:<a name="line.15628"></a>
<span class="sourceLineNo">15629</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.15629"></a>
<span class="sourceLineNo">15630</span> if (is == 1) {<a name="line.15630"></a>
<span class="sourceLineNo">15631</span> {<a name="line.15631"></a>
<span class="sourceLineNo">15632</span> while (it.hasNext()) {<a name="line.15632"></a>
<span class="sourceLineNo">15633</span> final long iax = it.aLong;<a name="line.15633"></a>
<span class="sourceLineNo">15634</span> final long ibx = it.bLong;<a name="line.15634"></a>
<span class="sourceLineNo">15635</span> byte ox;<a name="line.15635"></a>
<span class="sourceLineNo">15636</span> ox = (byte) (iax | ibx);<a name="line.15636"></a>
<span class="sourceLineNo">15637</span> oai8data[it.oIndex] = ox;<a name="line.15637"></a>
<span class="sourceLineNo">15638</span> }<a name="line.15638"></a>
<span class="sourceLineNo">15639</span> }<a name="line.15639"></a>
<span class="sourceLineNo">15640</span> } else if (as &lt; bs) {<a name="line.15640"></a>
<span class="sourceLineNo">15641</span> {<a name="line.15641"></a>
<span class="sourceLineNo">15642</span> while (it.hasNext()) {<a name="line.15642"></a>
<span class="sourceLineNo">15643</span> final long iax = it.aLong;<a name="line.15643"></a>
<span class="sourceLineNo">15644</span> long ibx = it.bLong;<a name="line.15644"></a>
<span class="sourceLineNo">15645</span> byte ox;<a name="line.15645"></a>
<span class="sourceLineNo">15646</span> ox = (byte) (iax | ibx);<a name="line.15646"></a>
<span class="sourceLineNo">15647</span> oai8data[it.oIndex] = ox;<a name="line.15647"></a>
<span class="sourceLineNo">15648</span> for (int j = 1; j &lt; is; j++) {<a name="line.15648"></a>
<span class="sourceLineNo">15649</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.15649"></a>
<span class="sourceLineNo">15650</span> ox = (byte) (iax | ibx);<a name="line.15650"></a>
<span class="sourceLineNo">15651</span> oai8data[it.oIndex + j] = ox;<a name="line.15651"></a>
<span class="sourceLineNo">15652</span> }<a name="line.15652"></a>
<span class="sourceLineNo">15653</span> }<a name="line.15653"></a>
<span class="sourceLineNo">15654</span> }<a name="line.15654"></a>
<span class="sourceLineNo">15655</span> } else if (as &gt; bs) {<a name="line.15655"></a>
<span class="sourceLineNo">15656</span> {<a name="line.15656"></a>
<span class="sourceLineNo">15657</span> while (it.hasNext()) {<a name="line.15657"></a>
<span class="sourceLineNo">15658</span> long iax = it.aLong;<a name="line.15658"></a>
<span class="sourceLineNo">15659</span> final long ibx = it.bLong;<a name="line.15659"></a>
<span class="sourceLineNo">15660</span> byte ox;<a name="line.15660"></a>
<span class="sourceLineNo">15661</span> ox = (byte) (iax | ibx);<a name="line.15661"></a>
<span class="sourceLineNo">15662</span> oai8data[it.oIndex] = ox;<a name="line.15662"></a>
<span class="sourceLineNo">15663</span> for (int j = 1; j &lt; is; j++) {<a name="line.15663"></a>
<span class="sourceLineNo">15664</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.15664"></a>
<span class="sourceLineNo">15665</span> ox = (byte) (iax | ibx);<a name="line.15665"></a>
<span class="sourceLineNo">15666</span> oai8data[it.oIndex + j] = ox;<a name="line.15666"></a>
<span class="sourceLineNo">15667</span> }<a name="line.15667"></a>
<span class="sourceLineNo">15668</span> }<a name="line.15668"></a>
<span class="sourceLineNo">15669</span> }<a name="line.15669"></a>
<span class="sourceLineNo">15670</span> } else if (as == 1) {<a name="line.15670"></a>
<span class="sourceLineNo">15671</span> {<a name="line.15671"></a>
<span class="sourceLineNo">15672</span> while (it.hasNext()) {<a name="line.15672"></a>
<span class="sourceLineNo">15673</span> final long iax = it.aLong;<a name="line.15673"></a>
<span class="sourceLineNo">15674</span> final long ibx = it.bLong;<a name="line.15674"></a>
<span class="sourceLineNo">15675</span> byte ox;<a name="line.15675"></a>
<span class="sourceLineNo">15676</span> ox = (byte) (iax | ibx);<a name="line.15676"></a>
<span class="sourceLineNo">15677</span> for (int j = 0; j &lt; is; j++) {<a name="line.15677"></a>
<span class="sourceLineNo">15678</span> oai8data[it.oIndex + j] = ox;<a name="line.15678"></a>
<span class="sourceLineNo">15679</span> }<a name="line.15679"></a>
<span class="sourceLineNo">15680</span> }<a name="line.15680"></a>
<span class="sourceLineNo">15681</span> }<a name="line.15681"></a>
<span class="sourceLineNo">15682</span> } else {<a name="line.15682"></a>
<span class="sourceLineNo">15683</span> {<a name="line.15683"></a>
<span class="sourceLineNo">15684</span> while (it.hasNext()) {<a name="line.15684"></a>
<span class="sourceLineNo">15685</span> long iax = it.aLong;<a name="line.15685"></a>
<span class="sourceLineNo">15686</span> long ibx = it.bLong;<a name="line.15686"></a>
<span class="sourceLineNo">15687</span> byte ox;<a name="line.15687"></a>
<span class="sourceLineNo">15688</span> ox = (byte) (iax | ibx);<a name="line.15688"></a>
<span class="sourceLineNo">15689</span> oai8data[it.oIndex] = ox;<a name="line.15689"></a>
<span class="sourceLineNo">15690</span> for (int j = 1; j &lt; is; j++) {<a name="line.15690"></a>
<span class="sourceLineNo">15691</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.15691"></a>
<span class="sourceLineNo">15692</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.15692"></a>
<span class="sourceLineNo">15693</span> ox = (byte) (iax | ibx);<a name="line.15693"></a>
<span class="sourceLineNo">15694</span> oai8data[it.oIndex + j] = ox;<a name="line.15694"></a>
<span class="sourceLineNo">15695</span> }<a name="line.15695"></a>
<span class="sourceLineNo">15696</span> }<a name="line.15696"></a>
<span class="sourceLineNo">15697</span> }<a name="line.15697"></a>
<span class="sourceLineNo">15698</span> }<a name="line.15698"></a>
<span class="sourceLineNo">15699</span> break;<a name="line.15699"></a>
<span class="sourceLineNo">15700</span> case Dataset.ARRAYINT16:<a name="line.15700"></a>
<span class="sourceLineNo">15701</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.15701"></a>
<span class="sourceLineNo">15702</span> if (is == 1) {<a name="line.15702"></a>
<span class="sourceLineNo">15703</span> {<a name="line.15703"></a>
<span class="sourceLineNo">15704</span> while (it.hasNext()) {<a name="line.15704"></a>
<span class="sourceLineNo">15705</span> final long iax = it.aLong;<a name="line.15705"></a>
<span class="sourceLineNo">15706</span> final long ibx = it.bLong;<a name="line.15706"></a>
<span class="sourceLineNo">15707</span> short ox;<a name="line.15707"></a>
<span class="sourceLineNo">15708</span> ox = (short) (iax | ibx);<a name="line.15708"></a>
<span class="sourceLineNo">15709</span> oai16data[it.oIndex] = ox;<a name="line.15709"></a>
<span class="sourceLineNo">15710</span> }<a name="line.15710"></a>
<span class="sourceLineNo">15711</span> }<a name="line.15711"></a>
<span class="sourceLineNo">15712</span> } else if (as &lt; bs) {<a name="line.15712"></a>
<span class="sourceLineNo">15713</span> {<a name="line.15713"></a>
<span class="sourceLineNo">15714</span> while (it.hasNext()) {<a name="line.15714"></a>
<span class="sourceLineNo">15715</span> final long iax = it.aLong;<a name="line.15715"></a>
<span class="sourceLineNo">15716</span> long ibx = it.bLong;<a name="line.15716"></a>
<span class="sourceLineNo">15717</span> short ox;<a name="line.15717"></a>
<span class="sourceLineNo">15718</span> ox = (short) (iax | ibx);<a name="line.15718"></a>
<span class="sourceLineNo">15719</span> oai16data[it.oIndex] = ox;<a name="line.15719"></a>
<span class="sourceLineNo">15720</span> for (int j = 1; j &lt; is; j++) {<a name="line.15720"></a>
<span class="sourceLineNo">15721</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.15721"></a>
<span class="sourceLineNo">15722</span> ox = (short) (iax | ibx);<a name="line.15722"></a>
<span class="sourceLineNo">15723</span> oai16data[it.oIndex + j] = ox;<a name="line.15723"></a>
<span class="sourceLineNo">15724</span> }<a name="line.15724"></a>
<span class="sourceLineNo">15725</span> }<a name="line.15725"></a>
<span class="sourceLineNo">15726</span> }<a name="line.15726"></a>
<span class="sourceLineNo">15727</span> } else if (as &gt; bs) {<a name="line.15727"></a>
<span class="sourceLineNo">15728</span> {<a name="line.15728"></a>
<span class="sourceLineNo">15729</span> while (it.hasNext()) {<a name="line.15729"></a>
<span class="sourceLineNo">15730</span> long iax = it.aLong;<a name="line.15730"></a>
<span class="sourceLineNo">15731</span> final long ibx = it.bLong;<a name="line.15731"></a>
<span class="sourceLineNo">15732</span> short ox;<a name="line.15732"></a>
<span class="sourceLineNo">15733</span> ox = (short) (iax | ibx);<a name="line.15733"></a>
<span class="sourceLineNo">15734</span> oai16data[it.oIndex] = ox;<a name="line.15734"></a>
<span class="sourceLineNo">15735</span> for (int j = 1; j &lt; is; j++) {<a name="line.15735"></a>
<span class="sourceLineNo">15736</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.15736"></a>
<span class="sourceLineNo">15737</span> ox = (short) (iax | ibx);<a name="line.15737"></a>
<span class="sourceLineNo">15738</span> oai16data[it.oIndex + j] = ox;<a name="line.15738"></a>
<span class="sourceLineNo">15739</span> }<a name="line.15739"></a>
<span class="sourceLineNo">15740</span> }<a name="line.15740"></a>
<span class="sourceLineNo">15741</span> }<a name="line.15741"></a>
<span class="sourceLineNo">15742</span> } else if (as == 1) {<a name="line.15742"></a>
<span class="sourceLineNo">15743</span> {<a name="line.15743"></a>
<span class="sourceLineNo">15744</span> while (it.hasNext()) {<a name="line.15744"></a>
<span class="sourceLineNo">15745</span> final long iax = it.aLong;<a name="line.15745"></a>
<span class="sourceLineNo">15746</span> final long ibx = it.bLong;<a name="line.15746"></a>
<span class="sourceLineNo">15747</span> short ox;<a name="line.15747"></a>
<span class="sourceLineNo">15748</span> ox = (short) (iax | ibx);<a name="line.15748"></a>
<span class="sourceLineNo">15749</span> for (int j = 0; j &lt; is; j++) {<a name="line.15749"></a>
<span class="sourceLineNo">15750</span> oai16data[it.oIndex + j] = ox;<a name="line.15750"></a>
<span class="sourceLineNo">15751</span> }<a name="line.15751"></a>
<span class="sourceLineNo">15752</span> }<a name="line.15752"></a>
<span class="sourceLineNo">15753</span> }<a name="line.15753"></a>
<span class="sourceLineNo">15754</span> } else {<a name="line.15754"></a>
<span class="sourceLineNo">15755</span> {<a name="line.15755"></a>
<span class="sourceLineNo">15756</span> while (it.hasNext()) {<a name="line.15756"></a>
<span class="sourceLineNo">15757</span> long iax = it.aLong;<a name="line.15757"></a>
<span class="sourceLineNo">15758</span> long ibx = it.bLong;<a name="line.15758"></a>
<span class="sourceLineNo">15759</span> short ox;<a name="line.15759"></a>
<span class="sourceLineNo">15760</span> ox = (short) (iax | ibx);<a name="line.15760"></a>
<span class="sourceLineNo">15761</span> oai16data[it.oIndex] = ox;<a name="line.15761"></a>
<span class="sourceLineNo">15762</span> for (int j = 1; j &lt; is; j++) {<a name="line.15762"></a>
<span class="sourceLineNo">15763</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.15763"></a>
<span class="sourceLineNo">15764</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.15764"></a>
<span class="sourceLineNo">15765</span> ox = (short) (iax | ibx);<a name="line.15765"></a>
<span class="sourceLineNo">15766</span> oai16data[it.oIndex + j] = ox;<a name="line.15766"></a>
<span class="sourceLineNo">15767</span> }<a name="line.15767"></a>
<span class="sourceLineNo">15768</span> }<a name="line.15768"></a>
<span class="sourceLineNo">15769</span> }<a name="line.15769"></a>
<span class="sourceLineNo">15770</span> }<a name="line.15770"></a>
<span class="sourceLineNo">15771</span> break;<a name="line.15771"></a>
<span class="sourceLineNo">15772</span> case Dataset.ARRAYINT64:<a name="line.15772"></a>
<span class="sourceLineNo">15773</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.15773"></a>
<span class="sourceLineNo">15774</span> if (is == 1) {<a name="line.15774"></a>
<span class="sourceLineNo">15775</span> {<a name="line.15775"></a>
<span class="sourceLineNo">15776</span> while (it.hasNext()) {<a name="line.15776"></a>
<span class="sourceLineNo">15777</span> final long iax = it.aLong;<a name="line.15777"></a>
<span class="sourceLineNo">15778</span> final long ibx = it.bLong;<a name="line.15778"></a>
<span class="sourceLineNo">15779</span> long ox;<a name="line.15779"></a>
<span class="sourceLineNo">15780</span> ox = (iax | ibx);<a name="line.15780"></a>
<span class="sourceLineNo">15781</span> oai64data[it.oIndex] = ox;<a name="line.15781"></a>
<span class="sourceLineNo">15782</span> }<a name="line.15782"></a>
<span class="sourceLineNo">15783</span> }<a name="line.15783"></a>
<span class="sourceLineNo">15784</span> } else if (as &lt; bs) {<a name="line.15784"></a>
<span class="sourceLineNo">15785</span> {<a name="line.15785"></a>
<span class="sourceLineNo">15786</span> while (it.hasNext()) {<a name="line.15786"></a>
<span class="sourceLineNo">15787</span> final long iax = it.aLong;<a name="line.15787"></a>
<span class="sourceLineNo">15788</span> long ibx = it.bLong;<a name="line.15788"></a>
<span class="sourceLineNo">15789</span> long ox;<a name="line.15789"></a>
<span class="sourceLineNo">15790</span> ox = (iax | ibx);<a name="line.15790"></a>
<span class="sourceLineNo">15791</span> oai64data[it.oIndex] = ox;<a name="line.15791"></a>
<span class="sourceLineNo">15792</span> for (int j = 1; j &lt; is; j++) {<a name="line.15792"></a>
<span class="sourceLineNo">15793</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.15793"></a>
<span class="sourceLineNo">15794</span> ox = (iax | ibx);<a name="line.15794"></a>
<span class="sourceLineNo">15795</span> oai64data[it.oIndex + j] = ox;<a name="line.15795"></a>
<span class="sourceLineNo">15796</span> }<a name="line.15796"></a>
<span class="sourceLineNo">15797</span> }<a name="line.15797"></a>
<span class="sourceLineNo">15798</span> }<a name="line.15798"></a>
<span class="sourceLineNo">15799</span> } else if (as &gt; bs) {<a name="line.15799"></a>
<span class="sourceLineNo">15800</span> {<a name="line.15800"></a>
<span class="sourceLineNo">15801</span> while (it.hasNext()) {<a name="line.15801"></a>
<span class="sourceLineNo">15802</span> long iax = it.aLong;<a name="line.15802"></a>
<span class="sourceLineNo">15803</span> final long ibx = it.bLong;<a name="line.15803"></a>
<span class="sourceLineNo">15804</span> long ox;<a name="line.15804"></a>
<span class="sourceLineNo">15805</span> ox = (iax | ibx);<a name="line.15805"></a>
<span class="sourceLineNo">15806</span> oai64data[it.oIndex] = ox;<a name="line.15806"></a>
<span class="sourceLineNo">15807</span> for (int j = 1; j &lt; is; j++) {<a name="line.15807"></a>
<span class="sourceLineNo">15808</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.15808"></a>
<span class="sourceLineNo">15809</span> ox = (iax | ibx);<a name="line.15809"></a>
<span class="sourceLineNo">15810</span> oai64data[it.oIndex + j] = ox;<a name="line.15810"></a>
<span class="sourceLineNo">15811</span> }<a name="line.15811"></a>
<span class="sourceLineNo">15812</span> }<a name="line.15812"></a>
<span class="sourceLineNo">15813</span> }<a name="line.15813"></a>
<span class="sourceLineNo">15814</span> } else if (as == 1) {<a name="line.15814"></a>
<span class="sourceLineNo">15815</span> {<a name="line.15815"></a>
<span class="sourceLineNo">15816</span> while (it.hasNext()) {<a name="line.15816"></a>
<span class="sourceLineNo">15817</span> final long iax = it.aLong;<a name="line.15817"></a>
<span class="sourceLineNo">15818</span> final long ibx = it.bLong;<a name="line.15818"></a>
<span class="sourceLineNo">15819</span> long ox;<a name="line.15819"></a>
<span class="sourceLineNo">15820</span> ox = (iax | ibx);<a name="line.15820"></a>
<span class="sourceLineNo">15821</span> for (int j = 0; j &lt; is; j++) {<a name="line.15821"></a>
<span class="sourceLineNo">15822</span> oai64data[it.oIndex + j] = ox;<a name="line.15822"></a>
<span class="sourceLineNo">15823</span> }<a name="line.15823"></a>
<span class="sourceLineNo">15824</span> }<a name="line.15824"></a>
<span class="sourceLineNo">15825</span> }<a name="line.15825"></a>
<span class="sourceLineNo">15826</span> } else {<a name="line.15826"></a>
<span class="sourceLineNo">15827</span> {<a name="line.15827"></a>
<span class="sourceLineNo">15828</span> while (it.hasNext()) {<a name="line.15828"></a>
<span class="sourceLineNo">15829</span> long iax = it.aLong;<a name="line.15829"></a>
<span class="sourceLineNo">15830</span> long ibx = it.bLong;<a name="line.15830"></a>
<span class="sourceLineNo">15831</span> long ox;<a name="line.15831"></a>
<span class="sourceLineNo">15832</span> ox = (iax | ibx);<a name="line.15832"></a>
<span class="sourceLineNo">15833</span> oai64data[it.oIndex] = ox;<a name="line.15833"></a>
<span class="sourceLineNo">15834</span> for (int j = 1; j &lt; is; j++) {<a name="line.15834"></a>
<span class="sourceLineNo">15835</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.15835"></a>
<span class="sourceLineNo">15836</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.15836"></a>
<span class="sourceLineNo">15837</span> ox = (iax | ibx);<a name="line.15837"></a>
<span class="sourceLineNo">15838</span> oai64data[it.oIndex + j] = ox;<a name="line.15838"></a>
<span class="sourceLineNo">15839</span> }<a name="line.15839"></a>
<span class="sourceLineNo">15840</span> }<a name="line.15840"></a>
<span class="sourceLineNo">15841</span> }<a name="line.15841"></a>
<span class="sourceLineNo">15842</span> }<a name="line.15842"></a>
<span class="sourceLineNo">15843</span> break;<a name="line.15843"></a>
<span class="sourceLineNo">15844</span> case Dataset.ARRAYINT32:<a name="line.15844"></a>
<span class="sourceLineNo">15845</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.15845"></a>
<span class="sourceLineNo">15846</span> if (is == 1) {<a name="line.15846"></a>
<span class="sourceLineNo">15847</span> {<a name="line.15847"></a>
<span class="sourceLineNo">15848</span> while (it.hasNext()) {<a name="line.15848"></a>
<span class="sourceLineNo">15849</span> final long iax = it.aLong;<a name="line.15849"></a>
<span class="sourceLineNo">15850</span> final long ibx = it.bLong;<a name="line.15850"></a>
<span class="sourceLineNo">15851</span> int ox;<a name="line.15851"></a>
<span class="sourceLineNo">15852</span> ox = (int) (iax | ibx);<a name="line.15852"></a>
<span class="sourceLineNo">15853</span> oai32data[it.oIndex] = ox;<a name="line.15853"></a>
<span class="sourceLineNo">15854</span> }<a name="line.15854"></a>
<span class="sourceLineNo">15855</span> }<a name="line.15855"></a>
<span class="sourceLineNo">15856</span> } else if (as &lt; bs) {<a name="line.15856"></a>
<span class="sourceLineNo">15857</span> {<a name="line.15857"></a>
<span class="sourceLineNo">15858</span> while (it.hasNext()) {<a name="line.15858"></a>
<span class="sourceLineNo">15859</span> final long iax = it.aLong;<a name="line.15859"></a>
<span class="sourceLineNo">15860</span> long ibx = it.bLong;<a name="line.15860"></a>
<span class="sourceLineNo">15861</span> int ox;<a name="line.15861"></a>
<span class="sourceLineNo">15862</span> ox = (int) (iax | ibx);<a name="line.15862"></a>
<span class="sourceLineNo">15863</span> oai32data[it.oIndex] = ox;<a name="line.15863"></a>
<span class="sourceLineNo">15864</span> for (int j = 1; j &lt; is; j++) {<a name="line.15864"></a>
<span class="sourceLineNo">15865</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.15865"></a>
<span class="sourceLineNo">15866</span> ox = (int) (iax | ibx);<a name="line.15866"></a>
<span class="sourceLineNo">15867</span> oai32data[it.oIndex + j] = ox;<a name="line.15867"></a>
<span class="sourceLineNo">15868</span> }<a name="line.15868"></a>
<span class="sourceLineNo">15869</span> }<a name="line.15869"></a>
<span class="sourceLineNo">15870</span> }<a name="line.15870"></a>
<span class="sourceLineNo">15871</span> } else if (as &gt; bs) {<a name="line.15871"></a>
<span class="sourceLineNo">15872</span> {<a name="line.15872"></a>
<span class="sourceLineNo">15873</span> while (it.hasNext()) {<a name="line.15873"></a>
<span class="sourceLineNo">15874</span> long iax = it.aLong;<a name="line.15874"></a>
<span class="sourceLineNo">15875</span> final long ibx = it.bLong;<a name="line.15875"></a>
<span class="sourceLineNo">15876</span> int ox;<a name="line.15876"></a>
<span class="sourceLineNo">15877</span> ox = (int) (iax | ibx);<a name="line.15877"></a>
<span class="sourceLineNo">15878</span> oai32data[it.oIndex] = ox;<a name="line.15878"></a>
<span class="sourceLineNo">15879</span> for (int j = 1; j &lt; is; j++) {<a name="line.15879"></a>
<span class="sourceLineNo">15880</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.15880"></a>
<span class="sourceLineNo">15881</span> ox = (int) (iax | ibx);<a name="line.15881"></a>
<span class="sourceLineNo">15882</span> oai32data[it.oIndex + j] = ox;<a name="line.15882"></a>
<span class="sourceLineNo">15883</span> }<a name="line.15883"></a>
<span class="sourceLineNo">15884</span> }<a name="line.15884"></a>
<span class="sourceLineNo">15885</span> }<a name="line.15885"></a>
<span class="sourceLineNo">15886</span> } else if (as == 1) {<a name="line.15886"></a>
<span class="sourceLineNo">15887</span> {<a name="line.15887"></a>
<span class="sourceLineNo">15888</span> while (it.hasNext()) {<a name="line.15888"></a>
<span class="sourceLineNo">15889</span> final long iax = it.aLong;<a name="line.15889"></a>
<span class="sourceLineNo">15890</span> final long ibx = it.bLong;<a name="line.15890"></a>
<span class="sourceLineNo">15891</span> int ox;<a name="line.15891"></a>
<span class="sourceLineNo">15892</span> ox = (int) (iax | ibx);<a name="line.15892"></a>
<span class="sourceLineNo">15893</span> for (int j = 0; j &lt; is; j++) {<a name="line.15893"></a>
<span class="sourceLineNo">15894</span> oai32data[it.oIndex + j] = ox;<a name="line.15894"></a>
<span class="sourceLineNo">15895</span> }<a name="line.15895"></a>
<span class="sourceLineNo">15896</span> }<a name="line.15896"></a>
<span class="sourceLineNo">15897</span> }<a name="line.15897"></a>
<span class="sourceLineNo">15898</span> } else {<a name="line.15898"></a>
<span class="sourceLineNo">15899</span> {<a name="line.15899"></a>
<span class="sourceLineNo">15900</span> while (it.hasNext()) {<a name="line.15900"></a>
<span class="sourceLineNo">15901</span> long iax = it.aLong;<a name="line.15901"></a>
<span class="sourceLineNo">15902</span> long ibx = it.bLong;<a name="line.15902"></a>
<span class="sourceLineNo">15903</span> int ox;<a name="line.15903"></a>
<span class="sourceLineNo">15904</span> ox = (int) (iax | ibx);<a name="line.15904"></a>
<span class="sourceLineNo">15905</span> oai32data[it.oIndex] = ox;<a name="line.15905"></a>
<span class="sourceLineNo">15906</span> for (int j = 1; j &lt; is; j++) {<a name="line.15906"></a>
<span class="sourceLineNo">15907</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.15907"></a>
<span class="sourceLineNo">15908</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.15908"></a>
<span class="sourceLineNo">15909</span> ox = (int) (iax | ibx);<a name="line.15909"></a>
<span class="sourceLineNo">15910</span> oai32data[it.oIndex + j] = ox;<a name="line.15910"></a>
<span class="sourceLineNo">15911</span> }<a name="line.15911"></a>
<span class="sourceLineNo">15912</span> }<a name="line.15912"></a>
<span class="sourceLineNo">15913</span> }<a name="line.15913"></a>
<span class="sourceLineNo">15914</span> }<a name="line.15914"></a>
<span class="sourceLineNo">15915</span> break;<a name="line.15915"></a>
<span class="sourceLineNo">15916</span> default:<a name="line.15916"></a>
<span class="sourceLineNo">15917</span> throw new IllegalArgumentException("bitwiseOr supports integer, compound integer datasets only");<a name="line.15917"></a>
<span class="sourceLineNo">15918</span> }<a name="line.15918"></a>
<span class="sourceLineNo">15919</span><a name="line.15919"></a>
<span class="sourceLineNo">15920</span> addBinaryOperatorName(da, db, result, "|");<a name="line.15920"></a>
<span class="sourceLineNo">15921</span> return result;<a name="line.15921"></a>
<span class="sourceLineNo">15922</span> }<a name="line.15922"></a>
<span class="sourceLineNo">15923</span><a name="line.15923"></a>
<span class="sourceLineNo">15924</span> /**<a name="line.15924"></a>
<span class="sourceLineNo">15925</span> * bitwiseXor operator<a name="line.15925"></a>
<span class="sourceLineNo">15926</span> * @param a<a name="line.15926"></a>
<span class="sourceLineNo">15927</span> * @param b<a name="line.15927"></a>
<span class="sourceLineNo">15928</span> * @return {@code a ^ b}, bitwise exclusive OR of a and b<a name="line.15928"></a>
<span class="sourceLineNo">15929</span> */<a name="line.15929"></a>
<span class="sourceLineNo">15930</span> public static Dataset bitwiseXor(final Object a, final Object b) {<a name="line.15930"></a>
<span class="sourceLineNo">15931</span> return bitwiseXor(a, b, null);<a name="line.15931"></a>
<span class="sourceLineNo">15932</span> }<a name="line.15932"></a>
<span class="sourceLineNo">15933</span><a name="line.15933"></a>
<span class="sourceLineNo">15934</span> /**<a name="line.15934"></a>
<span class="sourceLineNo">15935</span> * bitwiseXor operator<a name="line.15935"></a>
<span class="sourceLineNo">15936</span> * @param a<a name="line.15936"></a>
<span class="sourceLineNo">15937</span> * @param b<a name="line.15937"></a>
<span class="sourceLineNo">15938</span> * @param o output can be null - in which case, a new dataset is created<a name="line.15938"></a>
<span class="sourceLineNo">15939</span> * @return {@code a ^ b}, bitwise exclusive OR of a and b<a name="line.15939"></a>
<span class="sourceLineNo">15940</span> */<a name="line.15940"></a>
<span class="sourceLineNo">15941</span> public static Dataset bitwiseXor(final Object a, final Object b, final Dataset o) {<a name="line.15941"></a>
<span class="sourceLineNo">15942</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.15942"></a>
<span class="sourceLineNo">15943</span> Dataset db = b instanceof Dataset ? (Dataset) b : DatasetFactory.createFromObject(b);<a name="line.15943"></a>
<span class="sourceLineNo">15944</span> BroadcastIterator it = BroadcastIterator.createIterator(da, db, o, true);<a name="line.15944"></a>
<span class="sourceLineNo">15945</span> it.setOutputDouble(false);<a name="line.15945"></a>
<span class="sourceLineNo">15946</span> final Dataset result = it.getOutput();<a name="line.15946"></a>
<span class="sourceLineNo">15947</span> if (!result.isComplex()) {<a name="line.15947"></a>
<span class="sourceLineNo">15948</span> boolean change = false;<a name="line.15948"></a>
<span class="sourceLineNo">15949</span> if (da.isComplex()) {<a name="line.15949"></a>
<span class="sourceLineNo">15950</span> da = da.getRealView();<a name="line.15950"></a>
<span class="sourceLineNo">15951</span> change = true;<a name="line.15951"></a>
<span class="sourceLineNo">15952</span> }<a name="line.15952"></a>
<span class="sourceLineNo">15953</span> if (db.isComplex()) {<a name="line.15953"></a>
<span class="sourceLineNo">15954</span> db = db.getRealView();<a name="line.15954"></a>
<span class="sourceLineNo">15955</span> change = true;<a name="line.15955"></a>
<span class="sourceLineNo">15956</span> }<a name="line.15956"></a>
<span class="sourceLineNo">15957</span> if (change) {<a name="line.15957"></a>
<span class="sourceLineNo">15958</span> it = BroadcastIterator.createIterator(da, db, result, true);<a name="line.15958"></a>
<span class="sourceLineNo">15959</span> it.setOutputDouble(false);<a name="line.15959"></a>
<span class="sourceLineNo">15960</span> }<a name="line.15960"></a>
<span class="sourceLineNo">15961</span> }<a name="line.15961"></a>
<span class="sourceLineNo">15962</span> final int is = result.getElementsPerItem();<a name="line.15962"></a>
<span class="sourceLineNo">15963</span> final int as = da.getElementsPerItem();<a name="line.15963"></a>
<span class="sourceLineNo">15964</span> final int bs = db.getElementsPerItem();<a name="line.15964"></a>
<span class="sourceLineNo">15965</span> final int dt = result.getDType();<a name="line.15965"></a>
<span class="sourceLineNo">15966</span><a name="line.15966"></a>
<span class="sourceLineNo">15967</span> switch(dt) {<a name="line.15967"></a>
<span class="sourceLineNo">15968</span> case Dataset.INT8:<a name="line.15968"></a>
<span class="sourceLineNo">15969</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.15969"></a>
<span class="sourceLineNo">15970</span> {<a name="line.15970"></a>
<span class="sourceLineNo">15971</span> while (it.hasNext()) {<a name="line.15971"></a>
<span class="sourceLineNo">15972</span> final long iax = it.aLong;<a name="line.15972"></a>
<span class="sourceLineNo">15973</span> final long ibx = it.bLong;<a name="line.15973"></a>
<span class="sourceLineNo">15974</span> byte ox;<a name="line.15974"></a>
<span class="sourceLineNo">15975</span> ox = (byte) (iax ^ ibx);<a name="line.15975"></a>
<span class="sourceLineNo">15976</span> oi8data[it.oIndex] = ox;<a name="line.15976"></a>
<span class="sourceLineNo">15977</span> }<a name="line.15977"></a>
<span class="sourceLineNo">15978</span> }<a name="line.15978"></a>
<span class="sourceLineNo">15979</span> break;<a name="line.15979"></a>
<span class="sourceLineNo">15980</span> case Dataset.INT16:<a name="line.15980"></a>
<span class="sourceLineNo">15981</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.15981"></a>
<span class="sourceLineNo">15982</span> {<a name="line.15982"></a>
<span class="sourceLineNo">15983</span> while (it.hasNext()) {<a name="line.15983"></a>
<span class="sourceLineNo">15984</span> final long iax = it.aLong;<a name="line.15984"></a>
<span class="sourceLineNo">15985</span> final long ibx = it.bLong;<a name="line.15985"></a>
<span class="sourceLineNo">15986</span> short ox;<a name="line.15986"></a>
<span class="sourceLineNo">15987</span> ox = (short) (iax ^ ibx);<a name="line.15987"></a>
<span class="sourceLineNo">15988</span> oi16data[it.oIndex] = ox;<a name="line.15988"></a>
<span class="sourceLineNo">15989</span> }<a name="line.15989"></a>
<span class="sourceLineNo">15990</span> }<a name="line.15990"></a>
<span class="sourceLineNo">15991</span> break;<a name="line.15991"></a>
<span class="sourceLineNo">15992</span> case Dataset.INT64:<a name="line.15992"></a>
<span class="sourceLineNo">15993</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.15993"></a>
<span class="sourceLineNo">15994</span> {<a name="line.15994"></a>
<span class="sourceLineNo">15995</span> while (it.hasNext()) {<a name="line.15995"></a>
<span class="sourceLineNo">15996</span> final long iax = it.aLong;<a name="line.15996"></a>
<span class="sourceLineNo">15997</span> final long ibx = it.bLong;<a name="line.15997"></a>
<span class="sourceLineNo">15998</span> long ox;<a name="line.15998"></a>
<span class="sourceLineNo">15999</span> ox = (iax ^ ibx);<a name="line.15999"></a>
<span class="sourceLineNo">16000</span> oi64data[it.oIndex] = ox;<a name="line.16000"></a>
<span class="sourceLineNo">16001</span> }<a name="line.16001"></a>
<span class="sourceLineNo">16002</span> }<a name="line.16002"></a>
<span class="sourceLineNo">16003</span> break;<a name="line.16003"></a>
<span class="sourceLineNo">16004</span> case Dataset.INT32:<a name="line.16004"></a>
<span class="sourceLineNo">16005</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.16005"></a>
<span class="sourceLineNo">16006</span> {<a name="line.16006"></a>
<span class="sourceLineNo">16007</span> while (it.hasNext()) {<a name="line.16007"></a>
<span class="sourceLineNo">16008</span> final long iax = it.aLong;<a name="line.16008"></a>
<span class="sourceLineNo">16009</span> final long ibx = it.bLong;<a name="line.16009"></a>
<span class="sourceLineNo">16010</span> int ox;<a name="line.16010"></a>
<span class="sourceLineNo">16011</span> ox = (int) (iax ^ ibx);<a name="line.16011"></a>
<span class="sourceLineNo">16012</span> oi32data[it.oIndex] = ox;<a name="line.16012"></a>
<span class="sourceLineNo">16013</span> }<a name="line.16013"></a>
<span class="sourceLineNo">16014</span> }<a name="line.16014"></a>
<span class="sourceLineNo">16015</span> break;<a name="line.16015"></a>
<span class="sourceLineNo">16016</span> case Dataset.ARRAYINT8:<a name="line.16016"></a>
<span class="sourceLineNo">16017</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.16017"></a>
<span class="sourceLineNo">16018</span> if (is == 1) {<a name="line.16018"></a>
<span class="sourceLineNo">16019</span> {<a name="line.16019"></a>
<span class="sourceLineNo">16020</span> while (it.hasNext()) {<a name="line.16020"></a>
<span class="sourceLineNo">16021</span> final long iax = it.aLong;<a name="line.16021"></a>
<span class="sourceLineNo">16022</span> final long ibx = it.bLong;<a name="line.16022"></a>
<span class="sourceLineNo">16023</span> byte ox;<a name="line.16023"></a>
<span class="sourceLineNo">16024</span> ox = (byte) (iax ^ ibx);<a name="line.16024"></a>
<span class="sourceLineNo">16025</span> oai8data[it.oIndex] = ox;<a name="line.16025"></a>
<span class="sourceLineNo">16026</span> }<a name="line.16026"></a>
<span class="sourceLineNo">16027</span> }<a name="line.16027"></a>
<span class="sourceLineNo">16028</span> } else if (as &lt; bs) {<a name="line.16028"></a>
<span class="sourceLineNo">16029</span> {<a name="line.16029"></a>
<span class="sourceLineNo">16030</span> while (it.hasNext()) {<a name="line.16030"></a>
<span class="sourceLineNo">16031</span> final long iax = it.aLong;<a name="line.16031"></a>
<span class="sourceLineNo">16032</span> long ibx = it.bLong;<a name="line.16032"></a>
<span class="sourceLineNo">16033</span> byte ox;<a name="line.16033"></a>
<span class="sourceLineNo">16034</span> ox = (byte) (iax ^ ibx);<a name="line.16034"></a>
<span class="sourceLineNo">16035</span> oai8data[it.oIndex] = ox;<a name="line.16035"></a>
<span class="sourceLineNo">16036</span> for (int j = 1; j &lt; is; j++) {<a name="line.16036"></a>
<span class="sourceLineNo">16037</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.16037"></a>
<span class="sourceLineNo">16038</span> ox = (byte) (iax ^ ibx);<a name="line.16038"></a>
<span class="sourceLineNo">16039</span> oai8data[it.oIndex + j] = ox;<a name="line.16039"></a>
<span class="sourceLineNo">16040</span> }<a name="line.16040"></a>
<span class="sourceLineNo">16041</span> }<a name="line.16041"></a>
<span class="sourceLineNo">16042</span> }<a name="line.16042"></a>
<span class="sourceLineNo">16043</span> } else if (as &gt; bs) {<a name="line.16043"></a>
<span class="sourceLineNo">16044</span> {<a name="line.16044"></a>
<span class="sourceLineNo">16045</span> while (it.hasNext()) {<a name="line.16045"></a>
<span class="sourceLineNo">16046</span> long iax = it.aLong;<a name="line.16046"></a>
<span class="sourceLineNo">16047</span> final long ibx = it.bLong;<a name="line.16047"></a>
<span class="sourceLineNo">16048</span> byte ox;<a name="line.16048"></a>
<span class="sourceLineNo">16049</span> ox = (byte) (iax ^ ibx);<a name="line.16049"></a>
<span class="sourceLineNo">16050</span> oai8data[it.oIndex] = ox;<a name="line.16050"></a>
<span class="sourceLineNo">16051</span> for (int j = 1; j &lt; is; j++) {<a name="line.16051"></a>
<span class="sourceLineNo">16052</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.16052"></a>
<span class="sourceLineNo">16053</span> ox = (byte) (iax ^ ibx);<a name="line.16053"></a>
<span class="sourceLineNo">16054</span> oai8data[it.oIndex + j] = ox;<a name="line.16054"></a>
<span class="sourceLineNo">16055</span> }<a name="line.16055"></a>
<span class="sourceLineNo">16056</span> }<a name="line.16056"></a>
<span class="sourceLineNo">16057</span> }<a name="line.16057"></a>
<span class="sourceLineNo">16058</span> } else if (as == 1) {<a name="line.16058"></a>
<span class="sourceLineNo">16059</span> {<a name="line.16059"></a>
<span class="sourceLineNo">16060</span> while (it.hasNext()) {<a name="line.16060"></a>
<span class="sourceLineNo">16061</span> final long iax = it.aLong;<a name="line.16061"></a>
<span class="sourceLineNo">16062</span> final long ibx = it.bLong;<a name="line.16062"></a>
<span class="sourceLineNo">16063</span> byte ox;<a name="line.16063"></a>
<span class="sourceLineNo">16064</span> ox = (byte) (iax ^ ibx);<a name="line.16064"></a>
<span class="sourceLineNo">16065</span> for (int j = 0; j &lt; is; j++) {<a name="line.16065"></a>
<span class="sourceLineNo">16066</span> oai8data[it.oIndex + j] = ox;<a name="line.16066"></a>
<span class="sourceLineNo">16067</span> }<a name="line.16067"></a>
<span class="sourceLineNo">16068</span> }<a name="line.16068"></a>
<span class="sourceLineNo">16069</span> }<a name="line.16069"></a>
<span class="sourceLineNo">16070</span> } else {<a name="line.16070"></a>
<span class="sourceLineNo">16071</span> {<a name="line.16071"></a>
<span class="sourceLineNo">16072</span> while (it.hasNext()) {<a name="line.16072"></a>
<span class="sourceLineNo">16073</span> long iax = it.aLong;<a name="line.16073"></a>
<span class="sourceLineNo">16074</span> long ibx = it.bLong;<a name="line.16074"></a>
<span class="sourceLineNo">16075</span> byte ox;<a name="line.16075"></a>
<span class="sourceLineNo">16076</span> ox = (byte) (iax ^ ibx);<a name="line.16076"></a>
<span class="sourceLineNo">16077</span> oai8data[it.oIndex] = ox;<a name="line.16077"></a>
<span class="sourceLineNo">16078</span> for (int j = 1; j &lt; is; j++) {<a name="line.16078"></a>
<span class="sourceLineNo">16079</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.16079"></a>
<span class="sourceLineNo">16080</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.16080"></a>
<span class="sourceLineNo">16081</span> ox = (byte) (iax ^ ibx);<a name="line.16081"></a>
<span class="sourceLineNo">16082</span> oai8data[it.oIndex + j] = ox;<a name="line.16082"></a>
<span class="sourceLineNo">16083</span> }<a name="line.16083"></a>
<span class="sourceLineNo">16084</span> }<a name="line.16084"></a>
<span class="sourceLineNo">16085</span> }<a name="line.16085"></a>
<span class="sourceLineNo">16086</span> }<a name="line.16086"></a>
<span class="sourceLineNo">16087</span> break;<a name="line.16087"></a>
<span class="sourceLineNo">16088</span> case Dataset.ARRAYINT16:<a name="line.16088"></a>
<span class="sourceLineNo">16089</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.16089"></a>
<span class="sourceLineNo">16090</span> if (is == 1) {<a name="line.16090"></a>
<span class="sourceLineNo">16091</span> {<a name="line.16091"></a>
<span class="sourceLineNo">16092</span> while (it.hasNext()) {<a name="line.16092"></a>
<span class="sourceLineNo">16093</span> final long iax = it.aLong;<a name="line.16093"></a>
<span class="sourceLineNo">16094</span> final long ibx = it.bLong;<a name="line.16094"></a>
<span class="sourceLineNo">16095</span> short ox;<a name="line.16095"></a>
<span class="sourceLineNo">16096</span> ox = (short) (iax ^ ibx);<a name="line.16096"></a>
<span class="sourceLineNo">16097</span> oai16data[it.oIndex] = ox;<a name="line.16097"></a>
<span class="sourceLineNo">16098</span> }<a name="line.16098"></a>
<span class="sourceLineNo">16099</span> }<a name="line.16099"></a>
<span class="sourceLineNo">16100</span> } else if (as &lt; bs) {<a name="line.16100"></a>
<span class="sourceLineNo">16101</span> {<a name="line.16101"></a>
<span class="sourceLineNo">16102</span> while (it.hasNext()) {<a name="line.16102"></a>
<span class="sourceLineNo">16103</span> final long iax = it.aLong;<a name="line.16103"></a>
<span class="sourceLineNo">16104</span> long ibx = it.bLong;<a name="line.16104"></a>
<span class="sourceLineNo">16105</span> short ox;<a name="line.16105"></a>
<span class="sourceLineNo">16106</span> ox = (short) (iax ^ ibx);<a name="line.16106"></a>
<span class="sourceLineNo">16107</span> oai16data[it.oIndex] = ox;<a name="line.16107"></a>
<span class="sourceLineNo">16108</span> for (int j = 1; j &lt; is; j++) {<a name="line.16108"></a>
<span class="sourceLineNo">16109</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.16109"></a>
<span class="sourceLineNo">16110</span> ox = (short) (iax ^ ibx);<a name="line.16110"></a>
<span class="sourceLineNo">16111</span> oai16data[it.oIndex + j] = ox;<a name="line.16111"></a>
<span class="sourceLineNo">16112</span> }<a name="line.16112"></a>
<span class="sourceLineNo">16113</span> }<a name="line.16113"></a>
<span class="sourceLineNo">16114</span> }<a name="line.16114"></a>
<span class="sourceLineNo">16115</span> } else if (as &gt; bs) {<a name="line.16115"></a>
<span class="sourceLineNo">16116</span> {<a name="line.16116"></a>
<span class="sourceLineNo">16117</span> while (it.hasNext()) {<a name="line.16117"></a>
<span class="sourceLineNo">16118</span> long iax = it.aLong;<a name="line.16118"></a>
<span class="sourceLineNo">16119</span> final long ibx = it.bLong;<a name="line.16119"></a>
<span class="sourceLineNo">16120</span> short ox;<a name="line.16120"></a>
<span class="sourceLineNo">16121</span> ox = (short) (iax ^ ibx);<a name="line.16121"></a>
<span class="sourceLineNo">16122</span> oai16data[it.oIndex] = ox;<a name="line.16122"></a>
<span class="sourceLineNo">16123</span> for (int j = 1; j &lt; is; j++) {<a name="line.16123"></a>
<span class="sourceLineNo">16124</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.16124"></a>
<span class="sourceLineNo">16125</span> ox = (short) (iax ^ ibx);<a name="line.16125"></a>
<span class="sourceLineNo">16126</span> oai16data[it.oIndex + j] = ox;<a name="line.16126"></a>
<span class="sourceLineNo">16127</span> }<a name="line.16127"></a>
<span class="sourceLineNo">16128</span> }<a name="line.16128"></a>
<span class="sourceLineNo">16129</span> }<a name="line.16129"></a>
<span class="sourceLineNo">16130</span> } else if (as == 1) {<a name="line.16130"></a>
<span class="sourceLineNo">16131</span> {<a name="line.16131"></a>
<span class="sourceLineNo">16132</span> while (it.hasNext()) {<a name="line.16132"></a>
<span class="sourceLineNo">16133</span> final long iax = it.aLong;<a name="line.16133"></a>
<span class="sourceLineNo">16134</span> final long ibx = it.bLong;<a name="line.16134"></a>
<span class="sourceLineNo">16135</span> short ox;<a name="line.16135"></a>
<span class="sourceLineNo">16136</span> ox = (short) (iax ^ ibx);<a name="line.16136"></a>
<span class="sourceLineNo">16137</span> for (int j = 0; j &lt; is; j++) {<a name="line.16137"></a>
<span class="sourceLineNo">16138</span> oai16data[it.oIndex + j] = ox;<a name="line.16138"></a>
<span class="sourceLineNo">16139</span> }<a name="line.16139"></a>
<span class="sourceLineNo">16140</span> }<a name="line.16140"></a>
<span class="sourceLineNo">16141</span> }<a name="line.16141"></a>
<span class="sourceLineNo">16142</span> } else {<a name="line.16142"></a>
<span class="sourceLineNo">16143</span> {<a name="line.16143"></a>
<span class="sourceLineNo">16144</span> while (it.hasNext()) {<a name="line.16144"></a>
<span class="sourceLineNo">16145</span> long iax = it.aLong;<a name="line.16145"></a>
<span class="sourceLineNo">16146</span> long ibx = it.bLong;<a name="line.16146"></a>
<span class="sourceLineNo">16147</span> short ox;<a name="line.16147"></a>
<span class="sourceLineNo">16148</span> ox = (short) (iax ^ ibx);<a name="line.16148"></a>
<span class="sourceLineNo">16149</span> oai16data[it.oIndex] = ox;<a name="line.16149"></a>
<span class="sourceLineNo">16150</span> for (int j = 1; j &lt; is; j++) {<a name="line.16150"></a>
<span class="sourceLineNo">16151</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.16151"></a>
<span class="sourceLineNo">16152</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.16152"></a>
<span class="sourceLineNo">16153</span> ox = (short) (iax ^ ibx);<a name="line.16153"></a>
<span class="sourceLineNo">16154</span> oai16data[it.oIndex + j] = ox;<a name="line.16154"></a>
<span class="sourceLineNo">16155</span> }<a name="line.16155"></a>
<span class="sourceLineNo">16156</span> }<a name="line.16156"></a>
<span class="sourceLineNo">16157</span> }<a name="line.16157"></a>
<span class="sourceLineNo">16158</span> }<a name="line.16158"></a>
<span class="sourceLineNo">16159</span> break;<a name="line.16159"></a>
<span class="sourceLineNo">16160</span> case Dataset.ARRAYINT64:<a name="line.16160"></a>
<span class="sourceLineNo">16161</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.16161"></a>
<span class="sourceLineNo">16162</span> if (is == 1) {<a name="line.16162"></a>
<span class="sourceLineNo">16163</span> {<a name="line.16163"></a>
<span class="sourceLineNo">16164</span> while (it.hasNext()) {<a name="line.16164"></a>
<span class="sourceLineNo">16165</span> final long iax = it.aLong;<a name="line.16165"></a>
<span class="sourceLineNo">16166</span> final long ibx = it.bLong;<a name="line.16166"></a>
<span class="sourceLineNo">16167</span> long ox;<a name="line.16167"></a>
<span class="sourceLineNo">16168</span> ox = (iax ^ ibx);<a name="line.16168"></a>
<span class="sourceLineNo">16169</span> oai64data[it.oIndex] = ox;<a name="line.16169"></a>
<span class="sourceLineNo">16170</span> }<a name="line.16170"></a>
<span class="sourceLineNo">16171</span> }<a name="line.16171"></a>
<span class="sourceLineNo">16172</span> } else if (as &lt; bs) {<a name="line.16172"></a>
<span class="sourceLineNo">16173</span> {<a name="line.16173"></a>
<span class="sourceLineNo">16174</span> while (it.hasNext()) {<a name="line.16174"></a>
<span class="sourceLineNo">16175</span> final long iax = it.aLong;<a name="line.16175"></a>
<span class="sourceLineNo">16176</span> long ibx = it.bLong;<a name="line.16176"></a>
<span class="sourceLineNo">16177</span> long ox;<a name="line.16177"></a>
<span class="sourceLineNo">16178</span> ox = (iax ^ ibx);<a name="line.16178"></a>
<span class="sourceLineNo">16179</span> oai64data[it.oIndex] = ox;<a name="line.16179"></a>
<span class="sourceLineNo">16180</span> for (int j = 1; j &lt; is; j++) {<a name="line.16180"></a>
<span class="sourceLineNo">16181</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.16181"></a>
<span class="sourceLineNo">16182</span> ox = (iax ^ ibx);<a name="line.16182"></a>
<span class="sourceLineNo">16183</span> oai64data[it.oIndex + j] = ox;<a name="line.16183"></a>
<span class="sourceLineNo">16184</span> }<a name="line.16184"></a>
<span class="sourceLineNo">16185</span> }<a name="line.16185"></a>
<span class="sourceLineNo">16186</span> }<a name="line.16186"></a>
<span class="sourceLineNo">16187</span> } else if (as &gt; bs) {<a name="line.16187"></a>
<span class="sourceLineNo">16188</span> {<a name="line.16188"></a>
<span class="sourceLineNo">16189</span> while (it.hasNext()) {<a name="line.16189"></a>
<span class="sourceLineNo">16190</span> long iax = it.aLong;<a name="line.16190"></a>
<span class="sourceLineNo">16191</span> final long ibx = it.bLong;<a name="line.16191"></a>
<span class="sourceLineNo">16192</span> long ox;<a name="line.16192"></a>
<span class="sourceLineNo">16193</span> ox = (iax ^ ibx);<a name="line.16193"></a>
<span class="sourceLineNo">16194</span> oai64data[it.oIndex] = ox;<a name="line.16194"></a>
<span class="sourceLineNo">16195</span> for (int j = 1; j &lt; is; j++) {<a name="line.16195"></a>
<span class="sourceLineNo">16196</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.16196"></a>
<span class="sourceLineNo">16197</span> ox = (iax ^ ibx);<a name="line.16197"></a>
<span class="sourceLineNo">16198</span> oai64data[it.oIndex + j] = ox;<a name="line.16198"></a>
<span class="sourceLineNo">16199</span> }<a name="line.16199"></a>
<span class="sourceLineNo">16200</span> }<a name="line.16200"></a>
<span class="sourceLineNo">16201</span> }<a name="line.16201"></a>
<span class="sourceLineNo">16202</span> } else if (as == 1) {<a name="line.16202"></a>
<span class="sourceLineNo">16203</span> {<a name="line.16203"></a>
<span class="sourceLineNo">16204</span> while (it.hasNext()) {<a name="line.16204"></a>
<span class="sourceLineNo">16205</span> final long iax = it.aLong;<a name="line.16205"></a>
<span class="sourceLineNo">16206</span> final long ibx = it.bLong;<a name="line.16206"></a>
<span class="sourceLineNo">16207</span> long ox;<a name="line.16207"></a>
<span class="sourceLineNo">16208</span> ox = (iax ^ ibx);<a name="line.16208"></a>
<span class="sourceLineNo">16209</span> for (int j = 0; j &lt; is; j++) {<a name="line.16209"></a>
<span class="sourceLineNo">16210</span> oai64data[it.oIndex + j] = ox;<a name="line.16210"></a>
<span class="sourceLineNo">16211</span> }<a name="line.16211"></a>
<span class="sourceLineNo">16212</span> }<a name="line.16212"></a>
<span class="sourceLineNo">16213</span> }<a name="line.16213"></a>
<span class="sourceLineNo">16214</span> } else {<a name="line.16214"></a>
<span class="sourceLineNo">16215</span> {<a name="line.16215"></a>
<span class="sourceLineNo">16216</span> while (it.hasNext()) {<a name="line.16216"></a>
<span class="sourceLineNo">16217</span> long iax = it.aLong;<a name="line.16217"></a>
<span class="sourceLineNo">16218</span> long ibx = it.bLong;<a name="line.16218"></a>
<span class="sourceLineNo">16219</span> long ox;<a name="line.16219"></a>
<span class="sourceLineNo">16220</span> ox = (iax ^ ibx);<a name="line.16220"></a>
<span class="sourceLineNo">16221</span> oai64data[it.oIndex] = ox;<a name="line.16221"></a>
<span class="sourceLineNo">16222</span> for (int j = 1; j &lt; is; j++) {<a name="line.16222"></a>
<span class="sourceLineNo">16223</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.16223"></a>
<span class="sourceLineNo">16224</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.16224"></a>
<span class="sourceLineNo">16225</span> ox = (iax ^ ibx);<a name="line.16225"></a>
<span class="sourceLineNo">16226</span> oai64data[it.oIndex + j] = ox;<a name="line.16226"></a>
<span class="sourceLineNo">16227</span> }<a name="line.16227"></a>
<span class="sourceLineNo">16228</span> }<a name="line.16228"></a>
<span class="sourceLineNo">16229</span> }<a name="line.16229"></a>
<span class="sourceLineNo">16230</span> }<a name="line.16230"></a>
<span class="sourceLineNo">16231</span> break;<a name="line.16231"></a>
<span class="sourceLineNo">16232</span> case Dataset.ARRAYINT32:<a name="line.16232"></a>
<span class="sourceLineNo">16233</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.16233"></a>
<span class="sourceLineNo">16234</span> if (is == 1) {<a name="line.16234"></a>
<span class="sourceLineNo">16235</span> {<a name="line.16235"></a>
<span class="sourceLineNo">16236</span> while (it.hasNext()) {<a name="line.16236"></a>
<span class="sourceLineNo">16237</span> final long iax = it.aLong;<a name="line.16237"></a>
<span class="sourceLineNo">16238</span> final long ibx = it.bLong;<a name="line.16238"></a>
<span class="sourceLineNo">16239</span> int ox;<a name="line.16239"></a>
<span class="sourceLineNo">16240</span> ox = (int) (iax ^ ibx);<a name="line.16240"></a>
<span class="sourceLineNo">16241</span> oai32data[it.oIndex] = ox;<a name="line.16241"></a>
<span class="sourceLineNo">16242</span> }<a name="line.16242"></a>
<span class="sourceLineNo">16243</span> }<a name="line.16243"></a>
<span class="sourceLineNo">16244</span> } else if (as &lt; bs) {<a name="line.16244"></a>
<span class="sourceLineNo">16245</span> {<a name="line.16245"></a>
<span class="sourceLineNo">16246</span> while (it.hasNext()) {<a name="line.16246"></a>
<span class="sourceLineNo">16247</span> final long iax = it.aLong;<a name="line.16247"></a>
<span class="sourceLineNo">16248</span> long ibx = it.bLong;<a name="line.16248"></a>
<span class="sourceLineNo">16249</span> int ox;<a name="line.16249"></a>
<span class="sourceLineNo">16250</span> ox = (int) (iax ^ ibx);<a name="line.16250"></a>
<span class="sourceLineNo">16251</span> oai32data[it.oIndex] = ox;<a name="line.16251"></a>
<span class="sourceLineNo">16252</span> for (int j = 1; j &lt; is; j++) {<a name="line.16252"></a>
<span class="sourceLineNo">16253</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.16253"></a>
<span class="sourceLineNo">16254</span> ox = (int) (iax ^ ibx);<a name="line.16254"></a>
<span class="sourceLineNo">16255</span> oai32data[it.oIndex + j] = ox;<a name="line.16255"></a>
<span class="sourceLineNo">16256</span> }<a name="line.16256"></a>
<span class="sourceLineNo">16257</span> }<a name="line.16257"></a>
<span class="sourceLineNo">16258</span> }<a name="line.16258"></a>
<span class="sourceLineNo">16259</span> } else if (as &gt; bs) {<a name="line.16259"></a>
<span class="sourceLineNo">16260</span> {<a name="line.16260"></a>
<span class="sourceLineNo">16261</span> while (it.hasNext()) {<a name="line.16261"></a>
<span class="sourceLineNo">16262</span> long iax = it.aLong;<a name="line.16262"></a>
<span class="sourceLineNo">16263</span> final long ibx = it.bLong;<a name="line.16263"></a>
<span class="sourceLineNo">16264</span> int ox;<a name="line.16264"></a>
<span class="sourceLineNo">16265</span> ox = (int) (iax ^ ibx);<a name="line.16265"></a>
<span class="sourceLineNo">16266</span> oai32data[it.oIndex] = ox;<a name="line.16266"></a>
<span class="sourceLineNo">16267</span> for (int j = 1; j &lt; is; j++) {<a name="line.16267"></a>
<span class="sourceLineNo">16268</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.16268"></a>
<span class="sourceLineNo">16269</span> ox = (int) (iax ^ ibx);<a name="line.16269"></a>
<span class="sourceLineNo">16270</span> oai32data[it.oIndex + j] = ox;<a name="line.16270"></a>
<span class="sourceLineNo">16271</span> }<a name="line.16271"></a>
<span class="sourceLineNo">16272</span> }<a name="line.16272"></a>
<span class="sourceLineNo">16273</span> }<a name="line.16273"></a>
<span class="sourceLineNo">16274</span> } else if (as == 1) {<a name="line.16274"></a>
<span class="sourceLineNo">16275</span> {<a name="line.16275"></a>
<span class="sourceLineNo">16276</span> while (it.hasNext()) {<a name="line.16276"></a>
<span class="sourceLineNo">16277</span> final long iax = it.aLong;<a name="line.16277"></a>
<span class="sourceLineNo">16278</span> final long ibx = it.bLong;<a name="line.16278"></a>
<span class="sourceLineNo">16279</span> int ox;<a name="line.16279"></a>
<span class="sourceLineNo">16280</span> ox = (int) (iax ^ ibx);<a name="line.16280"></a>
<span class="sourceLineNo">16281</span> for (int j = 0; j &lt; is; j++) {<a name="line.16281"></a>
<span class="sourceLineNo">16282</span> oai32data[it.oIndex + j] = ox;<a name="line.16282"></a>
<span class="sourceLineNo">16283</span> }<a name="line.16283"></a>
<span class="sourceLineNo">16284</span> }<a name="line.16284"></a>
<span class="sourceLineNo">16285</span> }<a name="line.16285"></a>
<span class="sourceLineNo">16286</span> } else {<a name="line.16286"></a>
<span class="sourceLineNo">16287</span> {<a name="line.16287"></a>
<span class="sourceLineNo">16288</span> while (it.hasNext()) {<a name="line.16288"></a>
<span class="sourceLineNo">16289</span> long iax = it.aLong;<a name="line.16289"></a>
<span class="sourceLineNo">16290</span> long ibx = it.bLong;<a name="line.16290"></a>
<span class="sourceLineNo">16291</span> int ox;<a name="line.16291"></a>
<span class="sourceLineNo">16292</span> ox = (int) (iax ^ ibx);<a name="line.16292"></a>
<span class="sourceLineNo">16293</span> oai32data[it.oIndex] = ox;<a name="line.16293"></a>
<span class="sourceLineNo">16294</span> for (int j = 1; j &lt; is; j++) {<a name="line.16294"></a>
<span class="sourceLineNo">16295</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.16295"></a>
<span class="sourceLineNo">16296</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.16296"></a>
<span class="sourceLineNo">16297</span> ox = (int) (iax ^ ibx);<a name="line.16297"></a>
<span class="sourceLineNo">16298</span> oai32data[it.oIndex + j] = ox;<a name="line.16298"></a>
<span class="sourceLineNo">16299</span> }<a name="line.16299"></a>
<span class="sourceLineNo">16300</span> }<a name="line.16300"></a>
<span class="sourceLineNo">16301</span> }<a name="line.16301"></a>
<span class="sourceLineNo">16302</span> }<a name="line.16302"></a>
<span class="sourceLineNo">16303</span> break;<a name="line.16303"></a>
<span class="sourceLineNo">16304</span> default:<a name="line.16304"></a>
<span class="sourceLineNo">16305</span> throw new IllegalArgumentException("bitwiseXor supports integer, compound integer datasets only");<a name="line.16305"></a>
<span class="sourceLineNo">16306</span> }<a name="line.16306"></a>
<span class="sourceLineNo">16307</span><a name="line.16307"></a>
<span class="sourceLineNo">16308</span> addBinaryOperatorName(da, db, result, "^");<a name="line.16308"></a>
<span class="sourceLineNo">16309</span> return result;<a name="line.16309"></a>
<span class="sourceLineNo">16310</span> }<a name="line.16310"></a>
<span class="sourceLineNo">16311</span><a name="line.16311"></a>
<span class="sourceLineNo">16312</span> /**<a name="line.16312"></a>
<span class="sourceLineNo">16313</span> * leftShift operator<a name="line.16313"></a>
<span class="sourceLineNo">16314</span> * @param a<a name="line.16314"></a>
<span class="sourceLineNo">16315</span> * @param b<a name="line.16315"></a>
<span class="sourceLineNo">16316</span> * @return {@code a &lt;&lt; b}, bitwise left shift of a by b<a name="line.16316"></a>
<span class="sourceLineNo">16317</span> */<a name="line.16317"></a>
<span class="sourceLineNo">16318</span> public static Dataset leftShift(final Object a, final Object b) {<a name="line.16318"></a>
<span class="sourceLineNo">16319</span> return leftShift(a, b, null);<a name="line.16319"></a>
<span class="sourceLineNo">16320</span> }<a name="line.16320"></a>
<span class="sourceLineNo">16321</span><a name="line.16321"></a>
<span class="sourceLineNo">16322</span> /**<a name="line.16322"></a>
<span class="sourceLineNo">16323</span> * leftShift operator<a name="line.16323"></a>
<span class="sourceLineNo">16324</span> * @param a<a name="line.16324"></a>
<span class="sourceLineNo">16325</span> * @param b<a name="line.16325"></a>
<span class="sourceLineNo">16326</span> * @param o output can be null - in which case, a new dataset is created<a name="line.16326"></a>
<span class="sourceLineNo">16327</span> * @return {@code a &lt;&lt; b}, bitwise left shift of a by b<a name="line.16327"></a>
<span class="sourceLineNo">16328</span> */<a name="line.16328"></a>
<span class="sourceLineNo">16329</span> public static Dataset leftShift(final Object a, final Object b, final Dataset o) {<a name="line.16329"></a>
<span class="sourceLineNo">16330</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.16330"></a>
<span class="sourceLineNo">16331</span> Dataset db = b instanceof Dataset ? (Dataset) b : DatasetFactory.createFromObject(b);<a name="line.16331"></a>
<span class="sourceLineNo">16332</span> BroadcastIterator it = BroadcastIterator.createIterator(da, db, o, true);<a name="line.16332"></a>
<span class="sourceLineNo">16333</span> it.setOutputDouble(false);<a name="line.16333"></a>
<span class="sourceLineNo">16334</span> final Dataset result = it.getOutput();<a name="line.16334"></a>
<span class="sourceLineNo">16335</span> if (!result.isComplex()) {<a name="line.16335"></a>
<span class="sourceLineNo">16336</span> boolean change = false;<a name="line.16336"></a>
<span class="sourceLineNo">16337</span> if (da.isComplex()) {<a name="line.16337"></a>
<span class="sourceLineNo">16338</span> da = da.getRealView();<a name="line.16338"></a>
<span class="sourceLineNo">16339</span> change = true;<a name="line.16339"></a>
<span class="sourceLineNo">16340</span> }<a name="line.16340"></a>
<span class="sourceLineNo">16341</span> if (db.isComplex()) {<a name="line.16341"></a>
<span class="sourceLineNo">16342</span> db = db.getRealView();<a name="line.16342"></a>
<span class="sourceLineNo">16343</span> change = true;<a name="line.16343"></a>
<span class="sourceLineNo">16344</span> }<a name="line.16344"></a>
<span class="sourceLineNo">16345</span> if (change) {<a name="line.16345"></a>
<span class="sourceLineNo">16346</span> it = BroadcastIterator.createIterator(da, db, result, true);<a name="line.16346"></a>
<span class="sourceLineNo">16347</span> it.setOutputDouble(false);<a name="line.16347"></a>
<span class="sourceLineNo">16348</span> }<a name="line.16348"></a>
<span class="sourceLineNo">16349</span> }<a name="line.16349"></a>
<span class="sourceLineNo">16350</span> final int is = result.getElementsPerItem();<a name="line.16350"></a>
<span class="sourceLineNo">16351</span> final int as = da.getElementsPerItem();<a name="line.16351"></a>
<span class="sourceLineNo">16352</span> final int bs = db.getElementsPerItem();<a name="line.16352"></a>
<span class="sourceLineNo">16353</span> final int dt = result.getDType();<a name="line.16353"></a>
<span class="sourceLineNo">16354</span><a name="line.16354"></a>
<span class="sourceLineNo">16355</span> switch(dt) {<a name="line.16355"></a>
<span class="sourceLineNo">16356</span> case Dataset.INT8:<a name="line.16356"></a>
<span class="sourceLineNo">16357</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.16357"></a>
<span class="sourceLineNo">16358</span> {<a name="line.16358"></a>
<span class="sourceLineNo">16359</span> while (it.hasNext()) {<a name="line.16359"></a>
<span class="sourceLineNo">16360</span> final long iax = it.aLong;<a name="line.16360"></a>
<span class="sourceLineNo">16361</span> final long ibx = it.bLong;<a name="line.16361"></a>
<span class="sourceLineNo">16362</span> byte ox;<a name="line.16362"></a>
<span class="sourceLineNo">16363</span> ox = (byte) (iax &lt;&lt; ibx);<a name="line.16363"></a>
<span class="sourceLineNo">16364</span> oi8data[it.oIndex] = ox;<a name="line.16364"></a>
<span class="sourceLineNo">16365</span> }<a name="line.16365"></a>
<span class="sourceLineNo">16366</span> }<a name="line.16366"></a>
<span class="sourceLineNo">16367</span> break;<a name="line.16367"></a>
<span class="sourceLineNo">16368</span> case Dataset.INT16:<a name="line.16368"></a>
<span class="sourceLineNo">16369</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.16369"></a>
<span class="sourceLineNo">16370</span> {<a name="line.16370"></a>
<span class="sourceLineNo">16371</span> while (it.hasNext()) {<a name="line.16371"></a>
<span class="sourceLineNo">16372</span> final long iax = it.aLong;<a name="line.16372"></a>
<span class="sourceLineNo">16373</span> final long ibx = it.bLong;<a name="line.16373"></a>
<span class="sourceLineNo">16374</span> short ox;<a name="line.16374"></a>
<span class="sourceLineNo">16375</span> ox = (short) (iax &lt;&lt; ibx);<a name="line.16375"></a>
<span class="sourceLineNo">16376</span> oi16data[it.oIndex] = ox;<a name="line.16376"></a>
<span class="sourceLineNo">16377</span> }<a name="line.16377"></a>
<span class="sourceLineNo">16378</span> }<a name="line.16378"></a>
<span class="sourceLineNo">16379</span> break;<a name="line.16379"></a>
<span class="sourceLineNo">16380</span> case Dataset.INT64:<a name="line.16380"></a>
<span class="sourceLineNo">16381</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.16381"></a>
<span class="sourceLineNo">16382</span> {<a name="line.16382"></a>
<span class="sourceLineNo">16383</span> while (it.hasNext()) {<a name="line.16383"></a>
<span class="sourceLineNo">16384</span> final long iax = it.aLong;<a name="line.16384"></a>
<span class="sourceLineNo">16385</span> final long ibx = it.bLong;<a name="line.16385"></a>
<span class="sourceLineNo">16386</span> long ox;<a name="line.16386"></a>
<span class="sourceLineNo">16387</span> ox = (iax &lt;&lt; ibx);<a name="line.16387"></a>
<span class="sourceLineNo">16388</span> oi64data[it.oIndex] = ox;<a name="line.16388"></a>
<span class="sourceLineNo">16389</span> }<a name="line.16389"></a>
<span class="sourceLineNo">16390</span> }<a name="line.16390"></a>
<span class="sourceLineNo">16391</span> break;<a name="line.16391"></a>
<span class="sourceLineNo">16392</span> case Dataset.INT32:<a name="line.16392"></a>
<span class="sourceLineNo">16393</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.16393"></a>
<span class="sourceLineNo">16394</span> {<a name="line.16394"></a>
<span class="sourceLineNo">16395</span> while (it.hasNext()) {<a name="line.16395"></a>
<span class="sourceLineNo">16396</span> final long iax = it.aLong;<a name="line.16396"></a>
<span class="sourceLineNo">16397</span> final long ibx = it.bLong;<a name="line.16397"></a>
<span class="sourceLineNo">16398</span> int ox;<a name="line.16398"></a>
<span class="sourceLineNo">16399</span> ox = (int) (iax &lt;&lt; ibx);<a name="line.16399"></a>
<span class="sourceLineNo">16400</span> oi32data[it.oIndex] = ox;<a name="line.16400"></a>
<span class="sourceLineNo">16401</span> }<a name="line.16401"></a>
<span class="sourceLineNo">16402</span> }<a name="line.16402"></a>
<span class="sourceLineNo">16403</span> break;<a name="line.16403"></a>
<span class="sourceLineNo">16404</span> case Dataset.ARRAYINT8:<a name="line.16404"></a>
<span class="sourceLineNo">16405</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.16405"></a>
<span class="sourceLineNo">16406</span> if (is == 1) {<a name="line.16406"></a>
<span class="sourceLineNo">16407</span> {<a name="line.16407"></a>
<span class="sourceLineNo">16408</span> while (it.hasNext()) {<a name="line.16408"></a>
<span class="sourceLineNo">16409</span> final long iax = it.aLong;<a name="line.16409"></a>
<span class="sourceLineNo">16410</span> final long ibx = it.bLong;<a name="line.16410"></a>
<span class="sourceLineNo">16411</span> byte ox;<a name="line.16411"></a>
<span class="sourceLineNo">16412</span> ox = (byte) (iax &lt;&lt; ibx);<a name="line.16412"></a>
<span class="sourceLineNo">16413</span> oai8data[it.oIndex] = ox;<a name="line.16413"></a>
<span class="sourceLineNo">16414</span> }<a name="line.16414"></a>
<span class="sourceLineNo">16415</span> }<a name="line.16415"></a>
<span class="sourceLineNo">16416</span> } else if (as &lt; bs) {<a name="line.16416"></a>
<span class="sourceLineNo">16417</span> {<a name="line.16417"></a>
<span class="sourceLineNo">16418</span> while (it.hasNext()) {<a name="line.16418"></a>
<span class="sourceLineNo">16419</span> final long iax = it.aLong;<a name="line.16419"></a>
<span class="sourceLineNo">16420</span> long ibx = it.bLong;<a name="line.16420"></a>
<span class="sourceLineNo">16421</span> byte ox;<a name="line.16421"></a>
<span class="sourceLineNo">16422</span> ox = (byte) (iax &lt;&lt; ibx);<a name="line.16422"></a>
<span class="sourceLineNo">16423</span> oai8data[it.oIndex] = ox;<a name="line.16423"></a>
<span class="sourceLineNo">16424</span> for (int j = 1; j &lt; is; j++) {<a name="line.16424"></a>
<span class="sourceLineNo">16425</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.16425"></a>
<span class="sourceLineNo">16426</span> ox = (byte) (iax &lt;&lt; ibx);<a name="line.16426"></a>
<span class="sourceLineNo">16427</span> oai8data[it.oIndex + j] = ox;<a name="line.16427"></a>
<span class="sourceLineNo">16428</span> }<a name="line.16428"></a>
<span class="sourceLineNo">16429</span> }<a name="line.16429"></a>
<span class="sourceLineNo">16430</span> }<a name="line.16430"></a>
<span class="sourceLineNo">16431</span> } else if (as &gt; bs) {<a name="line.16431"></a>
<span class="sourceLineNo">16432</span> {<a name="line.16432"></a>
<span class="sourceLineNo">16433</span> while (it.hasNext()) {<a name="line.16433"></a>
<span class="sourceLineNo">16434</span> long iax = it.aLong;<a name="line.16434"></a>
<span class="sourceLineNo">16435</span> final long ibx = it.bLong;<a name="line.16435"></a>
<span class="sourceLineNo">16436</span> byte ox;<a name="line.16436"></a>
<span class="sourceLineNo">16437</span> ox = (byte) (iax &lt;&lt; ibx);<a name="line.16437"></a>
<span class="sourceLineNo">16438</span> oai8data[it.oIndex] = ox;<a name="line.16438"></a>
<span class="sourceLineNo">16439</span> for (int j = 1; j &lt; is; j++) {<a name="line.16439"></a>
<span class="sourceLineNo">16440</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.16440"></a>
<span class="sourceLineNo">16441</span> ox = (byte) (iax &lt;&lt; ibx);<a name="line.16441"></a>
<span class="sourceLineNo">16442</span> oai8data[it.oIndex + j] = ox;<a name="line.16442"></a>
<span class="sourceLineNo">16443</span> }<a name="line.16443"></a>
<span class="sourceLineNo">16444</span> }<a name="line.16444"></a>
<span class="sourceLineNo">16445</span> }<a name="line.16445"></a>
<span class="sourceLineNo">16446</span> } else if (as == 1) {<a name="line.16446"></a>
<span class="sourceLineNo">16447</span> {<a name="line.16447"></a>
<span class="sourceLineNo">16448</span> while (it.hasNext()) {<a name="line.16448"></a>
<span class="sourceLineNo">16449</span> final long iax = it.aLong;<a name="line.16449"></a>
<span class="sourceLineNo">16450</span> final long ibx = it.bLong;<a name="line.16450"></a>
<span class="sourceLineNo">16451</span> byte ox;<a name="line.16451"></a>
<span class="sourceLineNo">16452</span> ox = (byte) (iax &lt;&lt; ibx);<a name="line.16452"></a>
<span class="sourceLineNo">16453</span> for (int j = 0; j &lt; is; j++) {<a name="line.16453"></a>
<span class="sourceLineNo">16454</span> oai8data[it.oIndex + j] = ox;<a name="line.16454"></a>
<span class="sourceLineNo">16455</span> }<a name="line.16455"></a>
<span class="sourceLineNo">16456</span> }<a name="line.16456"></a>
<span class="sourceLineNo">16457</span> }<a name="line.16457"></a>
<span class="sourceLineNo">16458</span> } else {<a name="line.16458"></a>
<span class="sourceLineNo">16459</span> {<a name="line.16459"></a>
<span class="sourceLineNo">16460</span> while (it.hasNext()) {<a name="line.16460"></a>
<span class="sourceLineNo">16461</span> long iax = it.aLong;<a name="line.16461"></a>
<span class="sourceLineNo">16462</span> long ibx = it.bLong;<a name="line.16462"></a>
<span class="sourceLineNo">16463</span> byte ox;<a name="line.16463"></a>
<span class="sourceLineNo">16464</span> ox = (byte) (iax &lt;&lt; ibx);<a name="line.16464"></a>
<span class="sourceLineNo">16465</span> oai8data[it.oIndex] = ox;<a name="line.16465"></a>
<span class="sourceLineNo">16466</span> for (int j = 1; j &lt; is; j++) {<a name="line.16466"></a>
<span class="sourceLineNo">16467</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.16467"></a>
<span class="sourceLineNo">16468</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.16468"></a>
<span class="sourceLineNo">16469</span> ox = (byte) (iax &lt;&lt; ibx);<a name="line.16469"></a>
<span class="sourceLineNo">16470</span> oai8data[it.oIndex + j] = ox;<a name="line.16470"></a>
<span class="sourceLineNo">16471</span> }<a name="line.16471"></a>
<span class="sourceLineNo">16472</span> }<a name="line.16472"></a>
<span class="sourceLineNo">16473</span> }<a name="line.16473"></a>
<span class="sourceLineNo">16474</span> }<a name="line.16474"></a>
<span class="sourceLineNo">16475</span> break;<a name="line.16475"></a>
<span class="sourceLineNo">16476</span> case Dataset.ARRAYINT16:<a name="line.16476"></a>
<span class="sourceLineNo">16477</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.16477"></a>
<span class="sourceLineNo">16478</span> if (is == 1) {<a name="line.16478"></a>
<span class="sourceLineNo">16479</span> {<a name="line.16479"></a>
<span class="sourceLineNo">16480</span> while (it.hasNext()) {<a name="line.16480"></a>
<span class="sourceLineNo">16481</span> final long iax = it.aLong;<a name="line.16481"></a>
<span class="sourceLineNo">16482</span> final long ibx = it.bLong;<a name="line.16482"></a>
<span class="sourceLineNo">16483</span> short ox;<a name="line.16483"></a>
<span class="sourceLineNo">16484</span> ox = (short) (iax &lt;&lt; ibx);<a name="line.16484"></a>
<span class="sourceLineNo">16485</span> oai16data[it.oIndex] = ox;<a name="line.16485"></a>
<span class="sourceLineNo">16486</span> }<a name="line.16486"></a>
<span class="sourceLineNo">16487</span> }<a name="line.16487"></a>
<span class="sourceLineNo">16488</span> } else if (as &lt; bs) {<a name="line.16488"></a>
<span class="sourceLineNo">16489</span> {<a name="line.16489"></a>
<span class="sourceLineNo">16490</span> while (it.hasNext()) {<a name="line.16490"></a>
<span class="sourceLineNo">16491</span> final long iax = it.aLong;<a name="line.16491"></a>
<span class="sourceLineNo">16492</span> long ibx = it.bLong;<a name="line.16492"></a>
<span class="sourceLineNo">16493</span> short ox;<a name="line.16493"></a>
<span class="sourceLineNo">16494</span> ox = (short) (iax &lt;&lt; ibx);<a name="line.16494"></a>
<span class="sourceLineNo">16495</span> oai16data[it.oIndex] = ox;<a name="line.16495"></a>
<span class="sourceLineNo">16496</span> for (int j = 1; j &lt; is; j++) {<a name="line.16496"></a>
<span class="sourceLineNo">16497</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.16497"></a>
<span class="sourceLineNo">16498</span> ox = (short) (iax &lt;&lt; ibx);<a name="line.16498"></a>
<span class="sourceLineNo">16499</span> oai16data[it.oIndex + j] = ox;<a name="line.16499"></a>
<span class="sourceLineNo">16500</span> }<a name="line.16500"></a>
<span class="sourceLineNo">16501</span> }<a name="line.16501"></a>
<span class="sourceLineNo">16502</span> }<a name="line.16502"></a>
<span class="sourceLineNo">16503</span> } else if (as &gt; bs) {<a name="line.16503"></a>
<span class="sourceLineNo">16504</span> {<a name="line.16504"></a>
<span class="sourceLineNo">16505</span> while (it.hasNext()) {<a name="line.16505"></a>
<span class="sourceLineNo">16506</span> long iax = it.aLong;<a name="line.16506"></a>
<span class="sourceLineNo">16507</span> final long ibx = it.bLong;<a name="line.16507"></a>
<span class="sourceLineNo">16508</span> short ox;<a name="line.16508"></a>
<span class="sourceLineNo">16509</span> ox = (short) (iax &lt;&lt; ibx);<a name="line.16509"></a>
<span class="sourceLineNo">16510</span> oai16data[it.oIndex] = ox;<a name="line.16510"></a>
<span class="sourceLineNo">16511</span> for (int j = 1; j &lt; is; j++) {<a name="line.16511"></a>
<span class="sourceLineNo">16512</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.16512"></a>
<span class="sourceLineNo">16513</span> ox = (short) (iax &lt;&lt; ibx);<a name="line.16513"></a>
<span class="sourceLineNo">16514</span> oai16data[it.oIndex + j] = ox;<a name="line.16514"></a>
<span class="sourceLineNo">16515</span> }<a name="line.16515"></a>
<span class="sourceLineNo">16516</span> }<a name="line.16516"></a>
<span class="sourceLineNo">16517</span> }<a name="line.16517"></a>
<span class="sourceLineNo">16518</span> } else if (as == 1) {<a name="line.16518"></a>
<span class="sourceLineNo">16519</span> {<a name="line.16519"></a>
<span class="sourceLineNo">16520</span> while (it.hasNext()) {<a name="line.16520"></a>
<span class="sourceLineNo">16521</span> final long iax = it.aLong;<a name="line.16521"></a>
<span class="sourceLineNo">16522</span> final long ibx = it.bLong;<a name="line.16522"></a>
<span class="sourceLineNo">16523</span> short ox;<a name="line.16523"></a>
<span class="sourceLineNo">16524</span> ox = (short) (iax &lt;&lt; ibx);<a name="line.16524"></a>
<span class="sourceLineNo">16525</span> for (int j = 0; j &lt; is; j++) {<a name="line.16525"></a>
<span class="sourceLineNo">16526</span> oai16data[it.oIndex + j] = ox;<a name="line.16526"></a>
<span class="sourceLineNo">16527</span> }<a name="line.16527"></a>
<span class="sourceLineNo">16528</span> }<a name="line.16528"></a>
<span class="sourceLineNo">16529</span> }<a name="line.16529"></a>
<span class="sourceLineNo">16530</span> } else {<a name="line.16530"></a>
<span class="sourceLineNo">16531</span> {<a name="line.16531"></a>
<span class="sourceLineNo">16532</span> while (it.hasNext()) {<a name="line.16532"></a>
<span class="sourceLineNo">16533</span> long iax = it.aLong;<a name="line.16533"></a>
<span class="sourceLineNo">16534</span> long ibx = it.bLong;<a name="line.16534"></a>
<span class="sourceLineNo">16535</span> short ox;<a name="line.16535"></a>
<span class="sourceLineNo">16536</span> ox = (short) (iax &lt;&lt; ibx);<a name="line.16536"></a>
<span class="sourceLineNo">16537</span> oai16data[it.oIndex] = ox;<a name="line.16537"></a>
<span class="sourceLineNo">16538</span> for (int j = 1; j &lt; is; j++) {<a name="line.16538"></a>
<span class="sourceLineNo">16539</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.16539"></a>
<span class="sourceLineNo">16540</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.16540"></a>
<span class="sourceLineNo">16541</span> ox = (short) (iax &lt;&lt; ibx);<a name="line.16541"></a>
<span class="sourceLineNo">16542</span> oai16data[it.oIndex + j] = ox;<a name="line.16542"></a>
<span class="sourceLineNo">16543</span> }<a name="line.16543"></a>
<span class="sourceLineNo">16544</span> }<a name="line.16544"></a>
<span class="sourceLineNo">16545</span> }<a name="line.16545"></a>
<span class="sourceLineNo">16546</span> }<a name="line.16546"></a>
<span class="sourceLineNo">16547</span> break;<a name="line.16547"></a>
<span class="sourceLineNo">16548</span> case Dataset.ARRAYINT64:<a name="line.16548"></a>
<span class="sourceLineNo">16549</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.16549"></a>
<span class="sourceLineNo">16550</span> if (is == 1) {<a name="line.16550"></a>
<span class="sourceLineNo">16551</span> {<a name="line.16551"></a>
<span class="sourceLineNo">16552</span> while (it.hasNext()) {<a name="line.16552"></a>
<span class="sourceLineNo">16553</span> final long iax = it.aLong;<a name="line.16553"></a>
<span class="sourceLineNo">16554</span> final long ibx = it.bLong;<a name="line.16554"></a>
<span class="sourceLineNo">16555</span> long ox;<a name="line.16555"></a>
<span class="sourceLineNo">16556</span> ox = (iax &lt;&lt; ibx);<a name="line.16556"></a>
<span class="sourceLineNo">16557</span> oai64data[it.oIndex] = ox;<a name="line.16557"></a>
<span class="sourceLineNo">16558</span> }<a name="line.16558"></a>
<span class="sourceLineNo">16559</span> }<a name="line.16559"></a>
<span class="sourceLineNo">16560</span> } else if (as &lt; bs) {<a name="line.16560"></a>
<span class="sourceLineNo">16561</span> {<a name="line.16561"></a>
<span class="sourceLineNo">16562</span> while (it.hasNext()) {<a name="line.16562"></a>
<span class="sourceLineNo">16563</span> final long iax = it.aLong;<a name="line.16563"></a>
<span class="sourceLineNo">16564</span> long ibx = it.bLong;<a name="line.16564"></a>
<span class="sourceLineNo">16565</span> long ox;<a name="line.16565"></a>
<span class="sourceLineNo">16566</span> ox = (iax &lt;&lt; ibx);<a name="line.16566"></a>
<span class="sourceLineNo">16567</span> oai64data[it.oIndex] = ox;<a name="line.16567"></a>
<span class="sourceLineNo">16568</span> for (int j = 1; j &lt; is; j++) {<a name="line.16568"></a>
<span class="sourceLineNo">16569</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.16569"></a>
<span class="sourceLineNo">16570</span> ox = (iax &lt;&lt; ibx);<a name="line.16570"></a>
<span class="sourceLineNo">16571</span> oai64data[it.oIndex + j] = ox;<a name="line.16571"></a>
<span class="sourceLineNo">16572</span> }<a name="line.16572"></a>
<span class="sourceLineNo">16573</span> }<a name="line.16573"></a>
<span class="sourceLineNo">16574</span> }<a name="line.16574"></a>
<span class="sourceLineNo">16575</span> } else if (as &gt; bs) {<a name="line.16575"></a>
<span class="sourceLineNo">16576</span> {<a name="line.16576"></a>
<span class="sourceLineNo">16577</span> while (it.hasNext()) {<a name="line.16577"></a>
<span class="sourceLineNo">16578</span> long iax = it.aLong;<a name="line.16578"></a>
<span class="sourceLineNo">16579</span> final long ibx = it.bLong;<a name="line.16579"></a>
<span class="sourceLineNo">16580</span> long ox;<a name="line.16580"></a>
<span class="sourceLineNo">16581</span> ox = (iax &lt;&lt; ibx);<a name="line.16581"></a>
<span class="sourceLineNo">16582</span> oai64data[it.oIndex] = ox;<a name="line.16582"></a>
<span class="sourceLineNo">16583</span> for (int j = 1; j &lt; is; j++) {<a name="line.16583"></a>
<span class="sourceLineNo">16584</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.16584"></a>
<span class="sourceLineNo">16585</span> ox = (iax &lt;&lt; ibx);<a name="line.16585"></a>
<span class="sourceLineNo">16586</span> oai64data[it.oIndex + j] = ox;<a name="line.16586"></a>
<span class="sourceLineNo">16587</span> }<a name="line.16587"></a>
<span class="sourceLineNo">16588</span> }<a name="line.16588"></a>
<span class="sourceLineNo">16589</span> }<a name="line.16589"></a>
<span class="sourceLineNo">16590</span> } else if (as == 1) {<a name="line.16590"></a>
<span class="sourceLineNo">16591</span> {<a name="line.16591"></a>
<span class="sourceLineNo">16592</span> while (it.hasNext()) {<a name="line.16592"></a>
<span class="sourceLineNo">16593</span> final long iax = it.aLong;<a name="line.16593"></a>
<span class="sourceLineNo">16594</span> final long ibx = it.bLong;<a name="line.16594"></a>
<span class="sourceLineNo">16595</span> long ox;<a name="line.16595"></a>
<span class="sourceLineNo">16596</span> ox = (iax &lt;&lt; ibx);<a name="line.16596"></a>
<span class="sourceLineNo">16597</span> for (int j = 0; j &lt; is; j++) {<a name="line.16597"></a>
<span class="sourceLineNo">16598</span> oai64data[it.oIndex + j] = ox;<a name="line.16598"></a>
<span class="sourceLineNo">16599</span> }<a name="line.16599"></a>
<span class="sourceLineNo">16600</span> }<a name="line.16600"></a>
<span class="sourceLineNo">16601</span> }<a name="line.16601"></a>
<span class="sourceLineNo">16602</span> } else {<a name="line.16602"></a>
<span class="sourceLineNo">16603</span> {<a name="line.16603"></a>
<span class="sourceLineNo">16604</span> while (it.hasNext()) {<a name="line.16604"></a>
<span class="sourceLineNo">16605</span> long iax = it.aLong;<a name="line.16605"></a>
<span class="sourceLineNo">16606</span> long ibx = it.bLong;<a name="line.16606"></a>
<span class="sourceLineNo">16607</span> long ox;<a name="line.16607"></a>
<span class="sourceLineNo">16608</span> ox = (iax &lt;&lt; ibx);<a name="line.16608"></a>
<span class="sourceLineNo">16609</span> oai64data[it.oIndex] = ox;<a name="line.16609"></a>
<span class="sourceLineNo">16610</span> for (int j = 1; j &lt; is; j++) {<a name="line.16610"></a>
<span class="sourceLineNo">16611</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.16611"></a>
<span class="sourceLineNo">16612</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.16612"></a>
<span class="sourceLineNo">16613</span> ox = (iax &lt;&lt; ibx);<a name="line.16613"></a>
<span class="sourceLineNo">16614</span> oai64data[it.oIndex + j] = ox;<a name="line.16614"></a>
<span class="sourceLineNo">16615</span> }<a name="line.16615"></a>
<span class="sourceLineNo">16616</span> }<a name="line.16616"></a>
<span class="sourceLineNo">16617</span> }<a name="line.16617"></a>
<span class="sourceLineNo">16618</span> }<a name="line.16618"></a>
<span class="sourceLineNo">16619</span> break;<a name="line.16619"></a>
<span class="sourceLineNo">16620</span> case Dataset.ARRAYINT32:<a name="line.16620"></a>
<span class="sourceLineNo">16621</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.16621"></a>
<span class="sourceLineNo">16622</span> if (is == 1) {<a name="line.16622"></a>
<span class="sourceLineNo">16623</span> {<a name="line.16623"></a>
<span class="sourceLineNo">16624</span> while (it.hasNext()) {<a name="line.16624"></a>
<span class="sourceLineNo">16625</span> final long iax = it.aLong;<a name="line.16625"></a>
<span class="sourceLineNo">16626</span> final long ibx = it.bLong;<a name="line.16626"></a>
<span class="sourceLineNo">16627</span> int ox;<a name="line.16627"></a>
<span class="sourceLineNo">16628</span> ox = (int) (iax &lt;&lt; ibx);<a name="line.16628"></a>
<span class="sourceLineNo">16629</span> oai32data[it.oIndex] = ox;<a name="line.16629"></a>
<span class="sourceLineNo">16630</span> }<a name="line.16630"></a>
<span class="sourceLineNo">16631</span> }<a name="line.16631"></a>
<span class="sourceLineNo">16632</span> } else if (as &lt; bs) {<a name="line.16632"></a>
<span class="sourceLineNo">16633</span> {<a name="line.16633"></a>
<span class="sourceLineNo">16634</span> while (it.hasNext()) {<a name="line.16634"></a>
<span class="sourceLineNo">16635</span> final long iax = it.aLong;<a name="line.16635"></a>
<span class="sourceLineNo">16636</span> long ibx = it.bLong;<a name="line.16636"></a>
<span class="sourceLineNo">16637</span> int ox;<a name="line.16637"></a>
<span class="sourceLineNo">16638</span> ox = (int) (iax &lt;&lt; ibx);<a name="line.16638"></a>
<span class="sourceLineNo">16639</span> oai32data[it.oIndex] = ox;<a name="line.16639"></a>
<span class="sourceLineNo">16640</span> for (int j = 1; j &lt; is; j++) {<a name="line.16640"></a>
<span class="sourceLineNo">16641</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.16641"></a>
<span class="sourceLineNo">16642</span> ox = (int) (iax &lt;&lt; ibx);<a name="line.16642"></a>
<span class="sourceLineNo">16643</span> oai32data[it.oIndex + j] = ox;<a name="line.16643"></a>
<span class="sourceLineNo">16644</span> }<a name="line.16644"></a>
<span class="sourceLineNo">16645</span> }<a name="line.16645"></a>
<span class="sourceLineNo">16646</span> }<a name="line.16646"></a>
<span class="sourceLineNo">16647</span> } else if (as &gt; bs) {<a name="line.16647"></a>
<span class="sourceLineNo">16648</span> {<a name="line.16648"></a>
<span class="sourceLineNo">16649</span> while (it.hasNext()) {<a name="line.16649"></a>
<span class="sourceLineNo">16650</span> long iax = it.aLong;<a name="line.16650"></a>
<span class="sourceLineNo">16651</span> final long ibx = it.bLong;<a name="line.16651"></a>
<span class="sourceLineNo">16652</span> int ox;<a name="line.16652"></a>
<span class="sourceLineNo">16653</span> ox = (int) (iax &lt;&lt; ibx);<a name="line.16653"></a>
<span class="sourceLineNo">16654</span> oai32data[it.oIndex] = ox;<a name="line.16654"></a>
<span class="sourceLineNo">16655</span> for (int j = 1; j &lt; is; j++) {<a name="line.16655"></a>
<span class="sourceLineNo">16656</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.16656"></a>
<span class="sourceLineNo">16657</span> ox = (int) (iax &lt;&lt; ibx);<a name="line.16657"></a>
<span class="sourceLineNo">16658</span> oai32data[it.oIndex + j] = ox;<a name="line.16658"></a>
<span class="sourceLineNo">16659</span> }<a name="line.16659"></a>
<span class="sourceLineNo">16660</span> }<a name="line.16660"></a>
<span class="sourceLineNo">16661</span> }<a name="line.16661"></a>
<span class="sourceLineNo">16662</span> } else if (as == 1) {<a name="line.16662"></a>
<span class="sourceLineNo">16663</span> {<a name="line.16663"></a>
<span class="sourceLineNo">16664</span> while (it.hasNext()) {<a name="line.16664"></a>
<span class="sourceLineNo">16665</span> final long iax = it.aLong;<a name="line.16665"></a>
<span class="sourceLineNo">16666</span> final long ibx = it.bLong;<a name="line.16666"></a>
<span class="sourceLineNo">16667</span> int ox;<a name="line.16667"></a>
<span class="sourceLineNo">16668</span> ox = (int) (iax &lt;&lt; ibx);<a name="line.16668"></a>
<span class="sourceLineNo">16669</span> for (int j = 0; j &lt; is; j++) {<a name="line.16669"></a>
<span class="sourceLineNo">16670</span> oai32data[it.oIndex + j] = ox;<a name="line.16670"></a>
<span class="sourceLineNo">16671</span> }<a name="line.16671"></a>
<span class="sourceLineNo">16672</span> }<a name="line.16672"></a>
<span class="sourceLineNo">16673</span> }<a name="line.16673"></a>
<span class="sourceLineNo">16674</span> } else {<a name="line.16674"></a>
<span class="sourceLineNo">16675</span> {<a name="line.16675"></a>
<span class="sourceLineNo">16676</span> while (it.hasNext()) {<a name="line.16676"></a>
<span class="sourceLineNo">16677</span> long iax = it.aLong;<a name="line.16677"></a>
<span class="sourceLineNo">16678</span> long ibx = it.bLong;<a name="line.16678"></a>
<span class="sourceLineNo">16679</span> int ox;<a name="line.16679"></a>
<span class="sourceLineNo">16680</span> ox = (int) (iax &lt;&lt; ibx);<a name="line.16680"></a>
<span class="sourceLineNo">16681</span> oai32data[it.oIndex] = ox;<a name="line.16681"></a>
<span class="sourceLineNo">16682</span> for (int j = 1; j &lt; is; j++) {<a name="line.16682"></a>
<span class="sourceLineNo">16683</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.16683"></a>
<span class="sourceLineNo">16684</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.16684"></a>
<span class="sourceLineNo">16685</span> ox = (int) (iax &lt;&lt; ibx);<a name="line.16685"></a>
<span class="sourceLineNo">16686</span> oai32data[it.oIndex + j] = ox;<a name="line.16686"></a>
<span class="sourceLineNo">16687</span> }<a name="line.16687"></a>
<span class="sourceLineNo">16688</span> }<a name="line.16688"></a>
<span class="sourceLineNo">16689</span> }<a name="line.16689"></a>
<span class="sourceLineNo">16690</span> }<a name="line.16690"></a>
<span class="sourceLineNo">16691</span> break;<a name="line.16691"></a>
<span class="sourceLineNo">16692</span> default:<a name="line.16692"></a>
<span class="sourceLineNo">16693</span> throw new IllegalArgumentException("leftShift supports integer, compound integer datasets only");<a name="line.16693"></a>
<span class="sourceLineNo">16694</span> }<a name="line.16694"></a>
<span class="sourceLineNo">16695</span><a name="line.16695"></a>
<span class="sourceLineNo">16696</span> addBinaryOperatorName(da, db, result, "&lt;&lt;");<a name="line.16696"></a>
<span class="sourceLineNo">16697</span> return result;<a name="line.16697"></a>
<span class="sourceLineNo">16698</span> }<a name="line.16698"></a>
<span class="sourceLineNo">16699</span><a name="line.16699"></a>
<span class="sourceLineNo">16700</span> /**<a name="line.16700"></a>
<span class="sourceLineNo">16701</span> * rightShift operator<a name="line.16701"></a>
<span class="sourceLineNo">16702</span> * @param a<a name="line.16702"></a>
<span class="sourceLineNo">16703</span> * @param b<a name="line.16703"></a>
<span class="sourceLineNo">16704</span> * @return {@code a &gt;&gt; b}, bitwise right shift of a by b<a name="line.16704"></a>
<span class="sourceLineNo">16705</span> */<a name="line.16705"></a>
<span class="sourceLineNo">16706</span> public static Dataset rightShift(final Object a, final Object b) {<a name="line.16706"></a>
<span class="sourceLineNo">16707</span> return rightShift(a, b, null);<a name="line.16707"></a>
<span class="sourceLineNo">16708</span> }<a name="line.16708"></a>
<span class="sourceLineNo">16709</span><a name="line.16709"></a>
<span class="sourceLineNo">16710</span> /**<a name="line.16710"></a>
<span class="sourceLineNo">16711</span> * rightShift operator<a name="line.16711"></a>
<span class="sourceLineNo">16712</span> * @param a<a name="line.16712"></a>
<span class="sourceLineNo">16713</span> * @param b<a name="line.16713"></a>
<span class="sourceLineNo">16714</span> * @param o output can be null - in which case, a new dataset is created<a name="line.16714"></a>
<span class="sourceLineNo">16715</span> * @return {@code a &gt;&gt; b}, bitwise right shift of a by b<a name="line.16715"></a>
<span class="sourceLineNo">16716</span> */<a name="line.16716"></a>
<span class="sourceLineNo">16717</span> public static Dataset rightShift(final Object a, final Object b, final Dataset o) {<a name="line.16717"></a>
<span class="sourceLineNo">16718</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.16718"></a>
<span class="sourceLineNo">16719</span> Dataset db = b instanceof Dataset ? (Dataset) b : DatasetFactory.createFromObject(b);<a name="line.16719"></a>
<span class="sourceLineNo">16720</span> BroadcastIterator it = BroadcastIterator.createIterator(da, db, o, true);<a name="line.16720"></a>
<span class="sourceLineNo">16721</span> it.setOutputDouble(false);<a name="line.16721"></a>
<span class="sourceLineNo">16722</span> final Dataset result = it.getOutput();<a name="line.16722"></a>
<span class="sourceLineNo">16723</span> if (!result.isComplex()) {<a name="line.16723"></a>
<span class="sourceLineNo">16724</span> boolean change = false;<a name="line.16724"></a>
<span class="sourceLineNo">16725</span> if (da.isComplex()) {<a name="line.16725"></a>
<span class="sourceLineNo">16726</span> da = da.getRealView();<a name="line.16726"></a>
<span class="sourceLineNo">16727</span> change = true;<a name="line.16727"></a>
<span class="sourceLineNo">16728</span> }<a name="line.16728"></a>
<span class="sourceLineNo">16729</span> if (db.isComplex()) {<a name="line.16729"></a>
<span class="sourceLineNo">16730</span> db = db.getRealView();<a name="line.16730"></a>
<span class="sourceLineNo">16731</span> change = true;<a name="line.16731"></a>
<span class="sourceLineNo">16732</span> }<a name="line.16732"></a>
<span class="sourceLineNo">16733</span> if (change) {<a name="line.16733"></a>
<span class="sourceLineNo">16734</span> it = BroadcastIterator.createIterator(da, db, result, true);<a name="line.16734"></a>
<span class="sourceLineNo">16735</span> it.setOutputDouble(false);<a name="line.16735"></a>
<span class="sourceLineNo">16736</span> }<a name="line.16736"></a>
<span class="sourceLineNo">16737</span> }<a name="line.16737"></a>
<span class="sourceLineNo">16738</span> final int is = result.getElementsPerItem();<a name="line.16738"></a>
<span class="sourceLineNo">16739</span> final int as = da.getElementsPerItem();<a name="line.16739"></a>
<span class="sourceLineNo">16740</span> final int bs = db.getElementsPerItem();<a name="line.16740"></a>
<span class="sourceLineNo">16741</span> final int dt = result.getDType();<a name="line.16741"></a>
<span class="sourceLineNo">16742</span><a name="line.16742"></a>
<span class="sourceLineNo">16743</span> switch(dt) {<a name="line.16743"></a>
<span class="sourceLineNo">16744</span> case Dataset.INT8:<a name="line.16744"></a>
<span class="sourceLineNo">16745</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.16745"></a>
<span class="sourceLineNo">16746</span> {<a name="line.16746"></a>
<span class="sourceLineNo">16747</span> while (it.hasNext()) {<a name="line.16747"></a>
<span class="sourceLineNo">16748</span> final long iax = it.aLong;<a name="line.16748"></a>
<span class="sourceLineNo">16749</span> final long ibx = it.bLong;<a name="line.16749"></a>
<span class="sourceLineNo">16750</span> byte ox;<a name="line.16750"></a>
<span class="sourceLineNo">16751</span> ox = (byte) (iax &gt;&gt; ibx);<a name="line.16751"></a>
<span class="sourceLineNo">16752</span> oi8data[it.oIndex] = ox;<a name="line.16752"></a>
<span class="sourceLineNo">16753</span> }<a name="line.16753"></a>
<span class="sourceLineNo">16754</span> }<a name="line.16754"></a>
<span class="sourceLineNo">16755</span> break;<a name="line.16755"></a>
<span class="sourceLineNo">16756</span> case Dataset.INT16:<a name="line.16756"></a>
<span class="sourceLineNo">16757</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.16757"></a>
<span class="sourceLineNo">16758</span> {<a name="line.16758"></a>
<span class="sourceLineNo">16759</span> while (it.hasNext()) {<a name="line.16759"></a>
<span class="sourceLineNo">16760</span> final long iax = it.aLong;<a name="line.16760"></a>
<span class="sourceLineNo">16761</span> final long ibx = it.bLong;<a name="line.16761"></a>
<span class="sourceLineNo">16762</span> short ox;<a name="line.16762"></a>
<span class="sourceLineNo">16763</span> ox = (short) (iax &gt;&gt; ibx);<a name="line.16763"></a>
<span class="sourceLineNo">16764</span> oi16data[it.oIndex] = ox;<a name="line.16764"></a>
<span class="sourceLineNo">16765</span> }<a name="line.16765"></a>
<span class="sourceLineNo">16766</span> }<a name="line.16766"></a>
<span class="sourceLineNo">16767</span> break;<a name="line.16767"></a>
<span class="sourceLineNo">16768</span> case Dataset.INT64:<a name="line.16768"></a>
<span class="sourceLineNo">16769</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.16769"></a>
<span class="sourceLineNo">16770</span> {<a name="line.16770"></a>
<span class="sourceLineNo">16771</span> while (it.hasNext()) {<a name="line.16771"></a>
<span class="sourceLineNo">16772</span> final long iax = it.aLong;<a name="line.16772"></a>
<span class="sourceLineNo">16773</span> final long ibx = it.bLong;<a name="line.16773"></a>
<span class="sourceLineNo">16774</span> long ox;<a name="line.16774"></a>
<span class="sourceLineNo">16775</span> ox = (iax &gt;&gt; ibx);<a name="line.16775"></a>
<span class="sourceLineNo">16776</span> oi64data[it.oIndex] = ox;<a name="line.16776"></a>
<span class="sourceLineNo">16777</span> }<a name="line.16777"></a>
<span class="sourceLineNo">16778</span> }<a name="line.16778"></a>
<span class="sourceLineNo">16779</span> break;<a name="line.16779"></a>
<span class="sourceLineNo">16780</span> case Dataset.INT32:<a name="line.16780"></a>
<span class="sourceLineNo">16781</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.16781"></a>
<span class="sourceLineNo">16782</span> {<a name="line.16782"></a>
<span class="sourceLineNo">16783</span> while (it.hasNext()) {<a name="line.16783"></a>
<span class="sourceLineNo">16784</span> final long iax = it.aLong;<a name="line.16784"></a>
<span class="sourceLineNo">16785</span> final long ibx = it.bLong;<a name="line.16785"></a>
<span class="sourceLineNo">16786</span> int ox;<a name="line.16786"></a>
<span class="sourceLineNo">16787</span> ox = (int) (iax &gt;&gt; ibx);<a name="line.16787"></a>
<span class="sourceLineNo">16788</span> oi32data[it.oIndex] = ox;<a name="line.16788"></a>
<span class="sourceLineNo">16789</span> }<a name="line.16789"></a>
<span class="sourceLineNo">16790</span> }<a name="line.16790"></a>
<span class="sourceLineNo">16791</span> break;<a name="line.16791"></a>
<span class="sourceLineNo">16792</span> case Dataset.ARRAYINT8:<a name="line.16792"></a>
<span class="sourceLineNo">16793</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.16793"></a>
<span class="sourceLineNo">16794</span> if (is == 1) {<a name="line.16794"></a>
<span class="sourceLineNo">16795</span> {<a name="line.16795"></a>
<span class="sourceLineNo">16796</span> while (it.hasNext()) {<a name="line.16796"></a>
<span class="sourceLineNo">16797</span> final long iax = it.aLong;<a name="line.16797"></a>
<span class="sourceLineNo">16798</span> final long ibx = it.bLong;<a name="line.16798"></a>
<span class="sourceLineNo">16799</span> byte ox;<a name="line.16799"></a>
<span class="sourceLineNo">16800</span> ox = (byte) (iax &gt;&gt; ibx);<a name="line.16800"></a>
<span class="sourceLineNo">16801</span> oai8data[it.oIndex] = ox;<a name="line.16801"></a>
<span class="sourceLineNo">16802</span> }<a name="line.16802"></a>
<span class="sourceLineNo">16803</span> }<a name="line.16803"></a>
<span class="sourceLineNo">16804</span> } else if (as &lt; bs) {<a name="line.16804"></a>
<span class="sourceLineNo">16805</span> {<a name="line.16805"></a>
<span class="sourceLineNo">16806</span> while (it.hasNext()) {<a name="line.16806"></a>
<span class="sourceLineNo">16807</span> final long iax = it.aLong;<a name="line.16807"></a>
<span class="sourceLineNo">16808</span> long ibx = it.bLong;<a name="line.16808"></a>
<span class="sourceLineNo">16809</span> byte ox;<a name="line.16809"></a>
<span class="sourceLineNo">16810</span> ox = (byte) (iax &gt;&gt; ibx);<a name="line.16810"></a>
<span class="sourceLineNo">16811</span> oai8data[it.oIndex] = ox;<a name="line.16811"></a>
<span class="sourceLineNo">16812</span> for (int j = 1; j &lt; is; j++) {<a name="line.16812"></a>
<span class="sourceLineNo">16813</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.16813"></a>
<span class="sourceLineNo">16814</span> ox = (byte) (iax &gt;&gt; ibx);<a name="line.16814"></a>
<span class="sourceLineNo">16815</span> oai8data[it.oIndex + j] = ox;<a name="line.16815"></a>
<span class="sourceLineNo">16816</span> }<a name="line.16816"></a>
<span class="sourceLineNo">16817</span> }<a name="line.16817"></a>
<span class="sourceLineNo">16818</span> }<a name="line.16818"></a>
<span class="sourceLineNo">16819</span> } else if (as &gt; bs) {<a name="line.16819"></a>
<span class="sourceLineNo">16820</span> {<a name="line.16820"></a>
<span class="sourceLineNo">16821</span> while (it.hasNext()) {<a name="line.16821"></a>
<span class="sourceLineNo">16822</span> long iax = it.aLong;<a name="line.16822"></a>
<span class="sourceLineNo">16823</span> final long ibx = it.bLong;<a name="line.16823"></a>
<span class="sourceLineNo">16824</span> byte ox;<a name="line.16824"></a>
<span class="sourceLineNo">16825</span> ox = (byte) (iax &gt;&gt; ibx);<a name="line.16825"></a>
<span class="sourceLineNo">16826</span> oai8data[it.oIndex] = ox;<a name="line.16826"></a>
<span class="sourceLineNo">16827</span> for (int j = 1; j &lt; is; j++) {<a name="line.16827"></a>
<span class="sourceLineNo">16828</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.16828"></a>
<span class="sourceLineNo">16829</span> ox = (byte) (iax &gt;&gt; ibx);<a name="line.16829"></a>
<span class="sourceLineNo">16830</span> oai8data[it.oIndex + j] = ox;<a name="line.16830"></a>
<span class="sourceLineNo">16831</span> }<a name="line.16831"></a>
<span class="sourceLineNo">16832</span> }<a name="line.16832"></a>
<span class="sourceLineNo">16833</span> }<a name="line.16833"></a>
<span class="sourceLineNo">16834</span> } else if (as == 1) {<a name="line.16834"></a>
<span class="sourceLineNo">16835</span> {<a name="line.16835"></a>
<span class="sourceLineNo">16836</span> while (it.hasNext()) {<a name="line.16836"></a>
<span class="sourceLineNo">16837</span> final long iax = it.aLong;<a name="line.16837"></a>
<span class="sourceLineNo">16838</span> final long ibx = it.bLong;<a name="line.16838"></a>
<span class="sourceLineNo">16839</span> byte ox;<a name="line.16839"></a>
<span class="sourceLineNo">16840</span> ox = (byte) (iax &gt;&gt; ibx);<a name="line.16840"></a>
<span class="sourceLineNo">16841</span> for (int j = 0; j &lt; is; j++) {<a name="line.16841"></a>
<span class="sourceLineNo">16842</span> oai8data[it.oIndex + j] = ox;<a name="line.16842"></a>
<span class="sourceLineNo">16843</span> }<a name="line.16843"></a>
<span class="sourceLineNo">16844</span> }<a name="line.16844"></a>
<span class="sourceLineNo">16845</span> }<a name="line.16845"></a>
<span class="sourceLineNo">16846</span> } else {<a name="line.16846"></a>
<span class="sourceLineNo">16847</span> {<a name="line.16847"></a>
<span class="sourceLineNo">16848</span> while (it.hasNext()) {<a name="line.16848"></a>
<span class="sourceLineNo">16849</span> long iax = it.aLong;<a name="line.16849"></a>
<span class="sourceLineNo">16850</span> long ibx = it.bLong;<a name="line.16850"></a>
<span class="sourceLineNo">16851</span> byte ox;<a name="line.16851"></a>
<span class="sourceLineNo">16852</span> ox = (byte) (iax &gt;&gt; ibx);<a name="line.16852"></a>
<span class="sourceLineNo">16853</span> oai8data[it.oIndex] = ox;<a name="line.16853"></a>
<span class="sourceLineNo">16854</span> for (int j = 1; j &lt; is; j++) {<a name="line.16854"></a>
<span class="sourceLineNo">16855</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.16855"></a>
<span class="sourceLineNo">16856</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.16856"></a>
<span class="sourceLineNo">16857</span> ox = (byte) (iax &gt;&gt; ibx);<a name="line.16857"></a>
<span class="sourceLineNo">16858</span> oai8data[it.oIndex + j] = ox;<a name="line.16858"></a>
<span class="sourceLineNo">16859</span> }<a name="line.16859"></a>
<span class="sourceLineNo">16860</span> }<a name="line.16860"></a>
<span class="sourceLineNo">16861</span> }<a name="line.16861"></a>
<span class="sourceLineNo">16862</span> }<a name="line.16862"></a>
<span class="sourceLineNo">16863</span> break;<a name="line.16863"></a>
<span class="sourceLineNo">16864</span> case Dataset.ARRAYINT16:<a name="line.16864"></a>
<span class="sourceLineNo">16865</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.16865"></a>
<span class="sourceLineNo">16866</span> if (is == 1) {<a name="line.16866"></a>
<span class="sourceLineNo">16867</span> {<a name="line.16867"></a>
<span class="sourceLineNo">16868</span> while (it.hasNext()) {<a name="line.16868"></a>
<span class="sourceLineNo">16869</span> final long iax = it.aLong;<a name="line.16869"></a>
<span class="sourceLineNo">16870</span> final long ibx = it.bLong;<a name="line.16870"></a>
<span class="sourceLineNo">16871</span> short ox;<a name="line.16871"></a>
<span class="sourceLineNo">16872</span> ox = (short) (iax &gt;&gt; ibx);<a name="line.16872"></a>
<span class="sourceLineNo">16873</span> oai16data[it.oIndex] = ox;<a name="line.16873"></a>
<span class="sourceLineNo">16874</span> }<a name="line.16874"></a>
<span class="sourceLineNo">16875</span> }<a name="line.16875"></a>
<span class="sourceLineNo">16876</span> } else if (as &lt; bs) {<a name="line.16876"></a>
<span class="sourceLineNo">16877</span> {<a name="line.16877"></a>
<span class="sourceLineNo">16878</span> while (it.hasNext()) {<a name="line.16878"></a>
<span class="sourceLineNo">16879</span> final long iax = it.aLong;<a name="line.16879"></a>
<span class="sourceLineNo">16880</span> long ibx = it.bLong;<a name="line.16880"></a>
<span class="sourceLineNo">16881</span> short ox;<a name="line.16881"></a>
<span class="sourceLineNo">16882</span> ox = (short) (iax &gt;&gt; ibx);<a name="line.16882"></a>
<span class="sourceLineNo">16883</span> oai16data[it.oIndex] = ox;<a name="line.16883"></a>
<span class="sourceLineNo">16884</span> for (int j = 1; j &lt; is; j++) {<a name="line.16884"></a>
<span class="sourceLineNo">16885</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.16885"></a>
<span class="sourceLineNo">16886</span> ox = (short) (iax &gt;&gt; ibx);<a name="line.16886"></a>
<span class="sourceLineNo">16887</span> oai16data[it.oIndex + j] = ox;<a name="line.16887"></a>
<span class="sourceLineNo">16888</span> }<a name="line.16888"></a>
<span class="sourceLineNo">16889</span> }<a name="line.16889"></a>
<span class="sourceLineNo">16890</span> }<a name="line.16890"></a>
<span class="sourceLineNo">16891</span> } else if (as &gt; bs) {<a name="line.16891"></a>
<span class="sourceLineNo">16892</span> {<a name="line.16892"></a>
<span class="sourceLineNo">16893</span> while (it.hasNext()) {<a name="line.16893"></a>
<span class="sourceLineNo">16894</span> long iax = it.aLong;<a name="line.16894"></a>
<span class="sourceLineNo">16895</span> final long ibx = it.bLong;<a name="line.16895"></a>
<span class="sourceLineNo">16896</span> short ox;<a name="line.16896"></a>
<span class="sourceLineNo">16897</span> ox = (short) (iax &gt;&gt; ibx);<a name="line.16897"></a>
<span class="sourceLineNo">16898</span> oai16data[it.oIndex] = ox;<a name="line.16898"></a>
<span class="sourceLineNo">16899</span> for (int j = 1; j &lt; is; j++) {<a name="line.16899"></a>
<span class="sourceLineNo">16900</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.16900"></a>
<span class="sourceLineNo">16901</span> ox = (short) (iax &gt;&gt; ibx);<a name="line.16901"></a>
<span class="sourceLineNo">16902</span> oai16data[it.oIndex + j] = ox;<a name="line.16902"></a>
<span class="sourceLineNo">16903</span> }<a name="line.16903"></a>
<span class="sourceLineNo">16904</span> }<a name="line.16904"></a>
<span class="sourceLineNo">16905</span> }<a name="line.16905"></a>
<span class="sourceLineNo">16906</span> } else if (as == 1) {<a name="line.16906"></a>
<span class="sourceLineNo">16907</span> {<a name="line.16907"></a>
<span class="sourceLineNo">16908</span> while (it.hasNext()) {<a name="line.16908"></a>
<span class="sourceLineNo">16909</span> final long iax = it.aLong;<a name="line.16909"></a>
<span class="sourceLineNo">16910</span> final long ibx = it.bLong;<a name="line.16910"></a>
<span class="sourceLineNo">16911</span> short ox;<a name="line.16911"></a>
<span class="sourceLineNo">16912</span> ox = (short) (iax &gt;&gt; ibx);<a name="line.16912"></a>
<span class="sourceLineNo">16913</span> for (int j = 0; j &lt; is; j++) {<a name="line.16913"></a>
<span class="sourceLineNo">16914</span> oai16data[it.oIndex + j] = ox;<a name="line.16914"></a>
<span class="sourceLineNo">16915</span> }<a name="line.16915"></a>
<span class="sourceLineNo">16916</span> }<a name="line.16916"></a>
<span class="sourceLineNo">16917</span> }<a name="line.16917"></a>
<span class="sourceLineNo">16918</span> } else {<a name="line.16918"></a>
<span class="sourceLineNo">16919</span> {<a name="line.16919"></a>
<span class="sourceLineNo">16920</span> while (it.hasNext()) {<a name="line.16920"></a>
<span class="sourceLineNo">16921</span> long iax = it.aLong;<a name="line.16921"></a>
<span class="sourceLineNo">16922</span> long ibx = it.bLong;<a name="line.16922"></a>
<span class="sourceLineNo">16923</span> short ox;<a name="line.16923"></a>
<span class="sourceLineNo">16924</span> ox = (short) (iax &gt;&gt; ibx);<a name="line.16924"></a>
<span class="sourceLineNo">16925</span> oai16data[it.oIndex] = ox;<a name="line.16925"></a>
<span class="sourceLineNo">16926</span> for (int j = 1; j &lt; is; j++) {<a name="line.16926"></a>
<span class="sourceLineNo">16927</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.16927"></a>
<span class="sourceLineNo">16928</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.16928"></a>
<span class="sourceLineNo">16929</span> ox = (short) (iax &gt;&gt; ibx);<a name="line.16929"></a>
<span class="sourceLineNo">16930</span> oai16data[it.oIndex + j] = ox;<a name="line.16930"></a>
<span class="sourceLineNo">16931</span> }<a name="line.16931"></a>
<span class="sourceLineNo">16932</span> }<a name="line.16932"></a>
<span class="sourceLineNo">16933</span> }<a name="line.16933"></a>
<span class="sourceLineNo">16934</span> }<a name="line.16934"></a>
<span class="sourceLineNo">16935</span> break;<a name="line.16935"></a>
<span class="sourceLineNo">16936</span> case Dataset.ARRAYINT64:<a name="line.16936"></a>
<span class="sourceLineNo">16937</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.16937"></a>
<span class="sourceLineNo">16938</span> if (is == 1) {<a name="line.16938"></a>
<span class="sourceLineNo">16939</span> {<a name="line.16939"></a>
<span class="sourceLineNo">16940</span> while (it.hasNext()) {<a name="line.16940"></a>
<span class="sourceLineNo">16941</span> final long iax = it.aLong;<a name="line.16941"></a>
<span class="sourceLineNo">16942</span> final long ibx = it.bLong;<a name="line.16942"></a>
<span class="sourceLineNo">16943</span> long ox;<a name="line.16943"></a>
<span class="sourceLineNo">16944</span> ox = (iax &gt;&gt; ibx);<a name="line.16944"></a>
<span class="sourceLineNo">16945</span> oai64data[it.oIndex] = ox;<a name="line.16945"></a>
<span class="sourceLineNo">16946</span> }<a name="line.16946"></a>
<span class="sourceLineNo">16947</span> }<a name="line.16947"></a>
<span class="sourceLineNo">16948</span> } else if (as &lt; bs) {<a name="line.16948"></a>
<span class="sourceLineNo">16949</span> {<a name="line.16949"></a>
<span class="sourceLineNo">16950</span> while (it.hasNext()) {<a name="line.16950"></a>
<span class="sourceLineNo">16951</span> final long iax = it.aLong;<a name="line.16951"></a>
<span class="sourceLineNo">16952</span> long ibx = it.bLong;<a name="line.16952"></a>
<span class="sourceLineNo">16953</span> long ox;<a name="line.16953"></a>
<span class="sourceLineNo">16954</span> ox = (iax &gt;&gt; ibx);<a name="line.16954"></a>
<span class="sourceLineNo">16955</span> oai64data[it.oIndex] = ox;<a name="line.16955"></a>
<span class="sourceLineNo">16956</span> for (int j = 1; j &lt; is; j++) {<a name="line.16956"></a>
<span class="sourceLineNo">16957</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.16957"></a>
<span class="sourceLineNo">16958</span> ox = (iax &gt;&gt; ibx);<a name="line.16958"></a>
<span class="sourceLineNo">16959</span> oai64data[it.oIndex + j] = ox;<a name="line.16959"></a>
<span class="sourceLineNo">16960</span> }<a name="line.16960"></a>
<span class="sourceLineNo">16961</span> }<a name="line.16961"></a>
<span class="sourceLineNo">16962</span> }<a name="line.16962"></a>
<span class="sourceLineNo">16963</span> } else if (as &gt; bs) {<a name="line.16963"></a>
<span class="sourceLineNo">16964</span> {<a name="line.16964"></a>
<span class="sourceLineNo">16965</span> while (it.hasNext()) {<a name="line.16965"></a>
<span class="sourceLineNo">16966</span> long iax = it.aLong;<a name="line.16966"></a>
<span class="sourceLineNo">16967</span> final long ibx = it.bLong;<a name="line.16967"></a>
<span class="sourceLineNo">16968</span> long ox;<a name="line.16968"></a>
<span class="sourceLineNo">16969</span> ox = (iax &gt;&gt; ibx);<a name="line.16969"></a>
<span class="sourceLineNo">16970</span> oai64data[it.oIndex] = ox;<a name="line.16970"></a>
<span class="sourceLineNo">16971</span> for (int j = 1; j &lt; is; j++) {<a name="line.16971"></a>
<span class="sourceLineNo">16972</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.16972"></a>
<span class="sourceLineNo">16973</span> ox = (iax &gt;&gt; ibx);<a name="line.16973"></a>
<span class="sourceLineNo">16974</span> oai64data[it.oIndex + j] = ox;<a name="line.16974"></a>
<span class="sourceLineNo">16975</span> }<a name="line.16975"></a>
<span class="sourceLineNo">16976</span> }<a name="line.16976"></a>
<span class="sourceLineNo">16977</span> }<a name="line.16977"></a>
<span class="sourceLineNo">16978</span> } else if (as == 1) {<a name="line.16978"></a>
<span class="sourceLineNo">16979</span> {<a name="line.16979"></a>
<span class="sourceLineNo">16980</span> while (it.hasNext()) {<a name="line.16980"></a>
<span class="sourceLineNo">16981</span> final long iax = it.aLong;<a name="line.16981"></a>
<span class="sourceLineNo">16982</span> final long ibx = it.bLong;<a name="line.16982"></a>
<span class="sourceLineNo">16983</span> long ox;<a name="line.16983"></a>
<span class="sourceLineNo">16984</span> ox = (iax &gt;&gt; ibx);<a name="line.16984"></a>
<span class="sourceLineNo">16985</span> for (int j = 0; j &lt; is; j++) {<a name="line.16985"></a>
<span class="sourceLineNo">16986</span> oai64data[it.oIndex + j] = ox;<a name="line.16986"></a>
<span class="sourceLineNo">16987</span> }<a name="line.16987"></a>
<span class="sourceLineNo">16988</span> }<a name="line.16988"></a>
<span class="sourceLineNo">16989</span> }<a name="line.16989"></a>
<span class="sourceLineNo">16990</span> } else {<a name="line.16990"></a>
<span class="sourceLineNo">16991</span> {<a name="line.16991"></a>
<span class="sourceLineNo">16992</span> while (it.hasNext()) {<a name="line.16992"></a>
<span class="sourceLineNo">16993</span> long iax = it.aLong;<a name="line.16993"></a>
<span class="sourceLineNo">16994</span> long ibx = it.bLong;<a name="line.16994"></a>
<span class="sourceLineNo">16995</span> long ox;<a name="line.16995"></a>
<span class="sourceLineNo">16996</span> ox = (iax &gt;&gt; ibx);<a name="line.16996"></a>
<span class="sourceLineNo">16997</span> oai64data[it.oIndex] = ox;<a name="line.16997"></a>
<span class="sourceLineNo">16998</span> for (int j = 1; j &lt; is; j++) {<a name="line.16998"></a>
<span class="sourceLineNo">16999</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.16999"></a>
<span class="sourceLineNo">17000</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.17000"></a>
<span class="sourceLineNo">17001</span> ox = (iax &gt;&gt; ibx);<a name="line.17001"></a>
<span class="sourceLineNo">17002</span> oai64data[it.oIndex + j] = ox;<a name="line.17002"></a>
<span class="sourceLineNo">17003</span> }<a name="line.17003"></a>
<span class="sourceLineNo">17004</span> }<a name="line.17004"></a>
<span class="sourceLineNo">17005</span> }<a name="line.17005"></a>
<span class="sourceLineNo">17006</span> }<a name="line.17006"></a>
<span class="sourceLineNo">17007</span> break;<a name="line.17007"></a>
<span class="sourceLineNo">17008</span> case Dataset.ARRAYINT32:<a name="line.17008"></a>
<span class="sourceLineNo">17009</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.17009"></a>
<span class="sourceLineNo">17010</span> if (is == 1) {<a name="line.17010"></a>
<span class="sourceLineNo">17011</span> {<a name="line.17011"></a>
<span class="sourceLineNo">17012</span> while (it.hasNext()) {<a name="line.17012"></a>
<span class="sourceLineNo">17013</span> final long iax = it.aLong;<a name="line.17013"></a>
<span class="sourceLineNo">17014</span> final long ibx = it.bLong;<a name="line.17014"></a>
<span class="sourceLineNo">17015</span> int ox;<a name="line.17015"></a>
<span class="sourceLineNo">17016</span> ox = (int) (iax &gt;&gt; ibx);<a name="line.17016"></a>
<span class="sourceLineNo">17017</span> oai32data[it.oIndex] = ox;<a name="line.17017"></a>
<span class="sourceLineNo">17018</span> }<a name="line.17018"></a>
<span class="sourceLineNo">17019</span> }<a name="line.17019"></a>
<span class="sourceLineNo">17020</span> } else if (as &lt; bs) {<a name="line.17020"></a>
<span class="sourceLineNo">17021</span> {<a name="line.17021"></a>
<span class="sourceLineNo">17022</span> while (it.hasNext()) {<a name="line.17022"></a>
<span class="sourceLineNo">17023</span> final long iax = it.aLong;<a name="line.17023"></a>
<span class="sourceLineNo">17024</span> long ibx = it.bLong;<a name="line.17024"></a>
<span class="sourceLineNo">17025</span> int ox;<a name="line.17025"></a>
<span class="sourceLineNo">17026</span> ox = (int) (iax &gt;&gt; ibx);<a name="line.17026"></a>
<span class="sourceLineNo">17027</span> oai32data[it.oIndex] = ox;<a name="line.17027"></a>
<span class="sourceLineNo">17028</span> for (int j = 1; j &lt; is; j++) {<a name="line.17028"></a>
<span class="sourceLineNo">17029</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.17029"></a>
<span class="sourceLineNo">17030</span> ox = (int) (iax &gt;&gt; ibx);<a name="line.17030"></a>
<span class="sourceLineNo">17031</span> oai32data[it.oIndex + j] = ox;<a name="line.17031"></a>
<span class="sourceLineNo">17032</span> }<a name="line.17032"></a>
<span class="sourceLineNo">17033</span> }<a name="line.17033"></a>
<span class="sourceLineNo">17034</span> }<a name="line.17034"></a>
<span class="sourceLineNo">17035</span> } else if (as &gt; bs) {<a name="line.17035"></a>
<span class="sourceLineNo">17036</span> {<a name="line.17036"></a>
<span class="sourceLineNo">17037</span> while (it.hasNext()) {<a name="line.17037"></a>
<span class="sourceLineNo">17038</span> long iax = it.aLong;<a name="line.17038"></a>
<span class="sourceLineNo">17039</span> final long ibx = it.bLong;<a name="line.17039"></a>
<span class="sourceLineNo">17040</span> int ox;<a name="line.17040"></a>
<span class="sourceLineNo">17041</span> ox = (int) (iax &gt;&gt; ibx);<a name="line.17041"></a>
<span class="sourceLineNo">17042</span> oai32data[it.oIndex] = ox;<a name="line.17042"></a>
<span class="sourceLineNo">17043</span> for (int j = 1; j &lt; is; j++) {<a name="line.17043"></a>
<span class="sourceLineNo">17044</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.17044"></a>
<span class="sourceLineNo">17045</span> ox = (int) (iax &gt;&gt; ibx);<a name="line.17045"></a>
<span class="sourceLineNo">17046</span> oai32data[it.oIndex + j] = ox;<a name="line.17046"></a>
<span class="sourceLineNo">17047</span> }<a name="line.17047"></a>
<span class="sourceLineNo">17048</span> }<a name="line.17048"></a>
<span class="sourceLineNo">17049</span> }<a name="line.17049"></a>
<span class="sourceLineNo">17050</span> } else if (as == 1) {<a name="line.17050"></a>
<span class="sourceLineNo">17051</span> {<a name="line.17051"></a>
<span class="sourceLineNo">17052</span> while (it.hasNext()) {<a name="line.17052"></a>
<span class="sourceLineNo">17053</span> final long iax = it.aLong;<a name="line.17053"></a>
<span class="sourceLineNo">17054</span> final long ibx = it.bLong;<a name="line.17054"></a>
<span class="sourceLineNo">17055</span> int ox;<a name="line.17055"></a>
<span class="sourceLineNo">17056</span> ox = (int) (iax &gt;&gt; ibx);<a name="line.17056"></a>
<span class="sourceLineNo">17057</span> for (int j = 0; j &lt; is; j++) {<a name="line.17057"></a>
<span class="sourceLineNo">17058</span> oai32data[it.oIndex + j] = ox;<a name="line.17058"></a>
<span class="sourceLineNo">17059</span> }<a name="line.17059"></a>
<span class="sourceLineNo">17060</span> }<a name="line.17060"></a>
<span class="sourceLineNo">17061</span> }<a name="line.17061"></a>
<span class="sourceLineNo">17062</span> } else {<a name="line.17062"></a>
<span class="sourceLineNo">17063</span> {<a name="line.17063"></a>
<span class="sourceLineNo">17064</span> while (it.hasNext()) {<a name="line.17064"></a>
<span class="sourceLineNo">17065</span> long iax = it.aLong;<a name="line.17065"></a>
<span class="sourceLineNo">17066</span> long ibx = it.bLong;<a name="line.17066"></a>
<span class="sourceLineNo">17067</span> int ox;<a name="line.17067"></a>
<span class="sourceLineNo">17068</span> ox = (int) (iax &gt;&gt; ibx);<a name="line.17068"></a>
<span class="sourceLineNo">17069</span> oai32data[it.oIndex] = ox;<a name="line.17069"></a>
<span class="sourceLineNo">17070</span> for (int j = 1; j &lt; is; j++) {<a name="line.17070"></a>
<span class="sourceLineNo">17071</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.17071"></a>
<span class="sourceLineNo">17072</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.17072"></a>
<span class="sourceLineNo">17073</span> ox = (int) (iax &gt;&gt; ibx);<a name="line.17073"></a>
<span class="sourceLineNo">17074</span> oai32data[it.oIndex + j] = ox;<a name="line.17074"></a>
<span class="sourceLineNo">17075</span> }<a name="line.17075"></a>
<span class="sourceLineNo">17076</span> }<a name="line.17076"></a>
<span class="sourceLineNo">17077</span> }<a name="line.17077"></a>
<span class="sourceLineNo">17078</span> }<a name="line.17078"></a>
<span class="sourceLineNo">17079</span> break;<a name="line.17079"></a>
<span class="sourceLineNo">17080</span> default:<a name="line.17080"></a>
<span class="sourceLineNo">17081</span> throw new IllegalArgumentException("rightShift supports integer, compound integer datasets only");<a name="line.17081"></a>
<span class="sourceLineNo">17082</span> }<a name="line.17082"></a>
<span class="sourceLineNo">17083</span><a name="line.17083"></a>
<span class="sourceLineNo">17084</span> addBinaryOperatorName(da, db, result, "&gt;&gt;");<a name="line.17084"></a>
<span class="sourceLineNo">17085</span> return result;<a name="line.17085"></a>
<span class="sourceLineNo">17086</span> }<a name="line.17086"></a>
<span class="sourceLineNo">17087</span><a name="line.17087"></a>
<span class="sourceLineNo">17088</span> /**<a name="line.17088"></a>
<span class="sourceLineNo">17089</span> * unsignedRightShift operator<a name="line.17089"></a>
<span class="sourceLineNo">17090</span> * @param a<a name="line.17090"></a>
<span class="sourceLineNo">17091</span> * @param b<a name="line.17091"></a>
<span class="sourceLineNo">17092</span> * @return {@code a &gt;&gt;&gt; b}, bitwise right shift of a by b with zeros added<a name="line.17092"></a>
<span class="sourceLineNo">17093</span> */<a name="line.17093"></a>
<span class="sourceLineNo">17094</span> public static Dataset unsignedRightShift(final Object a, final Object b) {<a name="line.17094"></a>
<span class="sourceLineNo">17095</span> return unsignedRightShift(a, b, null);<a name="line.17095"></a>
<span class="sourceLineNo">17096</span> }<a name="line.17096"></a>
<span class="sourceLineNo">17097</span><a name="line.17097"></a>
<span class="sourceLineNo">17098</span> /**<a name="line.17098"></a>
<span class="sourceLineNo">17099</span> * unsignedRightShift operator<a name="line.17099"></a>
<span class="sourceLineNo">17100</span> * @param a<a name="line.17100"></a>
<span class="sourceLineNo">17101</span> * @param b<a name="line.17101"></a>
<span class="sourceLineNo">17102</span> * @param o output can be null - in which case, a new dataset is created<a name="line.17102"></a>
<span class="sourceLineNo">17103</span> * @return {@code a &gt;&gt;&gt; b}, bitwise right shift of a by b with zeros added<a name="line.17103"></a>
<span class="sourceLineNo">17104</span> */<a name="line.17104"></a>
<span class="sourceLineNo">17105</span> public static Dataset unsignedRightShift(final Object a, final Object b, final Dataset o) {<a name="line.17105"></a>
<span class="sourceLineNo">17106</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.17106"></a>
<span class="sourceLineNo">17107</span> Dataset db = b instanceof Dataset ? (Dataset) b : DatasetFactory.createFromObject(b);<a name="line.17107"></a>
<span class="sourceLineNo">17108</span> BroadcastIterator it = BroadcastIterator.createIterator(da, db, o, true);<a name="line.17108"></a>
<span class="sourceLineNo">17109</span> it.setOutputDouble(false);<a name="line.17109"></a>
<span class="sourceLineNo">17110</span> final long unsignedMask;<a name="line.17110"></a>
<span class="sourceLineNo">17111</span> final Dataset result = it.getOutput();<a name="line.17111"></a>
<span class="sourceLineNo">17112</span> if (!result.isComplex()) {<a name="line.17112"></a>
<span class="sourceLineNo">17113</span> boolean change = false;<a name="line.17113"></a>
<span class="sourceLineNo">17114</span> if (da.isComplex()) {<a name="line.17114"></a>
<span class="sourceLineNo">17115</span> da = da.getRealView();<a name="line.17115"></a>
<span class="sourceLineNo">17116</span> change = true;<a name="line.17116"></a>
<span class="sourceLineNo">17117</span> }<a name="line.17117"></a>
<span class="sourceLineNo">17118</span> if (db.isComplex()) {<a name="line.17118"></a>
<span class="sourceLineNo">17119</span> db = db.getRealView();<a name="line.17119"></a>
<span class="sourceLineNo">17120</span> change = true;<a name="line.17120"></a>
<span class="sourceLineNo">17121</span> }<a name="line.17121"></a>
<span class="sourceLineNo">17122</span> if (change) {<a name="line.17122"></a>
<span class="sourceLineNo">17123</span> it = BroadcastIterator.createIterator(da, db, result, true);<a name="line.17123"></a>
<span class="sourceLineNo">17124</span> it.setOutputDouble(false);<a name="line.17124"></a>
<span class="sourceLineNo">17125</span> }<a name="line.17125"></a>
<span class="sourceLineNo">17126</span> }<a name="line.17126"></a>
<span class="sourceLineNo">17127</span> final int is = result.getElementsPerItem();<a name="line.17127"></a>
<span class="sourceLineNo">17128</span> final int as = da.getElementsPerItem();<a name="line.17128"></a>
<span class="sourceLineNo">17129</span> final int bs = db.getElementsPerItem();<a name="line.17129"></a>
<span class="sourceLineNo">17130</span> final int dt = result.getDType();<a name="line.17130"></a>
<span class="sourceLineNo">17131</span><a name="line.17131"></a>
<span class="sourceLineNo">17132</span> switch(dt) {<a name="line.17132"></a>
<span class="sourceLineNo">17133</span> case Dataset.INT8:<a name="line.17133"></a>
<span class="sourceLineNo">17134</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.17134"></a>
<span class="sourceLineNo">17135</span> unsignedMask = 0xffL;<a name="line.17135"></a>
<span class="sourceLineNo">17136</span> {<a name="line.17136"></a>
<span class="sourceLineNo">17137</span> while (it.hasNext()) {<a name="line.17137"></a>
<span class="sourceLineNo">17138</span> final long iax = it.aLong;<a name="line.17138"></a>
<span class="sourceLineNo">17139</span> final long ibx = it.bLong;<a name="line.17139"></a>
<span class="sourceLineNo">17140</span> byte ox;<a name="line.17140"></a>
<span class="sourceLineNo">17141</span> ox = (byte) ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17141"></a>
<span class="sourceLineNo">17142</span> oi8data[it.oIndex] = ox;<a name="line.17142"></a>
<span class="sourceLineNo">17143</span> }<a name="line.17143"></a>
<span class="sourceLineNo">17144</span> }<a name="line.17144"></a>
<span class="sourceLineNo">17145</span> break;<a name="line.17145"></a>
<span class="sourceLineNo">17146</span> case Dataset.INT16:<a name="line.17146"></a>
<span class="sourceLineNo">17147</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.17147"></a>
<span class="sourceLineNo">17148</span> unsignedMask = 0xffffL;<a name="line.17148"></a>
<span class="sourceLineNo">17149</span> {<a name="line.17149"></a>
<span class="sourceLineNo">17150</span> while (it.hasNext()) {<a name="line.17150"></a>
<span class="sourceLineNo">17151</span> final long iax = it.aLong;<a name="line.17151"></a>
<span class="sourceLineNo">17152</span> final long ibx = it.bLong;<a name="line.17152"></a>
<span class="sourceLineNo">17153</span> short ox;<a name="line.17153"></a>
<span class="sourceLineNo">17154</span> ox = (short) ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17154"></a>
<span class="sourceLineNo">17155</span> oi16data[it.oIndex] = ox;<a name="line.17155"></a>
<span class="sourceLineNo">17156</span> }<a name="line.17156"></a>
<span class="sourceLineNo">17157</span> }<a name="line.17157"></a>
<span class="sourceLineNo">17158</span> break;<a name="line.17158"></a>
<span class="sourceLineNo">17159</span> case Dataset.INT64:<a name="line.17159"></a>
<span class="sourceLineNo">17160</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.17160"></a>
<span class="sourceLineNo">17161</span> unsignedMask = 0xffffffffffffffffL;<a name="line.17161"></a>
<span class="sourceLineNo">17162</span> {<a name="line.17162"></a>
<span class="sourceLineNo">17163</span> while (it.hasNext()) {<a name="line.17163"></a>
<span class="sourceLineNo">17164</span> final long iax = it.aLong;<a name="line.17164"></a>
<span class="sourceLineNo">17165</span> final long ibx = it.bLong;<a name="line.17165"></a>
<span class="sourceLineNo">17166</span> long ox;<a name="line.17166"></a>
<span class="sourceLineNo">17167</span> ox = ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17167"></a>
<span class="sourceLineNo">17168</span> oi64data[it.oIndex] = ox;<a name="line.17168"></a>
<span class="sourceLineNo">17169</span> }<a name="line.17169"></a>
<span class="sourceLineNo">17170</span> }<a name="line.17170"></a>
<span class="sourceLineNo">17171</span> break;<a name="line.17171"></a>
<span class="sourceLineNo">17172</span> case Dataset.INT32:<a name="line.17172"></a>
<span class="sourceLineNo">17173</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.17173"></a>
<span class="sourceLineNo">17174</span> unsignedMask = 0xffffffffL;<a name="line.17174"></a>
<span class="sourceLineNo">17175</span> {<a name="line.17175"></a>
<span class="sourceLineNo">17176</span> while (it.hasNext()) {<a name="line.17176"></a>
<span class="sourceLineNo">17177</span> final long iax = it.aLong;<a name="line.17177"></a>
<span class="sourceLineNo">17178</span> final long ibx = it.bLong;<a name="line.17178"></a>
<span class="sourceLineNo">17179</span> int ox;<a name="line.17179"></a>
<span class="sourceLineNo">17180</span> ox = (int) ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17180"></a>
<span class="sourceLineNo">17181</span> oi32data[it.oIndex] = ox;<a name="line.17181"></a>
<span class="sourceLineNo">17182</span> }<a name="line.17182"></a>
<span class="sourceLineNo">17183</span> }<a name="line.17183"></a>
<span class="sourceLineNo">17184</span> break;<a name="line.17184"></a>
<span class="sourceLineNo">17185</span> case Dataset.ARRAYINT8:<a name="line.17185"></a>
<span class="sourceLineNo">17186</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.17186"></a>
<span class="sourceLineNo">17187</span> unsignedMask = 0xffL;<a name="line.17187"></a>
<span class="sourceLineNo">17188</span> if (is == 1) {<a name="line.17188"></a>
<span class="sourceLineNo">17189</span> {<a name="line.17189"></a>
<span class="sourceLineNo">17190</span> while (it.hasNext()) {<a name="line.17190"></a>
<span class="sourceLineNo">17191</span> final long iax = it.aLong;<a name="line.17191"></a>
<span class="sourceLineNo">17192</span> final long ibx = it.bLong;<a name="line.17192"></a>
<span class="sourceLineNo">17193</span> byte ox;<a name="line.17193"></a>
<span class="sourceLineNo">17194</span> ox = (byte) ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17194"></a>
<span class="sourceLineNo">17195</span> oai8data[it.oIndex] = ox;<a name="line.17195"></a>
<span class="sourceLineNo">17196</span> }<a name="line.17196"></a>
<span class="sourceLineNo">17197</span> }<a name="line.17197"></a>
<span class="sourceLineNo">17198</span> } else if (as &lt; bs) {<a name="line.17198"></a>
<span class="sourceLineNo">17199</span> {<a name="line.17199"></a>
<span class="sourceLineNo">17200</span> while (it.hasNext()) {<a name="line.17200"></a>
<span class="sourceLineNo">17201</span> final long iax = it.aLong;<a name="line.17201"></a>
<span class="sourceLineNo">17202</span> long ibx = it.bLong;<a name="line.17202"></a>
<span class="sourceLineNo">17203</span> byte ox;<a name="line.17203"></a>
<span class="sourceLineNo">17204</span> ox = (byte) ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17204"></a>
<span class="sourceLineNo">17205</span> oai8data[it.oIndex] = ox;<a name="line.17205"></a>
<span class="sourceLineNo">17206</span> for (int j = 1; j &lt; is; j++) {<a name="line.17206"></a>
<span class="sourceLineNo">17207</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.17207"></a>
<span class="sourceLineNo">17208</span> ox = (byte) ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17208"></a>
<span class="sourceLineNo">17209</span> oai8data[it.oIndex + j] = ox;<a name="line.17209"></a>
<span class="sourceLineNo">17210</span> }<a name="line.17210"></a>
<span class="sourceLineNo">17211</span> }<a name="line.17211"></a>
<span class="sourceLineNo">17212</span> }<a name="line.17212"></a>
<span class="sourceLineNo">17213</span> } else if (as &gt; bs) {<a name="line.17213"></a>
<span class="sourceLineNo">17214</span> {<a name="line.17214"></a>
<span class="sourceLineNo">17215</span> while (it.hasNext()) {<a name="line.17215"></a>
<span class="sourceLineNo">17216</span> long iax = it.aLong;<a name="line.17216"></a>
<span class="sourceLineNo">17217</span> final long ibx = it.bLong;<a name="line.17217"></a>
<span class="sourceLineNo">17218</span> byte ox;<a name="line.17218"></a>
<span class="sourceLineNo">17219</span> ox = (byte) ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17219"></a>
<span class="sourceLineNo">17220</span> oai8data[it.oIndex] = ox;<a name="line.17220"></a>
<span class="sourceLineNo">17221</span> for (int j = 1; j &lt; is; j++) {<a name="line.17221"></a>
<span class="sourceLineNo">17222</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.17222"></a>
<span class="sourceLineNo">17223</span> ox = (byte) ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17223"></a>
<span class="sourceLineNo">17224</span> oai8data[it.oIndex + j] = ox;<a name="line.17224"></a>
<span class="sourceLineNo">17225</span> }<a name="line.17225"></a>
<span class="sourceLineNo">17226</span> }<a name="line.17226"></a>
<span class="sourceLineNo">17227</span> }<a name="line.17227"></a>
<span class="sourceLineNo">17228</span> } else if (as == 1) {<a name="line.17228"></a>
<span class="sourceLineNo">17229</span> {<a name="line.17229"></a>
<span class="sourceLineNo">17230</span> while (it.hasNext()) {<a name="line.17230"></a>
<span class="sourceLineNo">17231</span> final long iax = it.aLong;<a name="line.17231"></a>
<span class="sourceLineNo">17232</span> final long ibx = it.bLong;<a name="line.17232"></a>
<span class="sourceLineNo">17233</span> byte ox;<a name="line.17233"></a>
<span class="sourceLineNo">17234</span> ox = (byte) ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17234"></a>
<span class="sourceLineNo">17235</span> for (int j = 0; j &lt; is; j++) {<a name="line.17235"></a>
<span class="sourceLineNo">17236</span> oai8data[it.oIndex + j] = ox;<a name="line.17236"></a>
<span class="sourceLineNo">17237</span> }<a name="line.17237"></a>
<span class="sourceLineNo">17238</span> }<a name="line.17238"></a>
<span class="sourceLineNo">17239</span> }<a name="line.17239"></a>
<span class="sourceLineNo">17240</span> } else {<a name="line.17240"></a>
<span class="sourceLineNo">17241</span> {<a name="line.17241"></a>
<span class="sourceLineNo">17242</span> while (it.hasNext()) {<a name="line.17242"></a>
<span class="sourceLineNo">17243</span> long iax = it.aLong;<a name="line.17243"></a>
<span class="sourceLineNo">17244</span> long ibx = it.bLong;<a name="line.17244"></a>
<span class="sourceLineNo">17245</span> byte ox;<a name="line.17245"></a>
<span class="sourceLineNo">17246</span> ox = (byte) ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17246"></a>
<span class="sourceLineNo">17247</span> oai8data[it.oIndex] = ox;<a name="line.17247"></a>
<span class="sourceLineNo">17248</span> for (int j = 1; j &lt; is; j++) {<a name="line.17248"></a>
<span class="sourceLineNo">17249</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.17249"></a>
<span class="sourceLineNo">17250</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.17250"></a>
<span class="sourceLineNo">17251</span> ox = (byte) ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17251"></a>
<span class="sourceLineNo">17252</span> oai8data[it.oIndex + j] = ox;<a name="line.17252"></a>
<span class="sourceLineNo">17253</span> }<a name="line.17253"></a>
<span class="sourceLineNo">17254</span> }<a name="line.17254"></a>
<span class="sourceLineNo">17255</span> }<a name="line.17255"></a>
<span class="sourceLineNo">17256</span> }<a name="line.17256"></a>
<span class="sourceLineNo">17257</span> break;<a name="line.17257"></a>
<span class="sourceLineNo">17258</span> case Dataset.ARRAYINT16:<a name="line.17258"></a>
<span class="sourceLineNo">17259</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.17259"></a>
<span class="sourceLineNo">17260</span> unsignedMask = 0xffffL;<a name="line.17260"></a>
<span class="sourceLineNo">17261</span> if (is == 1) {<a name="line.17261"></a>
<span class="sourceLineNo">17262</span> {<a name="line.17262"></a>
<span class="sourceLineNo">17263</span> while (it.hasNext()) {<a name="line.17263"></a>
<span class="sourceLineNo">17264</span> final long iax = it.aLong;<a name="line.17264"></a>
<span class="sourceLineNo">17265</span> final long ibx = it.bLong;<a name="line.17265"></a>
<span class="sourceLineNo">17266</span> short ox;<a name="line.17266"></a>
<span class="sourceLineNo">17267</span> ox = (short) ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17267"></a>
<span class="sourceLineNo">17268</span> oai16data[it.oIndex] = ox;<a name="line.17268"></a>
<span class="sourceLineNo">17269</span> }<a name="line.17269"></a>
<span class="sourceLineNo">17270</span> }<a name="line.17270"></a>
<span class="sourceLineNo">17271</span> } else if (as &lt; bs) {<a name="line.17271"></a>
<span class="sourceLineNo">17272</span> {<a name="line.17272"></a>
<span class="sourceLineNo">17273</span> while (it.hasNext()) {<a name="line.17273"></a>
<span class="sourceLineNo">17274</span> final long iax = it.aLong;<a name="line.17274"></a>
<span class="sourceLineNo">17275</span> long ibx = it.bLong;<a name="line.17275"></a>
<span class="sourceLineNo">17276</span> short ox;<a name="line.17276"></a>
<span class="sourceLineNo">17277</span> ox = (short) ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17277"></a>
<span class="sourceLineNo">17278</span> oai16data[it.oIndex] = ox;<a name="line.17278"></a>
<span class="sourceLineNo">17279</span> for (int j = 1; j &lt; is; j++) {<a name="line.17279"></a>
<span class="sourceLineNo">17280</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.17280"></a>
<span class="sourceLineNo">17281</span> ox = (short) ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17281"></a>
<span class="sourceLineNo">17282</span> oai16data[it.oIndex + j] = ox;<a name="line.17282"></a>
<span class="sourceLineNo">17283</span> }<a name="line.17283"></a>
<span class="sourceLineNo">17284</span> }<a name="line.17284"></a>
<span class="sourceLineNo">17285</span> }<a name="line.17285"></a>
<span class="sourceLineNo">17286</span> } else if (as &gt; bs) {<a name="line.17286"></a>
<span class="sourceLineNo">17287</span> {<a name="line.17287"></a>
<span class="sourceLineNo">17288</span> while (it.hasNext()) {<a name="line.17288"></a>
<span class="sourceLineNo">17289</span> long iax = it.aLong;<a name="line.17289"></a>
<span class="sourceLineNo">17290</span> final long ibx = it.bLong;<a name="line.17290"></a>
<span class="sourceLineNo">17291</span> short ox;<a name="line.17291"></a>
<span class="sourceLineNo">17292</span> ox = (short) ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17292"></a>
<span class="sourceLineNo">17293</span> oai16data[it.oIndex] = ox;<a name="line.17293"></a>
<span class="sourceLineNo">17294</span> for (int j = 1; j &lt; is; j++) {<a name="line.17294"></a>
<span class="sourceLineNo">17295</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.17295"></a>
<span class="sourceLineNo">17296</span> ox = (short) ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17296"></a>
<span class="sourceLineNo">17297</span> oai16data[it.oIndex + j] = ox;<a name="line.17297"></a>
<span class="sourceLineNo">17298</span> }<a name="line.17298"></a>
<span class="sourceLineNo">17299</span> }<a name="line.17299"></a>
<span class="sourceLineNo">17300</span> }<a name="line.17300"></a>
<span class="sourceLineNo">17301</span> } else if (as == 1) {<a name="line.17301"></a>
<span class="sourceLineNo">17302</span> {<a name="line.17302"></a>
<span class="sourceLineNo">17303</span> while (it.hasNext()) {<a name="line.17303"></a>
<span class="sourceLineNo">17304</span> final long iax = it.aLong;<a name="line.17304"></a>
<span class="sourceLineNo">17305</span> final long ibx = it.bLong;<a name="line.17305"></a>
<span class="sourceLineNo">17306</span> short ox;<a name="line.17306"></a>
<span class="sourceLineNo">17307</span> ox = (short) ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17307"></a>
<span class="sourceLineNo">17308</span> for (int j = 0; j &lt; is; j++) {<a name="line.17308"></a>
<span class="sourceLineNo">17309</span> oai16data[it.oIndex + j] = ox;<a name="line.17309"></a>
<span class="sourceLineNo">17310</span> }<a name="line.17310"></a>
<span class="sourceLineNo">17311</span> }<a name="line.17311"></a>
<span class="sourceLineNo">17312</span> }<a name="line.17312"></a>
<span class="sourceLineNo">17313</span> } else {<a name="line.17313"></a>
<span class="sourceLineNo">17314</span> {<a name="line.17314"></a>
<span class="sourceLineNo">17315</span> while (it.hasNext()) {<a name="line.17315"></a>
<span class="sourceLineNo">17316</span> long iax = it.aLong;<a name="line.17316"></a>
<span class="sourceLineNo">17317</span> long ibx = it.bLong;<a name="line.17317"></a>
<span class="sourceLineNo">17318</span> short ox;<a name="line.17318"></a>
<span class="sourceLineNo">17319</span> ox = (short) ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17319"></a>
<span class="sourceLineNo">17320</span> oai16data[it.oIndex] = ox;<a name="line.17320"></a>
<span class="sourceLineNo">17321</span> for (int j = 1; j &lt; is; j++) {<a name="line.17321"></a>
<span class="sourceLineNo">17322</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.17322"></a>
<span class="sourceLineNo">17323</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.17323"></a>
<span class="sourceLineNo">17324</span> ox = (short) ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17324"></a>
<span class="sourceLineNo">17325</span> oai16data[it.oIndex + j] = ox;<a name="line.17325"></a>
<span class="sourceLineNo">17326</span> }<a name="line.17326"></a>
<span class="sourceLineNo">17327</span> }<a name="line.17327"></a>
<span class="sourceLineNo">17328</span> }<a name="line.17328"></a>
<span class="sourceLineNo">17329</span> }<a name="line.17329"></a>
<span class="sourceLineNo">17330</span> break;<a name="line.17330"></a>
<span class="sourceLineNo">17331</span> case Dataset.ARRAYINT64:<a name="line.17331"></a>
<span class="sourceLineNo">17332</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.17332"></a>
<span class="sourceLineNo">17333</span> unsignedMask = 0xffffffffffffffffL;<a name="line.17333"></a>
<span class="sourceLineNo">17334</span> if (is == 1) {<a name="line.17334"></a>
<span class="sourceLineNo">17335</span> {<a name="line.17335"></a>
<span class="sourceLineNo">17336</span> while (it.hasNext()) {<a name="line.17336"></a>
<span class="sourceLineNo">17337</span> final long iax = it.aLong;<a name="line.17337"></a>
<span class="sourceLineNo">17338</span> final long ibx = it.bLong;<a name="line.17338"></a>
<span class="sourceLineNo">17339</span> long ox;<a name="line.17339"></a>
<span class="sourceLineNo">17340</span> ox = ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17340"></a>
<span class="sourceLineNo">17341</span> oai64data[it.oIndex] = ox;<a name="line.17341"></a>
<span class="sourceLineNo">17342</span> }<a name="line.17342"></a>
<span class="sourceLineNo">17343</span> }<a name="line.17343"></a>
<span class="sourceLineNo">17344</span> } else if (as &lt; bs) {<a name="line.17344"></a>
<span class="sourceLineNo">17345</span> {<a name="line.17345"></a>
<span class="sourceLineNo">17346</span> while (it.hasNext()) {<a name="line.17346"></a>
<span class="sourceLineNo">17347</span> final long iax = it.aLong;<a name="line.17347"></a>
<span class="sourceLineNo">17348</span> long ibx = it.bLong;<a name="line.17348"></a>
<span class="sourceLineNo">17349</span> long ox;<a name="line.17349"></a>
<span class="sourceLineNo">17350</span> ox = ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17350"></a>
<span class="sourceLineNo">17351</span> oai64data[it.oIndex] = ox;<a name="line.17351"></a>
<span class="sourceLineNo">17352</span> for (int j = 1; j &lt; is; j++) {<a name="line.17352"></a>
<span class="sourceLineNo">17353</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.17353"></a>
<span class="sourceLineNo">17354</span> ox = ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17354"></a>
<span class="sourceLineNo">17355</span> oai64data[it.oIndex + j] = ox;<a name="line.17355"></a>
<span class="sourceLineNo">17356</span> }<a name="line.17356"></a>
<span class="sourceLineNo">17357</span> }<a name="line.17357"></a>
<span class="sourceLineNo">17358</span> }<a name="line.17358"></a>
<span class="sourceLineNo">17359</span> } else if (as &gt; bs) {<a name="line.17359"></a>
<span class="sourceLineNo">17360</span> {<a name="line.17360"></a>
<span class="sourceLineNo">17361</span> while (it.hasNext()) {<a name="line.17361"></a>
<span class="sourceLineNo">17362</span> long iax = it.aLong;<a name="line.17362"></a>
<span class="sourceLineNo">17363</span> final long ibx = it.bLong;<a name="line.17363"></a>
<span class="sourceLineNo">17364</span> long ox;<a name="line.17364"></a>
<span class="sourceLineNo">17365</span> ox = ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17365"></a>
<span class="sourceLineNo">17366</span> oai64data[it.oIndex] = ox;<a name="line.17366"></a>
<span class="sourceLineNo">17367</span> for (int j = 1; j &lt; is; j++) {<a name="line.17367"></a>
<span class="sourceLineNo">17368</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.17368"></a>
<span class="sourceLineNo">17369</span> ox = ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17369"></a>
<span class="sourceLineNo">17370</span> oai64data[it.oIndex + j] = ox;<a name="line.17370"></a>
<span class="sourceLineNo">17371</span> }<a name="line.17371"></a>
<span class="sourceLineNo">17372</span> }<a name="line.17372"></a>
<span class="sourceLineNo">17373</span> }<a name="line.17373"></a>
<span class="sourceLineNo">17374</span> } else if (as == 1) {<a name="line.17374"></a>
<span class="sourceLineNo">17375</span> {<a name="line.17375"></a>
<span class="sourceLineNo">17376</span> while (it.hasNext()) {<a name="line.17376"></a>
<span class="sourceLineNo">17377</span> final long iax = it.aLong;<a name="line.17377"></a>
<span class="sourceLineNo">17378</span> final long ibx = it.bLong;<a name="line.17378"></a>
<span class="sourceLineNo">17379</span> long ox;<a name="line.17379"></a>
<span class="sourceLineNo">17380</span> ox = ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17380"></a>
<span class="sourceLineNo">17381</span> for (int j = 0; j &lt; is; j++) {<a name="line.17381"></a>
<span class="sourceLineNo">17382</span> oai64data[it.oIndex + j] = ox;<a name="line.17382"></a>
<span class="sourceLineNo">17383</span> }<a name="line.17383"></a>
<span class="sourceLineNo">17384</span> }<a name="line.17384"></a>
<span class="sourceLineNo">17385</span> }<a name="line.17385"></a>
<span class="sourceLineNo">17386</span> } else {<a name="line.17386"></a>
<span class="sourceLineNo">17387</span> {<a name="line.17387"></a>
<span class="sourceLineNo">17388</span> while (it.hasNext()) {<a name="line.17388"></a>
<span class="sourceLineNo">17389</span> long iax = it.aLong;<a name="line.17389"></a>
<span class="sourceLineNo">17390</span> long ibx = it.bLong;<a name="line.17390"></a>
<span class="sourceLineNo">17391</span> long ox;<a name="line.17391"></a>
<span class="sourceLineNo">17392</span> ox = ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17392"></a>
<span class="sourceLineNo">17393</span> oai64data[it.oIndex] = ox;<a name="line.17393"></a>
<span class="sourceLineNo">17394</span> for (int j = 1; j &lt; is; j++) {<a name="line.17394"></a>
<span class="sourceLineNo">17395</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.17395"></a>
<span class="sourceLineNo">17396</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.17396"></a>
<span class="sourceLineNo">17397</span> ox = ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17397"></a>
<span class="sourceLineNo">17398</span> oai64data[it.oIndex + j] = ox;<a name="line.17398"></a>
<span class="sourceLineNo">17399</span> }<a name="line.17399"></a>
<span class="sourceLineNo">17400</span> }<a name="line.17400"></a>
<span class="sourceLineNo">17401</span> }<a name="line.17401"></a>
<span class="sourceLineNo">17402</span> }<a name="line.17402"></a>
<span class="sourceLineNo">17403</span> break;<a name="line.17403"></a>
<span class="sourceLineNo">17404</span> case Dataset.ARRAYINT32:<a name="line.17404"></a>
<span class="sourceLineNo">17405</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.17405"></a>
<span class="sourceLineNo">17406</span> unsignedMask = 0xffffffffL;<a name="line.17406"></a>
<span class="sourceLineNo">17407</span> if (is == 1) {<a name="line.17407"></a>
<span class="sourceLineNo">17408</span> {<a name="line.17408"></a>
<span class="sourceLineNo">17409</span> while (it.hasNext()) {<a name="line.17409"></a>
<span class="sourceLineNo">17410</span> final long iax = it.aLong;<a name="line.17410"></a>
<span class="sourceLineNo">17411</span> final long ibx = it.bLong;<a name="line.17411"></a>
<span class="sourceLineNo">17412</span> int ox;<a name="line.17412"></a>
<span class="sourceLineNo">17413</span> ox = (int) ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17413"></a>
<span class="sourceLineNo">17414</span> oai32data[it.oIndex] = ox;<a name="line.17414"></a>
<span class="sourceLineNo">17415</span> }<a name="line.17415"></a>
<span class="sourceLineNo">17416</span> }<a name="line.17416"></a>
<span class="sourceLineNo">17417</span> } else if (as &lt; bs) {<a name="line.17417"></a>
<span class="sourceLineNo">17418</span> {<a name="line.17418"></a>
<span class="sourceLineNo">17419</span> while (it.hasNext()) {<a name="line.17419"></a>
<span class="sourceLineNo">17420</span> final long iax = it.aLong;<a name="line.17420"></a>
<span class="sourceLineNo">17421</span> long ibx = it.bLong;<a name="line.17421"></a>
<span class="sourceLineNo">17422</span> int ox;<a name="line.17422"></a>
<span class="sourceLineNo">17423</span> ox = (int) ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17423"></a>
<span class="sourceLineNo">17424</span> oai32data[it.oIndex] = ox;<a name="line.17424"></a>
<span class="sourceLineNo">17425</span> for (int j = 1; j &lt; is; j++) {<a name="line.17425"></a>
<span class="sourceLineNo">17426</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.17426"></a>
<span class="sourceLineNo">17427</span> ox = (int) ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17427"></a>
<span class="sourceLineNo">17428</span> oai32data[it.oIndex + j] = ox;<a name="line.17428"></a>
<span class="sourceLineNo">17429</span> }<a name="line.17429"></a>
<span class="sourceLineNo">17430</span> }<a name="line.17430"></a>
<span class="sourceLineNo">17431</span> }<a name="line.17431"></a>
<span class="sourceLineNo">17432</span> } else if (as &gt; bs) {<a name="line.17432"></a>
<span class="sourceLineNo">17433</span> {<a name="line.17433"></a>
<span class="sourceLineNo">17434</span> while (it.hasNext()) {<a name="line.17434"></a>
<span class="sourceLineNo">17435</span> long iax = it.aLong;<a name="line.17435"></a>
<span class="sourceLineNo">17436</span> final long ibx = it.bLong;<a name="line.17436"></a>
<span class="sourceLineNo">17437</span> int ox;<a name="line.17437"></a>
<span class="sourceLineNo">17438</span> ox = (int) ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17438"></a>
<span class="sourceLineNo">17439</span> oai32data[it.oIndex] = ox;<a name="line.17439"></a>
<span class="sourceLineNo">17440</span> for (int j = 1; j &lt; is; j++) {<a name="line.17440"></a>
<span class="sourceLineNo">17441</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.17441"></a>
<span class="sourceLineNo">17442</span> ox = (int) ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17442"></a>
<span class="sourceLineNo">17443</span> oai32data[it.oIndex + j] = ox;<a name="line.17443"></a>
<span class="sourceLineNo">17444</span> }<a name="line.17444"></a>
<span class="sourceLineNo">17445</span> }<a name="line.17445"></a>
<span class="sourceLineNo">17446</span> }<a name="line.17446"></a>
<span class="sourceLineNo">17447</span> } else if (as == 1) {<a name="line.17447"></a>
<span class="sourceLineNo">17448</span> {<a name="line.17448"></a>
<span class="sourceLineNo">17449</span> while (it.hasNext()) {<a name="line.17449"></a>
<span class="sourceLineNo">17450</span> final long iax = it.aLong;<a name="line.17450"></a>
<span class="sourceLineNo">17451</span> final long ibx = it.bLong;<a name="line.17451"></a>
<span class="sourceLineNo">17452</span> int ox;<a name="line.17452"></a>
<span class="sourceLineNo">17453</span> ox = (int) ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17453"></a>
<span class="sourceLineNo">17454</span> for (int j = 0; j &lt; is; j++) {<a name="line.17454"></a>
<span class="sourceLineNo">17455</span> oai32data[it.oIndex + j] = ox;<a name="line.17455"></a>
<span class="sourceLineNo">17456</span> }<a name="line.17456"></a>
<span class="sourceLineNo">17457</span> }<a name="line.17457"></a>
<span class="sourceLineNo">17458</span> }<a name="line.17458"></a>
<span class="sourceLineNo">17459</span> } else {<a name="line.17459"></a>
<span class="sourceLineNo">17460</span> {<a name="line.17460"></a>
<span class="sourceLineNo">17461</span> while (it.hasNext()) {<a name="line.17461"></a>
<span class="sourceLineNo">17462</span> long iax = it.aLong;<a name="line.17462"></a>
<span class="sourceLineNo">17463</span> long ibx = it.bLong;<a name="line.17463"></a>
<span class="sourceLineNo">17464</span> int ox;<a name="line.17464"></a>
<span class="sourceLineNo">17465</span> ox = (int) ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17465"></a>
<span class="sourceLineNo">17466</span> oai32data[it.oIndex] = ox;<a name="line.17466"></a>
<span class="sourceLineNo">17467</span> for (int j = 1; j &lt; is; j++) {<a name="line.17467"></a>
<span class="sourceLineNo">17468</span> iax = da.getElementLongAbs(it.aIndex + j);<a name="line.17468"></a>
<span class="sourceLineNo">17469</span> ibx = db.getElementLongAbs(it.bIndex + j);<a name="line.17469"></a>
<span class="sourceLineNo">17470</span> ox = (int) ((unsignedMask &amp; iax) &gt;&gt;&gt; ibx);<a name="line.17470"></a>
<span class="sourceLineNo">17471</span> oai32data[it.oIndex + j] = ox;<a name="line.17471"></a>
<span class="sourceLineNo">17472</span> }<a name="line.17472"></a>
<span class="sourceLineNo">17473</span> }<a name="line.17473"></a>
<span class="sourceLineNo">17474</span> }<a name="line.17474"></a>
<span class="sourceLineNo">17475</span> }<a name="line.17475"></a>
<span class="sourceLineNo">17476</span> break;<a name="line.17476"></a>
<span class="sourceLineNo">17477</span> default:<a name="line.17477"></a>
<span class="sourceLineNo">17478</span> throw new IllegalArgumentException("unsignedRightShift supports integer, compound integer datasets only");<a name="line.17478"></a>
<span class="sourceLineNo">17479</span> }<a name="line.17479"></a>
<span class="sourceLineNo">17480</span><a name="line.17480"></a>
<span class="sourceLineNo">17481</span> addBinaryOperatorName(da, db, result, "&gt;&gt;&gt;");<a name="line.17481"></a>
<span class="sourceLineNo">17482</span> return result;<a name="line.17482"></a>
<span class="sourceLineNo">17483</span> }<a name="line.17483"></a>
<span class="sourceLineNo">17484</span><a name="line.17484"></a>
<span class="sourceLineNo">17485</span> /**<a name="line.17485"></a>
<span class="sourceLineNo">17486</span> * bitwiseInvert - {@code ~a}, bitwise invert (or NOT) each element<a name="line.17486"></a>
<span class="sourceLineNo">17487</span> * @param a<a name="line.17487"></a>
<span class="sourceLineNo">17488</span> * @return dataset<a name="line.17488"></a>
<span class="sourceLineNo">17489</span> */<a name="line.17489"></a>
<span class="sourceLineNo">17490</span> public static Dataset bitwiseInvert(final Object a) {<a name="line.17490"></a>
<span class="sourceLineNo">17491</span> return bitwiseInvert(a, null);<a name="line.17491"></a>
<span class="sourceLineNo">17492</span> }<a name="line.17492"></a>
<span class="sourceLineNo">17493</span><a name="line.17493"></a>
<span class="sourceLineNo">17494</span> /**<a name="line.17494"></a>
<span class="sourceLineNo">17495</span> * bitwiseInvert - {@code ~a}, bitwise invert (or NOT) each element<a name="line.17495"></a>
<span class="sourceLineNo">17496</span> * @param a<a name="line.17496"></a>
<span class="sourceLineNo">17497</span> * @param o output can be null - in which case, a new dataset is created<a name="line.17497"></a>
<span class="sourceLineNo">17498</span> * @return dataset<a name="line.17498"></a>
<span class="sourceLineNo">17499</span> */<a name="line.17499"></a>
<span class="sourceLineNo">17500</span> public static Dataset bitwiseInvert(final Object a, final Dataset o) {<a name="line.17500"></a>
<span class="sourceLineNo">17501</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.17501"></a>
<span class="sourceLineNo">17502</span> SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true, true, true);<a name="line.17502"></a>
<span class="sourceLineNo">17503</span> final Dataset result = it.getOutput();<a name="line.17503"></a>
<span class="sourceLineNo">17504</span> if (!result.isComplex()) {<a name="line.17504"></a>
<span class="sourceLineNo">17505</span> if (da.isComplex()) {<a name="line.17505"></a>
<span class="sourceLineNo">17506</span> da = da.getRealView();<a name="line.17506"></a>
<span class="sourceLineNo">17507</span> it = new SingleInputBroadcastIterator(da, result, true, true, true);<a name="line.17507"></a>
<span class="sourceLineNo">17508</span> }<a name="line.17508"></a>
<span class="sourceLineNo">17509</span> }<a name="line.17509"></a>
<span class="sourceLineNo">17510</span> final int is = result.getElementsPerItem();<a name="line.17510"></a>
<span class="sourceLineNo">17511</span> final int as = da.getElementsPerItem();<a name="line.17511"></a>
<span class="sourceLineNo">17512</span> final int dt = result.getDType();<a name="line.17512"></a>
<span class="sourceLineNo">17513</span><a name="line.17513"></a>
<span class="sourceLineNo">17514</span> switch(dt) {<a name="line.17514"></a>
<span class="sourceLineNo">17515</span> case Dataset.INT8:<a name="line.17515"></a>
<span class="sourceLineNo">17516</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.17516"></a>
<span class="sourceLineNo">17517</span> {<a name="line.17517"></a>
<span class="sourceLineNo">17518</span> while (it.hasNext()) {<a name="line.17518"></a>
<span class="sourceLineNo">17519</span> final long ix = it.aLong;<a name="line.17519"></a>
<span class="sourceLineNo">17520</span> byte ox;<a name="line.17520"></a>
<span class="sourceLineNo">17521</span> ox = (byte) toLong(~ix);<a name="line.17521"></a>
<span class="sourceLineNo">17522</span> oi8data[it.oIndex] = ox;<a name="line.17522"></a>
<span class="sourceLineNo">17523</span> }<a name="line.17523"></a>
<span class="sourceLineNo">17524</span> }<a name="line.17524"></a>
<span class="sourceLineNo">17525</span> break;<a name="line.17525"></a>
<span class="sourceLineNo">17526</span> case Dataset.INT16:<a name="line.17526"></a>
<span class="sourceLineNo">17527</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.17527"></a>
<span class="sourceLineNo">17528</span> {<a name="line.17528"></a>
<span class="sourceLineNo">17529</span> while (it.hasNext()) {<a name="line.17529"></a>
<span class="sourceLineNo">17530</span> final long ix = it.aLong;<a name="line.17530"></a>
<span class="sourceLineNo">17531</span> short ox;<a name="line.17531"></a>
<span class="sourceLineNo">17532</span> ox = (short) toLong(~ix);<a name="line.17532"></a>
<span class="sourceLineNo">17533</span> oi16data[it.oIndex] = ox;<a name="line.17533"></a>
<span class="sourceLineNo">17534</span> }<a name="line.17534"></a>
<span class="sourceLineNo">17535</span> }<a name="line.17535"></a>
<span class="sourceLineNo">17536</span> break;<a name="line.17536"></a>
<span class="sourceLineNo">17537</span> case Dataset.INT64:<a name="line.17537"></a>
<span class="sourceLineNo">17538</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.17538"></a>
<span class="sourceLineNo">17539</span> {<a name="line.17539"></a>
<span class="sourceLineNo">17540</span> while (it.hasNext()) {<a name="line.17540"></a>
<span class="sourceLineNo">17541</span> final long ix = it.aLong;<a name="line.17541"></a>
<span class="sourceLineNo">17542</span> long ox;<a name="line.17542"></a>
<span class="sourceLineNo">17543</span> ox = toLong(~ix);<a name="line.17543"></a>
<span class="sourceLineNo">17544</span> oi64data[it.oIndex] = ox;<a name="line.17544"></a>
<span class="sourceLineNo">17545</span> }<a name="line.17545"></a>
<span class="sourceLineNo">17546</span> }<a name="line.17546"></a>
<span class="sourceLineNo">17547</span> break;<a name="line.17547"></a>
<span class="sourceLineNo">17548</span> case Dataset.INT32:<a name="line.17548"></a>
<span class="sourceLineNo">17549</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.17549"></a>
<span class="sourceLineNo">17550</span> {<a name="line.17550"></a>
<span class="sourceLineNo">17551</span> while (it.hasNext()) {<a name="line.17551"></a>
<span class="sourceLineNo">17552</span> final long ix = it.aLong;<a name="line.17552"></a>
<span class="sourceLineNo">17553</span> int ox;<a name="line.17553"></a>
<span class="sourceLineNo">17554</span> ox = (int) toLong(~ix);<a name="line.17554"></a>
<span class="sourceLineNo">17555</span> oi32data[it.oIndex] = ox;<a name="line.17555"></a>
<span class="sourceLineNo">17556</span> }<a name="line.17556"></a>
<span class="sourceLineNo">17557</span> }<a name="line.17557"></a>
<span class="sourceLineNo">17558</span> break;<a name="line.17558"></a>
<span class="sourceLineNo">17559</span> case Dataset.ARRAYINT8:<a name="line.17559"></a>
<span class="sourceLineNo">17560</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.17560"></a>
<span class="sourceLineNo">17561</span> if (is == 1) {<a name="line.17561"></a>
<span class="sourceLineNo">17562</span> {<a name="line.17562"></a>
<span class="sourceLineNo">17563</span> while (it.hasNext()) {<a name="line.17563"></a>
<span class="sourceLineNo">17564</span> final long ix = it.aLong;<a name="line.17564"></a>
<span class="sourceLineNo">17565</span> byte ox;<a name="line.17565"></a>
<span class="sourceLineNo">17566</span> ox = (byte) toLong(~ix);<a name="line.17566"></a>
<span class="sourceLineNo">17567</span> oai8data[it.oIndex] = ox;<a name="line.17567"></a>
<span class="sourceLineNo">17568</span> }<a name="line.17568"></a>
<span class="sourceLineNo">17569</span> }<a name="line.17569"></a>
<span class="sourceLineNo">17570</span> } else if (as == 1) {<a name="line.17570"></a>
<span class="sourceLineNo">17571</span> {<a name="line.17571"></a>
<span class="sourceLineNo">17572</span> while (it.hasNext()) {<a name="line.17572"></a>
<span class="sourceLineNo">17573</span> final long ix = it.aLong;<a name="line.17573"></a>
<span class="sourceLineNo">17574</span> byte ox;<a name="line.17574"></a>
<span class="sourceLineNo">17575</span> ox = (byte) toLong(~ix);<a name="line.17575"></a>
<span class="sourceLineNo">17576</span> for (int j = 0; j &lt; is; j++) {<a name="line.17576"></a>
<span class="sourceLineNo">17577</span> oai8data[it.oIndex + j] = ox;<a name="line.17577"></a>
<span class="sourceLineNo">17578</span> }<a name="line.17578"></a>
<span class="sourceLineNo">17579</span> }<a name="line.17579"></a>
<span class="sourceLineNo">17580</span> }<a name="line.17580"></a>
<span class="sourceLineNo">17581</span> } else {<a name="line.17581"></a>
<span class="sourceLineNo">17582</span> {<a name="line.17582"></a>
<span class="sourceLineNo">17583</span> while (it.hasNext()) {<a name="line.17583"></a>
<span class="sourceLineNo">17584</span> for (int j = 0; j &lt; is; j++) {<a name="line.17584"></a>
<span class="sourceLineNo">17585</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.17585"></a>
<span class="sourceLineNo">17586</span> byte ox;<a name="line.17586"></a>
<span class="sourceLineNo">17587</span> ox = (byte) toLong(~ix);<a name="line.17587"></a>
<span class="sourceLineNo">17588</span> oai8data[it.oIndex + j] = ox;<a name="line.17588"></a>
<span class="sourceLineNo">17589</span> }<a name="line.17589"></a>
<span class="sourceLineNo">17590</span> }<a name="line.17590"></a>
<span class="sourceLineNo">17591</span> }<a name="line.17591"></a>
<span class="sourceLineNo">17592</span> }<a name="line.17592"></a>
<span class="sourceLineNo">17593</span> break;<a name="line.17593"></a>
<span class="sourceLineNo">17594</span> case Dataset.ARRAYINT16:<a name="line.17594"></a>
<span class="sourceLineNo">17595</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.17595"></a>
<span class="sourceLineNo">17596</span> if (is == 1) {<a name="line.17596"></a>
<span class="sourceLineNo">17597</span> {<a name="line.17597"></a>
<span class="sourceLineNo">17598</span> while (it.hasNext()) {<a name="line.17598"></a>
<span class="sourceLineNo">17599</span> final long ix = it.aLong;<a name="line.17599"></a>
<span class="sourceLineNo">17600</span> short ox;<a name="line.17600"></a>
<span class="sourceLineNo">17601</span> ox = (short) toLong(~ix);<a name="line.17601"></a>
<span class="sourceLineNo">17602</span> oai16data[it.oIndex] = ox;<a name="line.17602"></a>
<span class="sourceLineNo">17603</span> }<a name="line.17603"></a>
<span class="sourceLineNo">17604</span> }<a name="line.17604"></a>
<span class="sourceLineNo">17605</span> } else if (as == 1) {<a name="line.17605"></a>
<span class="sourceLineNo">17606</span> {<a name="line.17606"></a>
<span class="sourceLineNo">17607</span> while (it.hasNext()) {<a name="line.17607"></a>
<span class="sourceLineNo">17608</span> final long ix = it.aLong;<a name="line.17608"></a>
<span class="sourceLineNo">17609</span> short ox;<a name="line.17609"></a>
<span class="sourceLineNo">17610</span> ox = (short) toLong(~ix);<a name="line.17610"></a>
<span class="sourceLineNo">17611</span> for (int j = 0; j &lt; is; j++) {<a name="line.17611"></a>
<span class="sourceLineNo">17612</span> oai16data[it.oIndex + j] = ox;<a name="line.17612"></a>
<span class="sourceLineNo">17613</span> }<a name="line.17613"></a>
<span class="sourceLineNo">17614</span> }<a name="line.17614"></a>
<span class="sourceLineNo">17615</span> }<a name="line.17615"></a>
<span class="sourceLineNo">17616</span> } else {<a name="line.17616"></a>
<span class="sourceLineNo">17617</span> {<a name="line.17617"></a>
<span class="sourceLineNo">17618</span> while (it.hasNext()) {<a name="line.17618"></a>
<span class="sourceLineNo">17619</span> for (int j = 0; j &lt; is; j++) {<a name="line.17619"></a>
<span class="sourceLineNo">17620</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.17620"></a>
<span class="sourceLineNo">17621</span> short ox;<a name="line.17621"></a>
<span class="sourceLineNo">17622</span> ox = (short) toLong(~ix);<a name="line.17622"></a>
<span class="sourceLineNo">17623</span> oai16data[it.oIndex + j] = ox;<a name="line.17623"></a>
<span class="sourceLineNo">17624</span> }<a name="line.17624"></a>
<span class="sourceLineNo">17625</span> }<a name="line.17625"></a>
<span class="sourceLineNo">17626</span> }<a name="line.17626"></a>
<span class="sourceLineNo">17627</span> }<a name="line.17627"></a>
<span class="sourceLineNo">17628</span> break;<a name="line.17628"></a>
<span class="sourceLineNo">17629</span> case Dataset.ARRAYINT64:<a name="line.17629"></a>
<span class="sourceLineNo">17630</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.17630"></a>
<span class="sourceLineNo">17631</span> if (is == 1) {<a name="line.17631"></a>
<span class="sourceLineNo">17632</span> {<a name="line.17632"></a>
<span class="sourceLineNo">17633</span> while (it.hasNext()) {<a name="line.17633"></a>
<span class="sourceLineNo">17634</span> final long ix = it.aLong;<a name="line.17634"></a>
<span class="sourceLineNo">17635</span> long ox;<a name="line.17635"></a>
<span class="sourceLineNo">17636</span> ox = toLong(~ix);<a name="line.17636"></a>
<span class="sourceLineNo">17637</span> oai64data[it.oIndex] = ox;<a name="line.17637"></a>
<span class="sourceLineNo">17638</span> }<a name="line.17638"></a>
<span class="sourceLineNo">17639</span> }<a name="line.17639"></a>
<span class="sourceLineNo">17640</span> } else if (as == 1) {<a name="line.17640"></a>
<span class="sourceLineNo">17641</span> {<a name="line.17641"></a>
<span class="sourceLineNo">17642</span> while (it.hasNext()) {<a name="line.17642"></a>
<span class="sourceLineNo">17643</span> final long ix = it.aLong;<a name="line.17643"></a>
<span class="sourceLineNo">17644</span> long ox;<a name="line.17644"></a>
<span class="sourceLineNo">17645</span> ox = toLong(~ix);<a name="line.17645"></a>
<span class="sourceLineNo">17646</span> for (int j = 0; j &lt; is; j++) {<a name="line.17646"></a>
<span class="sourceLineNo">17647</span> oai64data[it.oIndex + j] = ox;<a name="line.17647"></a>
<span class="sourceLineNo">17648</span> }<a name="line.17648"></a>
<span class="sourceLineNo">17649</span> }<a name="line.17649"></a>
<span class="sourceLineNo">17650</span> }<a name="line.17650"></a>
<span class="sourceLineNo">17651</span> } else {<a name="line.17651"></a>
<span class="sourceLineNo">17652</span> {<a name="line.17652"></a>
<span class="sourceLineNo">17653</span> while (it.hasNext()) {<a name="line.17653"></a>
<span class="sourceLineNo">17654</span> for (int j = 0; j &lt; is; j++) {<a name="line.17654"></a>
<span class="sourceLineNo">17655</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.17655"></a>
<span class="sourceLineNo">17656</span> long ox;<a name="line.17656"></a>
<span class="sourceLineNo">17657</span> ox = toLong(~ix);<a name="line.17657"></a>
<span class="sourceLineNo">17658</span> oai64data[it.oIndex + j] = ox;<a name="line.17658"></a>
<span class="sourceLineNo">17659</span> }<a name="line.17659"></a>
<span class="sourceLineNo">17660</span> }<a name="line.17660"></a>
<span class="sourceLineNo">17661</span> }<a name="line.17661"></a>
<span class="sourceLineNo">17662</span> }<a name="line.17662"></a>
<span class="sourceLineNo">17663</span> break;<a name="line.17663"></a>
<span class="sourceLineNo">17664</span> case Dataset.ARRAYINT32:<a name="line.17664"></a>
<span class="sourceLineNo">17665</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.17665"></a>
<span class="sourceLineNo">17666</span> if (is == 1) {<a name="line.17666"></a>
<span class="sourceLineNo">17667</span> {<a name="line.17667"></a>
<span class="sourceLineNo">17668</span> while (it.hasNext()) {<a name="line.17668"></a>
<span class="sourceLineNo">17669</span> final long ix = it.aLong;<a name="line.17669"></a>
<span class="sourceLineNo">17670</span> int ox;<a name="line.17670"></a>
<span class="sourceLineNo">17671</span> ox = (int) toLong(~ix);<a name="line.17671"></a>
<span class="sourceLineNo">17672</span> oai32data[it.oIndex] = ox;<a name="line.17672"></a>
<span class="sourceLineNo">17673</span> }<a name="line.17673"></a>
<span class="sourceLineNo">17674</span> }<a name="line.17674"></a>
<span class="sourceLineNo">17675</span> } else if (as == 1) {<a name="line.17675"></a>
<span class="sourceLineNo">17676</span> {<a name="line.17676"></a>
<span class="sourceLineNo">17677</span> while (it.hasNext()) {<a name="line.17677"></a>
<span class="sourceLineNo">17678</span> final long ix = it.aLong;<a name="line.17678"></a>
<span class="sourceLineNo">17679</span> int ox;<a name="line.17679"></a>
<span class="sourceLineNo">17680</span> ox = (int) toLong(~ix);<a name="line.17680"></a>
<span class="sourceLineNo">17681</span> for (int j = 0; j &lt; is; j++) {<a name="line.17681"></a>
<span class="sourceLineNo">17682</span> oai32data[it.oIndex + j] = ox;<a name="line.17682"></a>
<span class="sourceLineNo">17683</span> }<a name="line.17683"></a>
<span class="sourceLineNo">17684</span> }<a name="line.17684"></a>
<span class="sourceLineNo">17685</span> }<a name="line.17685"></a>
<span class="sourceLineNo">17686</span> } else {<a name="line.17686"></a>
<span class="sourceLineNo">17687</span> {<a name="line.17687"></a>
<span class="sourceLineNo">17688</span> while (it.hasNext()) {<a name="line.17688"></a>
<span class="sourceLineNo">17689</span> for (int j = 0; j &lt; is; j++) {<a name="line.17689"></a>
<span class="sourceLineNo">17690</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.17690"></a>
<span class="sourceLineNo">17691</span> int ox;<a name="line.17691"></a>
<span class="sourceLineNo">17692</span> ox = (int) toLong(~ix);<a name="line.17692"></a>
<span class="sourceLineNo">17693</span> oai32data[it.oIndex + j] = ox;<a name="line.17693"></a>
<span class="sourceLineNo">17694</span> }<a name="line.17694"></a>
<span class="sourceLineNo">17695</span> }<a name="line.17695"></a>
<span class="sourceLineNo">17696</span> }<a name="line.17696"></a>
<span class="sourceLineNo">17697</span> }<a name="line.17697"></a>
<span class="sourceLineNo">17698</span> break;<a name="line.17698"></a>
<span class="sourceLineNo">17699</span> default:<a name="line.17699"></a>
<span class="sourceLineNo">17700</span> throw new IllegalArgumentException("bitwiseInvert supports integer, compound integer datasets only");<a name="line.17700"></a>
<span class="sourceLineNo">17701</span> }<a name="line.17701"></a>
<span class="sourceLineNo">17702</span><a name="line.17702"></a>
<span class="sourceLineNo">17703</span> addFunctionName(result, "bitwiseInvert");<a name="line.17703"></a>
<span class="sourceLineNo">17704</span> return result;<a name="line.17704"></a>
<span class="sourceLineNo">17705</span> }<a name="line.17705"></a>
<span class="sourceLineNo">17706</span><a name="line.17706"></a>
<span class="sourceLineNo">17707</span> /**<a name="line.17707"></a>
<span class="sourceLineNo">17708</span> * sin - evaluate the sine function on each element of the dataset<a name="line.17708"></a>
<span class="sourceLineNo">17709</span> * @param a<a name="line.17709"></a>
<span class="sourceLineNo">17710</span> * @return dataset<a name="line.17710"></a>
<span class="sourceLineNo">17711</span> */<a name="line.17711"></a>
<span class="sourceLineNo">17712</span> public static Dataset sin(final Object a) {<a name="line.17712"></a>
<span class="sourceLineNo">17713</span> return sin(a, null);<a name="line.17713"></a>
<span class="sourceLineNo">17714</span> }<a name="line.17714"></a>
<span class="sourceLineNo">17715</span><a name="line.17715"></a>
<span class="sourceLineNo">17716</span> /**<a name="line.17716"></a>
<span class="sourceLineNo">17717</span> * sin - evaluate the sine function on each element of the dataset<a name="line.17717"></a>
<span class="sourceLineNo">17718</span> * @param a<a name="line.17718"></a>
<span class="sourceLineNo">17719</span> * @param o output can be null - in which case, a new dataset is created<a name="line.17719"></a>
<span class="sourceLineNo">17720</span> * @return dataset<a name="line.17720"></a>
<span class="sourceLineNo">17721</span> */<a name="line.17721"></a>
<span class="sourceLineNo">17722</span> public static Dataset sin(final Object a, final Dataset o) {<a name="line.17722"></a>
<span class="sourceLineNo">17723</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.17723"></a>
<span class="sourceLineNo">17724</span> SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true);<a name="line.17724"></a>
<span class="sourceLineNo">17725</span> final Dataset result = it.getOutput();<a name="line.17725"></a>
<span class="sourceLineNo">17726</span> if (!result.isComplex()) {<a name="line.17726"></a>
<span class="sourceLineNo">17727</span> if (da.isComplex()) {<a name="line.17727"></a>
<span class="sourceLineNo">17728</span> da = da.getRealView();<a name="line.17728"></a>
<span class="sourceLineNo">17729</span> it = new SingleInputBroadcastIterator(da, result, true);<a name="line.17729"></a>
<span class="sourceLineNo">17730</span> }<a name="line.17730"></a>
<span class="sourceLineNo">17731</span> }<a name="line.17731"></a>
<span class="sourceLineNo">17732</span> final int is = result.getElementsPerItem();<a name="line.17732"></a>
<span class="sourceLineNo">17733</span> final int as = da.getElementsPerItem();<a name="line.17733"></a>
<span class="sourceLineNo">17734</span> final int dt = result.getDType();<a name="line.17734"></a>
<span class="sourceLineNo">17735</span><a name="line.17735"></a>
<span class="sourceLineNo">17736</span> switch(dt) {<a name="line.17736"></a>
<span class="sourceLineNo">17737</span> case Dataset.INT8:<a name="line.17737"></a>
<span class="sourceLineNo">17738</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.17738"></a>
<span class="sourceLineNo">17739</span> if (it.isOutputDouble()) {<a name="line.17739"></a>
<span class="sourceLineNo">17740</span> while (it.hasNext()) {<a name="line.17740"></a>
<span class="sourceLineNo">17741</span> final double ix = it.aDouble;<a name="line.17741"></a>
<span class="sourceLineNo">17742</span> byte ox;<a name="line.17742"></a>
<span class="sourceLineNo">17743</span> ox = (byte) toLong(Math.sin(ix));<a name="line.17743"></a>
<span class="sourceLineNo">17744</span> oi8data[it.oIndex] = ox;<a name="line.17744"></a>
<span class="sourceLineNo">17745</span> }<a name="line.17745"></a>
<span class="sourceLineNo">17746</span> } else {<a name="line.17746"></a>
<span class="sourceLineNo">17747</span> while (it.hasNext()) {<a name="line.17747"></a>
<span class="sourceLineNo">17748</span> final long ix = it.aLong;<a name="line.17748"></a>
<span class="sourceLineNo">17749</span> byte ox;<a name="line.17749"></a>
<span class="sourceLineNo">17750</span> ox = (byte) toLong(Math.sin(ix));<a name="line.17750"></a>
<span class="sourceLineNo">17751</span> oi8data[it.oIndex] = ox;<a name="line.17751"></a>
<span class="sourceLineNo">17752</span> }<a name="line.17752"></a>
<span class="sourceLineNo">17753</span> }<a name="line.17753"></a>
<span class="sourceLineNo">17754</span> break;<a name="line.17754"></a>
<span class="sourceLineNo">17755</span> case Dataset.INT16:<a name="line.17755"></a>
<span class="sourceLineNo">17756</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.17756"></a>
<span class="sourceLineNo">17757</span> if (it.isOutputDouble()) {<a name="line.17757"></a>
<span class="sourceLineNo">17758</span> while (it.hasNext()) {<a name="line.17758"></a>
<span class="sourceLineNo">17759</span> final double ix = it.aDouble;<a name="line.17759"></a>
<span class="sourceLineNo">17760</span> short ox;<a name="line.17760"></a>
<span class="sourceLineNo">17761</span> ox = (short) toLong(Math.sin(ix));<a name="line.17761"></a>
<span class="sourceLineNo">17762</span> oi16data[it.oIndex] = ox;<a name="line.17762"></a>
<span class="sourceLineNo">17763</span> }<a name="line.17763"></a>
<span class="sourceLineNo">17764</span> } else {<a name="line.17764"></a>
<span class="sourceLineNo">17765</span> while (it.hasNext()) {<a name="line.17765"></a>
<span class="sourceLineNo">17766</span> final long ix = it.aLong;<a name="line.17766"></a>
<span class="sourceLineNo">17767</span> short ox;<a name="line.17767"></a>
<span class="sourceLineNo">17768</span> ox = (short) toLong(Math.sin(ix));<a name="line.17768"></a>
<span class="sourceLineNo">17769</span> oi16data[it.oIndex] = ox;<a name="line.17769"></a>
<span class="sourceLineNo">17770</span> }<a name="line.17770"></a>
<span class="sourceLineNo">17771</span> }<a name="line.17771"></a>
<span class="sourceLineNo">17772</span> break;<a name="line.17772"></a>
<span class="sourceLineNo">17773</span> case Dataset.INT64:<a name="line.17773"></a>
<span class="sourceLineNo">17774</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.17774"></a>
<span class="sourceLineNo">17775</span> if (it.isOutputDouble()) {<a name="line.17775"></a>
<span class="sourceLineNo">17776</span> while (it.hasNext()) {<a name="line.17776"></a>
<span class="sourceLineNo">17777</span> final double ix = it.aDouble;<a name="line.17777"></a>
<span class="sourceLineNo">17778</span> long ox;<a name="line.17778"></a>
<span class="sourceLineNo">17779</span> ox = toLong(Math.sin(ix));<a name="line.17779"></a>
<span class="sourceLineNo">17780</span> oi64data[it.oIndex] = ox;<a name="line.17780"></a>
<span class="sourceLineNo">17781</span> }<a name="line.17781"></a>
<span class="sourceLineNo">17782</span> } else {<a name="line.17782"></a>
<span class="sourceLineNo">17783</span> while (it.hasNext()) {<a name="line.17783"></a>
<span class="sourceLineNo">17784</span> final long ix = it.aLong;<a name="line.17784"></a>
<span class="sourceLineNo">17785</span> long ox;<a name="line.17785"></a>
<span class="sourceLineNo">17786</span> ox = toLong(Math.sin(ix));<a name="line.17786"></a>
<span class="sourceLineNo">17787</span> oi64data[it.oIndex] = ox;<a name="line.17787"></a>
<span class="sourceLineNo">17788</span> }<a name="line.17788"></a>
<span class="sourceLineNo">17789</span> }<a name="line.17789"></a>
<span class="sourceLineNo">17790</span> break;<a name="line.17790"></a>
<span class="sourceLineNo">17791</span> case Dataset.INT32:<a name="line.17791"></a>
<span class="sourceLineNo">17792</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.17792"></a>
<span class="sourceLineNo">17793</span> if (it.isOutputDouble()) {<a name="line.17793"></a>
<span class="sourceLineNo">17794</span> while (it.hasNext()) {<a name="line.17794"></a>
<span class="sourceLineNo">17795</span> final double ix = it.aDouble;<a name="line.17795"></a>
<span class="sourceLineNo">17796</span> int ox;<a name="line.17796"></a>
<span class="sourceLineNo">17797</span> ox = (int) toLong(Math.sin(ix));<a name="line.17797"></a>
<span class="sourceLineNo">17798</span> oi32data[it.oIndex] = ox;<a name="line.17798"></a>
<span class="sourceLineNo">17799</span> }<a name="line.17799"></a>
<span class="sourceLineNo">17800</span> } else {<a name="line.17800"></a>
<span class="sourceLineNo">17801</span> while (it.hasNext()) {<a name="line.17801"></a>
<span class="sourceLineNo">17802</span> final long ix = it.aLong;<a name="line.17802"></a>
<span class="sourceLineNo">17803</span> int ox;<a name="line.17803"></a>
<span class="sourceLineNo">17804</span> ox = (int) toLong(Math.sin(ix));<a name="line.17804"></a>
<span class="sourceLineNo">17805</span> oi32data[it.oIndex] = ox;<a name="line.17805"></a>
<span class="sourceLineNo">17806</span> }<a name="line.17806"></a>
<span class="sourceLineNo">17807</span> }<a name="line.17807"></a>
<span class="sourceLineNo">17808</span> break;<a name="line.17808"></a>
<span class="sourceLineNo">17809</span> case Dataset.ARRAYINT8:<a name="line.17809"></a>
<span class="sourceLineNo">17810</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.17810"></a>
<span class="sourceLineNo">17811</span> if (is == 1) {<a name="line.17811"></a>
<span class="sourceLineNo">17812</span> if (it.isOutputDouble()) {<a name="line.17812"></a>
<span class="sourceLineNo">17813</span> while (it.hasNext()) {<a name="line.17813"></a>
<span class="sourceLineNo">17814</span> final double ix = it.aDouble;<a name="line.17814"></a>
<span class="sourceLineNo">17815</span> byte ox;<a name="line.17815"></a>
<span class="sourceLineNo">17816</span> ox = (byte) toLong(Math.sin(ix));<a name="line.17816"></a>
<span class="sourceLineNo">17817</span> oai8data[it.oIndex] = ox;<a name="line.17817"></a>
<span class="sourceLineNo">17818</span> }<a name="line.17818"></a>
<span class="sourceLineNo">17819</span> } else {<a name="line.17819"></a>
<span class="sourceLineNo">17820</span> while (it.hasNext()) {<a name="line.17820"></a>
<span class="sourceLineNo">17821</span> final long ix = it.aLong;<a name="line.17821"></a>
<span class="sourceLineNo">17822</span> byte ox;<a name="line.17822"></a>
<span class="sourceLineNo">17823</span> ox = (byte) toLong(Math.sin(ix));<a name="line.17823"></a>
<span class="sourceLineNo">17824</span> oai8data[it.oIndex] = ox;<a name="line.17824"></a>
<span class="sourceLineNo">17825</span> }<a name="line.17825"></a>
<span class="sourceLineNo">17826</span> }<a name="line.17826"></a>
<span class="sourceLineNo">17827</span> } else if (as == 1) {<a name="line.17827"></a>
<span class="sourceLineNo">17828</span> if (it.isOutputDouble()) {<a name="line.17828"></a>
<span class="sourceLineNo">17829</span> while (it.hasNext()) {<a name="line.17829"></a>
<span class="sourceLineNo">17830</span> final double ix = it.aDouble;<a name="line.17830"></a>
<span class="sourceLineNo">17831</span> byte ox;<a name="line.17831"></a>
<span class="sourceLineNo">17832</span> ox = (byte) toLong(Math.sin(ix));<a name="line.17832"></a>
<span class="sourceLineNo">17833</span> for (int j = 0; j &lt; is; j++) {<a name="line.17833"></a>
<span class="sourceLineNo">17834</span> oai8data[it.oIndex + j] = ox;<a name="line.17834"></a>
<span class="sourceLineNo">17835</span> }<a name="line.17835"></a>
<span class="sourceLineNo">17836</span> }<a name="line.17836"></a>
<span class="sourceLineNo">17837</span> } else {<a name="line.17837"></a>
<span class="sourceLineNo">17838</span> while (it.hasNext()) {<a name="line.17838"></a>
<span class="sourceLineNo">17839</span> final long ix = it.aLong;<a name="line.17839"></a>
<span class="sourceLineNo">17840</span> byte ox;<a name="line.17840"></a>
<span class="sourceLineNo">17841</span> ox = (byte) toLong(Math.sin(ix));<a name="line.17841"></a>
<span class="sourceLineNo">17842</span> for (int j = 0; j &lt; is; j++) {<a name="line.17842"></a>
<span class="sourceLineNo">17843</span> oai8data[it.oIndex + j] = ox;<a name="line.17843"></a>
<span class="sourceLineNo">17844</span> }<a name="line.17844"></a>
<span class="sourceLineNo">17845</span> }<a name="line.17845"></a>
<span class="sourceLineNo">17846</span> }<a name="line.17846"></a>
<span class="sourceLineNo">17847</span> } else {<a name="line.17847"></a>
<span class="sourceLineNo">17848</span> if (it.isOutputDouble()) {<a name="line.17848"></a>
<span class="sourceLineNo">17849</span> while (it.hasNext()) {<a name="line.17849"></a>
<span class="sourceLineNo">17850</span> for (int j = 0; j &lt; is; j++) {<a name="line.17850"></a>
<span class="sourceLineNo">17851</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.17851"></a>
<span class="sourceLineNo">17852</span> byte ox;<a name="line.17852"></a>
<span class="sourceLineNo">17853</span> ox = (byte) toLong(Math.sin(ix));<a name="line.17853"></a>
<span class="sourceLineNo">17854</span> oai8data[it.oIndex + j] = ox;<a name="line.17854"></a>
<span class="sourceLineNo">17855</span> }<a name="line.17855"></a>
<span class="sourceLineNo">17856</span> }<a name="line.17856"></a>
<span class="sourceLineNo">17857</span> } else {<a name="line.17857"></a>
<span class="sourceLineNo">17858</span> while (it.hasNext()) {<a name="line.17858"></a>
<span class="sourceLineNo">17859</span> for (int j = 0; j &lt; is; j++) {<a name="line.17859"></a>
<span class="sourceLineNo">17860</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.17860"></a>
<span class="sourceLineNo">17861</span> byte ox;<a name="line.17861"></a>
<span class="sourceLineNo">17862</span> ox = (byte) toLong(Math.sin(ix));<a name="line.17862"></a>
<span class="sourceLineNo">17863</span> oai8data[it.oIndex + j] = ox;<a name="line.17863"></a>
<span class="sourceLineNo">17864</span> }<a name="line.17864"></a>
<span class="sourceLineNo">17865</span> }<a name="line.17865"></a>
<span class="sourceLineNo">17866</span> }<a name="line.17866"></a>
<span class="sourceLineNo">17867</span> }<a name="line.17867"></a>
<span class="sourceLineNo">17868</span> break;<a name="line.17868"></a>
<span class="sourceLineNo">17869</span> case Dataset.ARRAYINT16:<a name="line.17869"></a>
<span class="sourceLineNo">17870</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.17870"></a>
<span class="sourceLineNo">17871</span> if (is == 1) {<a name="line.17871"></a>
<span class="sourceLineNo">17872</span> if (it.isOutputDouble()) {<a name="line.17872"></a>
<span class="sourceLineNo">17873</span> while (it.hasNext()) {<a name="line.17873"></a>
<span class="sourceLineNo">17874</span> final double ix = it.aDouble;<a name="line.17874"></a>
<span class="sourceLineNo">17875</span> short ox;<a name="line.17875"></a>
<span class="sourceLineNo">17876</span> ox = (short) toLong(Math.sin(ix));<a name="line.17876"></a>
<span class="sourceLineNo">17877</span> oai16data[it.oIndex] = ox;<a name="line.17877"></a>
<span class="sourceLineNo">17878</span> }<a name="line.17878"></a>
<span class="sourceLineNo">17879</span> } else {<a name="line.17879"></a>
<span class="sourceLineNo">17880</span> while (it.hasNext()) {<a name="line.17880"></a>
<span class="sourceLineNo">17881</span> final long ix = it.aLong;<a name="line.17881"></a>
<span class="sourceLineNo">17882</span> short ox;<a name="line.17882"></a>
<span class="sourceLineNo">17883</span> ox = (short) toLong(Math.sin(ix));<a name="line.17883"></a>
<span class="sourceLineNo">17884</span> oai16data[it.oIndex] = ox;<a name="line.17884"></a>
<span class="sourceLineNo">17885</span> }<a name="line.17885"></a>
<span class="sourceLineNo">17886</span> }<a name="line.17886"></a>
<span class="sourceLineNo">17887</span> } else if (as == 1) {<a name="line.17887"></a>
<span class="sourceLineNo">17888</span> if (it.isOutputDouble()) {<a name="line.17888"></a>
<span class="sourceLineNo">17889</span> while (it.hasNext()) {<a name="line.17889"></a>
<span class="sourceLineNo">17890</span> final double ix = it.aDouble;<a name="line.17890"></a>
<span class="sourceLineNo">17891</span> short ox;<a name="line.17891"></a>
<span class="sourceLineNo">17892</span> ox = (short) toLong(Math.sin(ix));<a name="line.17892"></a>
<span class="sourceLineNo">17893</span> for (int j = 0; j &lt; is; j++) {<a name="line.17893"></a>
<span class="sourceLineNo">17894</span> oai16data[it.oIndex + j] = ox;<a name="line.17894"></a>
<span class="sourceLineNo">17895</span> }<a name="line.17895"></a>
<span class="sourceLineNo">17896</span> }<a name="line.17896"></a>
<span class="sourceLineNo">17897</span> } else {<a name="line.17897"></a>
<span class="sourceLineNo">17898</span> while (it.hasNext()) {<a name="line.17898"></a>
<span class="sourceLineNo">17899</span> final long ix = it.aLong;<a name="line.17899"></a>
<span class="sourceLineNo">17900</span> short ox;<a name="line.17900"></a>
<span class="sourceLineNo">17901</span> ox = (short) toLong(Math.sin(ix));<a name="line.17901"></a>
<span class="sourceLineNo">17902</span> for (int j = 0; j &lt; is; j++) {<a name="line.17902"></a>
<span class="sourceLineNo">17903</span> oai16data[it.oIndex + j] = ox;<a name="line.17903"></a>
<span class="sourceLineNo">17904</span> }<a name="line.17904"></a>
<span class="sourceLineNo">17905</span> }<a name="line.17905"></a>
<span class="sourceLineNo">17906</span> }<a name="line.17906"></a>
<span class="sourceLineNo">17907</span> } else {<a name="line.17907"></a>
<span class="sourceLineNo">17908</span> if (it.isOutputDouble()) {<a name="line.17908"></a>
<span class="sourceLineNo">17909</span> while (it.hasNext()) {<a name="line.17909"></a>
<span class="sourceLineNo">17910</span> for (int j = 0; j &lt; is; j++) {<a name="line.17910"></a>
<span class="sourceLineNo">17911</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.17911"></a>
<span class="sourceLineNo">17912</span> short ox;<a name="line.17912"></a>
<span class="sourceLineNo">17913</span> ox = (short) toLong(Math.sin(ix));<a name="line.17913"></a>
<span class="sourceLineNo">17914</span> oai16data[it.oIndex + j] = ox;<a name="line.17914"></a>
<span class="sourceLineNo">17915</span> }<a name="line.17915"></a>
<span class="sourceLineNo">17916</span> }<a name="line.17916"></a>
<span class="sourceLineNo">17917</span> } else {<a name="line.17917"></a>
<span class="sourceLineNo">17918</span> while (it.hasNext()) {<a name="line.17918"></a>
<span class="sourceLineNo">17919</span> for (int j = 0; j &lt; is; j++) {<a name="line.17919"></a>
<span class="sourceLineNo">17920</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.17920"></a>
<span class="sourceLineNo">17921</span> short ox;<a name="line.17921"></a>
<span class="sourceLineNo">17922</span> ox = (short) toLong(Math.sin(ix));<a name="line.17922"></a>
<span class="sourceLineNo">17923</span> oai16data[it.oIndex + j] = ox;<a name="line.17923"></a>
<span class="sourceLineNo">17924</span> }<a name="line.17924"></a>
<span class="sourceLineNo">17925</span> }<a name="line.17925"></a>
<span class="sourceLineNo">17926</span> }<a name="line.17926"></a>
<span class="sourceLineNo">17927</span> }<a name="line.17927"></a>
<span class="sourceLineNo">17928</span> break;<a name="line.17928"></a>
<span class="sourceLineNo">17929</span> case Dataset.ARRAYINT64:<a name="line.17929"></a>
<span class="sourceLineNo">17930</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.17930"></a>
<span class="sourceLineNo">17931</span> if (is == 1) {<a name="line.17931"></a>
<span class="sourceLineNo">17932</span> if (it.isOutputDouble()) {<a name="line.17932"></a>
<span class="sourceLineNo">17933</span> while (it.hasNext()) {<a name="line.17933"></a>
<span class="sourceLineNo">17934</span> final double ix = it.aDouble;<a name="line.17934"></a>
<span class="sourceLineNo">17935</span> long ox;<a name="line.17935"></a>
<span class="sourceLineNo">17936</span> ox = toLong(Math.sin(ix));<a name="line.17936"></a>
<span class="sourceLineNo">17937</span> oai64data[it.oIndex] = ox;<a name="line.17937"></a>
<span class="sourceLineNo">17938</span> }<a name="line.17938"></a>
<span class="sourceLineNo">17939</span> } else {<a name="line.17939"></a>
<span class="sourceLineNo">17940</span> while (it.hasNext()) {<a name="line.17940"></a>
<span class="sourceLineNo">17941</span> final long ix = it.aLong;<a name="line.17941"></a>
<span class="sourceLineNo">17942</span> long ox;<a name="line.17942"></a>
<span class="sourceLineNo">17943</span> ox = toLong(Math.sin(ix));<a name="line.17943"></a>
<span class="sourceLineNo">17944</span> oai64data[it.oIndex] = ox;<a name="line.17944"></a>
<span class="sourceLineNo">17945</span> }<a name="line.17945"></a>
<span class="sourceLineNo">17946</span> }<a name="line.17946"></a>
<span class="sourceLineNo">17947</span> } else if (as == 1) {<a name="line.17947"></a>
<span class="sourceLineNo">17948</span> if (it.isOutputDouble()) {<a name="line.17948"></a>
<span class="sourceLineNo">17949</span> while (it.hasNext()) {<a name="line.17949"></a>
<span class="sourceLineNo">17950</span> final double ix = it.aDouble;<a name="line.17950"></a>
<span class="sourceLineNo">17951</span> long ox;<a name="line.17951"></a>
<span class="sourceLineNo">17952</span> ox = toLong(Math.sin(ix));<a name="line.17952"></a>
<span class="sourceLineNo">17953</span> for (int j = 0; j &lt; is; j++) {<a name="line.17953"></a>
<span class="sourceLineNo">17954</span> oai64data[it.oIndex + j] = ox;<a name="line.17954"></a>
<span class="sourceLineNo">17955</span> }<a name="line.17955"></a>
<span class="sourceLineNo">17956</span> }<a name="line.17956"></a>
<span class="sourceLineNo">17957</span> } else {<a name="line.17957"></a>
<span class="sourceLineNo">17958</span> while (it.hasNext()) {<a name="line.17958"></a>
<span class="sourceLineNo">17959</span> final long ix = it.aLong;<a name="line.17959"></a>
<span class="sourceLineNo">17960</span> long ox;<a name="line.17960"></a>
<span class="sourceLineNo">17961</span> ox = toLong(Math.sin(ix));<a name="line.17961"></a>
<span class="sourceLineNo">17962</span> for (int j = 0; j &lt; is; j++) {<a name="line.17962"></a>
<span class="sourceLineNo">17963</span> oai64data[it.oIndex + j] = ox;<a name="line.17963"></a>
<span class="sourceLineNo">17964</span> }<a name="line.17964"></a>
<span class="sourceLineNo">17965</span> }<a name="line.17965"></a>
<span class="sourceLineNo">17966</span> }<a name="line.17966"></a>
<span class="sourceLineNo">17967</span> } else {<a name="line.17967"></a>
<span class="sourceLineNo">17968</span> if (it.isOutputDouble()) {<a name="line.17968"></a>
<span class="sourceLineNo">17969</span> while (it.hasNext()) {<a name="line.17969"></a>
<span class="sourceLineNo">17970</span> for (int j = 0; j &lt; is; j++) {<a name="line.17970"></a>
<span class="sourceLineNo">17971</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.17971"></a>
<span class="sourceLineNo">17972</span> long ox;<a name="line.17972"></a>
<span class="sourceLineNo">17973</span> ox = toLong(Math.sin(ix));<a name="line.17973"></a>
<span class="sourceLineNo">17974</span> oai64data[it.oIndex + j] = ox;<a name="line.17974"></a>
<span class="sourceLineNo">17975</span> }<a name="line.17975"></a>
<span class="sourceLineNo">17976</span> }<a name="line.17976"></a>
<span class="sourceLineNo">17977</span> } else {<a name="line.17977"></a>
<span class="sourceLineNo">17978</span> while (it.hasNext()) {<a name="line.17978"></a>
<span class="sourceLineNo">17979</span> for (int j = 0; j &lt; is; j++) {<a name="line.17979"></a>
<span class="sourceLineNo">17980</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.17980"></a>
<span class="sourceLineNo">17981</span> long ox;<a name="line.17981"></a>
<span class="sourceLineNo">17982</span> ox = toLong(Math.sin(ix));<a name="line.17982"></a>
<span class="sourceLineNo">17983</span> oai64data[it.oIndex + j] = ox;<a name="line.17983"></a>
<span class="sourceLineNo">17984</span> }<a name="line.17984"></a>
<span class="sourceLineNo">17985</span> }<a name="line.17985"></a>
<span class="sourceLineNo">17986</span> }<a name="line.17986"></a>
<span class="sourceLineNo">17987</span> }<a name="line.17987"></a>
<span class="sourceLineNo">17988</span> break;<a name="line.17988"></a>
<span class="sourceLineNo">17989</span> case Dataset.ARRAYINT32:<a name="line.17989"></a>
<span class="sourceLineNo">17990</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.17990"></a>
<span class="sourceLineNo">17991</span> if (is == 1) {<a name="line.17991"></a>
<span class="sourceLineNo">17992</span> if (it.isOutputDouble()) {<a name="line.17992"></a>
<span class="sourceLineNo">17993</span> while (it.hasNext()) {<a name="line.17993"></a>
<span class="sourceLineNo">17994</span> final double ix = it.aDouble;<a name="line.17994"></a>
<span class="sourceLineNo">17995</span> int ox;<a name="line.17995"></a>
<span class="sourceLineNo">17996</span> ox = (int) toLong(Math.sin(ix));<a name="line.17996"></a>
<span class="sourceLineNo">17997</span> oai32data[it.oIndex] = ox;<a name="line.17997"></a>
<span class="sourceLineNo">17998</span> }<a name="line.17998"></a>
<span class="sourceLineNo">17999</span> } else {<a name="line.17999"></a>
<span class="sourceLineNo">18000</span> while (it.hasNext()) {<a name="line.18000"></a>
<span class="sourceLineNo">18001</span> final long ix = it.aLong;<a name="line.18001"></a>
<span class="sourceLineNo">18002</span> int ox;<a name="line.18002"></a>
<span class="sourceLineNo">18003</span> ox = (int) toLong(Math.sin(ix));<a name="line.18003"></a>
<span class="sourceLineNo">18004</span> oai32data[it.oIndex] = ox;<a name="line.18004"></a>
<span class="sourceLineNo">18005</span> }<a name="line.18005"></a>
<span class="sourceLineNo">18006</span> }<a name="line.18006"></a>
<span class="sourceLineNo">18007</span> } else if (as == 1) {<a name="line.18007"></a>
<span class="sourceLineNo">18008</span> if (it.isOutputDouble()) {<a name="line.18008"></a>
<span class="sourceLineNo">18009</span> while (it.hasNext()) {<a name="line.18009"></a>
<span class="sourceLineNo">18010</span> final double ix = it.aDouble;<a name="line.18010"></a>
<span class="sourceLineNo">18011</span> int ox;<a name="line.18011"></a>
<span class="sourceLineNo">18012</span> ox = (int) toLong(Math.sin(ix));<a name="line.18012"></a>
<span class="sourceLineNo">18013</span> for (int j = 0; j &lt; is; j++) {<a name="line.18013"></a>
<span class="sourceLineNo">18014</span> oai32data[it.oIndex + j] = ox;<a name="line.18014"></a>
<span class="sourceLineNo">18015</span> }<a name="line.18015"></a>
<span class="sourceLineNo">18016</span> }<a name="line.18016"></a>
<span class="sourceLineNo">18017</span> } else {<a name="line.18017"></a>
<span class="sourceLineNo">18018</span> while (it.hasNext()) {<a name="line.18018"></a>
<span class="sourceLineNo">18019</span> final long ix = it.aLong;<a name="line.18019"></a>
<span class="sourceLineNo">18020</span> int ox;<a name="line.18020"></a>
<span class="sourceLineNo">18021</span> ox = (int) toLong(Math.sin(ix));<a name="line.18021"></a>
<span class="sourceLineNo">18022</span> for (int j = 0; j &lt; is; j++) {<a name="line.18022"></a>
<span class="sourceLineNo">18023</span> oai32data[it.oIndex + j] = ox;<a name="line.18023"></a>
<span class="sourceLineNo">18024</span> }<a name="line.18024"></a>
<span class="sourceLineNo">18025</span> }<a name="line.18025"></a>
<span class="sourceLineNo">18026</span> }<a name="line.18026"></a>
<span class="sourceLineNo">18027</span> } else {<a name="line.18027"></a>
<span class="sourceLineNo">18028</span> if (it.isOutputDouble()) {<a name="line.18028"></a>
<span class="sourceLineNo">18029</span> while (it.hasNext()) {<a name="line.18029"></a>
<span class="sourceLineNo">18030</span> for (int j = 0; j &lt; is; j++) {<a name="line.18030"></a>
<span class="sourceLineNo">18031</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.18031"></a>
<span class="sourceLineNo">18032</span> int ox;<a name="line.18032"></a>
<span class="sourceLineNo">18033</span> ox = (int) toLong(Math.sin(ix));<a name="line.18033"></a>
<span class="sourceLineNo">18034</span> oai32data[it.oIndex + j] = ox;<a name="line.18034"></a>
<span class="sourceLineNo">18035</span> }<a name="line.18035"></a>
<span class="sourceLineNo">18036</span> }<a name="line.18036"></a>
<span class="sourceLineNo">18037</span> } else {<a name="line.18037"></a>
<span class="sourceLineNo">18038</span> while (it.hasNext()) {<a name="line.18038"></a>
<span class="sourceLineNo">18039</span> for (int j = 0; j &lt; is; j++) {<a name="line.18039"></a>
<span class="sourceLineNo">18040</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.18040"></a>
<span class="sourceLineNo">18041</span> int ox;<a name="line.18041"></a>
<span class="sourceLineNo">18042</span> ox = (int) toLong(Math.sin(ix));<a name="line.18042"></a>
<span class="sourceLineNo">18043</span> oai32data[it.oIndex + j] = ox;<a name="line.18043"></a>
<span class="sourceLineNo">18044</span> }<a name="line.18044"></a>
<span class="sourceLineNo">18045</span> }<a name="line.18045"></a>
<span class="sourceLineNo">18046</span> }<a name="line.18046"></a>
<span class="sourceLineNo">18047</span> }<a name="line.18047"></a>
<span class="sourceLineNo">18048</span> break;<a name="line.18048"></a>
<span class="sourceLineNo">18049</span> case Dataset.FLOAT32:<a name="line.18049"></a>
<span class="sourceLineNo">18050</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.18050"></a>
<span class="sourceLineNo">18051</span> if (it.isOutputDouble()) {<a name="line.18051"></a>
<span class="sourceLineNo">18052</span> while (it.hasNext()) {<a name="line.18052"></a>
<span class="sourceLineNo">18053</span> final double ix = it.aDouble;<a name="line.18053"></a>
<span class="sourceLineNo">18054</span> float ox;<a name="line.18054"></a>
<span class="sourceLineNo">18055</span> ox = (float) (Math.sin(ix));<a name="line.18055"></a>
<span class="sourceLineNo">18056</span> of32data[it.oIndex] = ox;<a name="line.18056"></a>
<span class="sourceLineNo">18057</span> }<a name="line.18057"></a>
<span class="sourceLineNo">18058</span> } else {<a name="line.18058"></a>
<span class="sourceLineNo">18059</span> while (it.hasNext()) {<a name="line.18059"></a>
<span class="sourceLineNo">18060</span> final long ix = it.aLong;<a name="line.18060"></a>
<span class="sourceLineNo">18061</span> float ox;<a name="line.18061"></a>
<span class="sourceLineNo">18062</span> ox = (float) (Math.sin(ix));<a name="line.18062"></a>
<span class="sourceLineNo">18063</span> of32data[it.oIndex] = ox;<a name="line.18063"></a>
<span class="sourceLineNo">18064</span> }<a name="line.18064"></a>
<span class="sourceLineNo">18065</span> }<a name="line.18065"></a>
<span class="sourceLineNo">18066</span> break;<a name="line.18066"></a>
<span class="sourceLineNo">18067</span> case Dataset.FLOAT64:<a name="line.18067"></a>
<span class="sourceLineNo">18068</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.18068"></a>
<span class="sourceLineNo">18069</span> if (it.isOutputDouble()) {<a name="line.18069"></a>
<span class="sourceLineNo">18070</span> while (it.hasNext()) {<a name="line.18070"></a>
<span class="sourceLineNo">18071</span> final double ix = it.aDouble;<a name="line.18071"></a>
<span class="sourceLineNo">18072</span> double ox;<a name="line.18072"></a>
<span class="sourceLineNo">18073</span> ox = (Math.sin(ix));<a name="line.18073"></a>
<span class="sourceLineNo">18074</span> of64data[it.oIndex] = ox;<a name="line.18074"></a>
<span class="sourceLineNo">18075</span> }<a name="line.18075"></a>
<span class="sourceLineNo">18076</span> } else {<a name="line.18076"></a>
<span class="sourceLineNo">18077</span> while (it.hasNext()) {<a name="line.18077"></a>
<span class="sourceLineNo">18078</span> final long ix = it.aLong;<a name="line.18078"></a>
<span class="sourceLineNo">18079</span> double ox;<a name="line.18079"></a>
<span class="sourceLineNo">18080</span> ox = (Math.sin(ix));<a name="line.18080"></a>
<span class="sourceLineNo">18081</span> of64data[it.oIndex] = ox;<a name="line.18081"></a>
<span class="sourceLineNo">18082</span> }<a name="line.18082"></a>
<span class="sourceLineNo">18083</span> }<a name="line.18083"></a>
<span class="sourceLineNo">18084</span> break;<a name="line.18084"></a>
<span class="sourceLineNo">18085</span> case Dataset.ARRAYFLOAT32:<a name="line.18085"></a>
<span class="sourceLineNo">18086</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.18086"></a>
<span class="sourceLineNo">18087</span> if (is == 1) {<a name="line.18087"></a>
<span class="sourceLineNo">18088</span> if (it.isOutputDouble()) {<a name="line.18088"></a>
<span class="sourceLineNo">18089</span> while (it.hasNext()) {<a name="line.18089"></a>
<span class="sourceLineNo">18090</span> final double ix = it.aDouble;<a name="line.18090"></a>
<span class="sourceLineNo">18091</span> float ox;<a name="line.18091"></a>
<span class="sourceLineNo">18092</span> ox = (float) (Math.sin(ix));<a name="line.18092"></a>
<span class="sourceLineNo">18093</span> oaf32data[it.oIndex] = ox;<a name="line.18093"></a>
<span class="sourceLineNo">18094</span> }<a name="line.18094"></a>
<span class="sourceLineNo">18095</span> } else {<a name="line.18095"></a>
<span class="sourceLineNo">18096</span> while (it.hasNext()) {<a name="line.18096"></a>
<span class="sourceLineNo">18097</span> final long ix = it.aLong;<a name="line.18097"></a>
<span class="sourceLineNo">18098</span> float ox;<a name="line.18098"></a>
<span class="sourceLineNo">18099</span> ox = (float) (Math.sin(ix));<a name="line.18099"></a>
<span class="sourceLineNo">18100</span> oaf32data[it.oIndex] = ox;<a name="line.18100"></a>
<span class="sourceLineNo">18101</span> }<a name="line.18101"></a>
<span class="sourceLineNo">18102</span> }<a name="line.18102"></a>
<span class="sourceLineNo">18103</span> } else if (as == 1) {<a name="line.18103"></a>
<span class="sourceLineNo">18104</span> if (it.isOutputDouble()) {<a name="line.18104"></a>
<span class="sourceLineNo">18105</span> while (it.hasNext()) {<a name="line.18105"></a>
<span class="sourceLineNo">18106</span> final double ix = it.aDouble;<a name="line.18106"></a>
<span class="sourceLineNo">18107</span> float ox;<a name="line.18107"></a>
<span class="sourceLineNo">18108</span> ox = (float) (Math.sin(ix));<a name="line.18108"></a>
<span class="sourceLineNo">18109</span> for (int j = 0; j &lt; is; j++) {<a name="line.18109"></a>
<span class="sourceLineNo">18110</span> oaf32data[it.oIndex + j] = ox;<a name="line.18110"></a>
<span class="sourceLineNo">18111</span> }<a name="line.18111"></a>
<span class="sourceLineNo">18112</span> }<a name="line.18112"></a>
<span class="sourceLineNo">18113</span> } else {<a name="line.18113"></a>
<span class="sourceLineNo">18114</span> while (it.hasNext()) {<a name="line.18114"></a>
<span class="sourceLineNo">18115</span> final long ix = it.aLong;<a name="line.18115"></a>
<span class="sourceLineNo">18116</span> float ox;<a name="line.18116"></a>
<span class="sourceLineNo">18117</span> ox = (float) (Math.sin(ix));<a name="line.18117"></a>
<span class="sourceLineNo">18118</span> for (int j = 0; j &lt; is; j++) {<a name="line.18118"></a>
<span class="sourceLineNo">18119</span> oaf32data[it.oIndex + j] = ox;<a name="line.18119"></a>
<span class="sourceLineNo">18120</span> }<a name="line.18120"></a>
<span class="sourceLineNo">18121</span> }<a name="line.18121"></a>
<span class="sourceLineNo">18122</span> }<a name="line.18122"></a>
<span class="sourceLineNo">18123</span> } else {<a name="line.18123"></a>
<span class="sourceLineNo">18124</span> if (it.isOutputDouble()) {<a name="line.18124"></a>
<span class="sourceLineNo">18125</span> while (it.hasNext()) {<a name="line.18125"></a>
<span class="sourceLineNo">18126</span> for (int j = 0; j &lt; is; j++) {<a name="line.18126"></a>
<span class="sourceLineNo">18127</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.18127"></a>
<span class="sourceLineNo">18128</span> float ox;<a name="line.18128"></a>
<span class="sourceLineNo">18129</span> ox = (float) (Math.sin(ix));<a name="line.18129"></a>
<span class="sourceLineNo">18130</span> oaf32data[it.oIndex + j] = ox;<a name="line.18130"></a>
<span class="sourceLineNo">18131</span> }<a name="line.18131"></a>
<span class="sourceLineNo">18132</span> }<a name="line.18132"></a>
<span class="sourceLineNo">18133</span> } else {<a name="line.18133"></a>
<span class="sourceLineNo">18134</span> while (it.hasNext()) {<a name="line.18134"></a>
<span class="sourceLineNo">18135</span> for (int j = 0; j &lt; is; j++) {<a name="line.18135"></a>
<span class="sourceLineNo">18136</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.18136"></a>
<span class="sourceLineNo">18137</span> float ox;<a name="line.18137"></a>
<span class="sourceLineNo">18138</span> ox = (float) (Math.sin(ix));<a name="line.18138"></a>
<span class="sourceLineNo">18139</span> oaf32data[it.oIndex + j] = ox;<a name="line.18139"></a>
<span class="sourceLineNo">18140</span> }<a name="line.18140"></a>
<span class="sourceLineNo">18141</span> }<a name="line.18141"></a>
<span class="sourceLineNo">18142</span> }<a name="line.18142"></a>
<span class="sourceLineNo">18143</span> }<a name="line.18143"></a>
<span class="sourceLineNo">18144</span> break;<a name="line.18144"></a>
<span class="sourceLineNo">18145</span> case Dataset.ARRAYFLOAT64:<a name="line.18145"></a>
<span class="sourceLineNo">18146</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.18146"></a>
<span class="sourceLineNo">18147</span> if (is == 1) {<a name="line.18147"></a>
<span class="sourceLineNo">18148</span> if (it.isOutputDouble()) {<a name="line.18148"></a>
<span class="sourceLineNo">18149</span> while (it.hasNext()) {<a name="line.18149"></a>
<span class="sourceLineNo">18150</span> final double ix = it.aDouble;<a name="line.18150"></a>
<span class="sourceLineNo">18151</span> double ox;<a name="line.18151"></a>
<span class="sourceLineNo">18152</span> ox = (Math.sin(ix));<a name="line.18152"></a>
<span class="sourceLineNo">18153</span> oaf64data[it.oIndex] = ox;<a name="line.18153"></a>
<span class="sourceLineNo">18154</span> }<a name="line.18154"></a>
<span class="sourceLineNo">18155</span> } else {<a name="line.18155"></a>
<span class="sourceLineNo">18156</span> while (it.hasNext()) {<a name="line.18156"></a>
<span class="sourceLineNo">18157</span> final long ix = it.aLong;<a name="line.18157"></a>
<span class="sourceLineNo">18158</span> double ox;<a name="line.18158"></a>
<span class="sourceLineNo">18159</span> ox = (Math.sin(ix));<a name="line.18159"></a>
<span class="sourceLineNo">18160</span> oaf64data[it.oIndex] = ox;<a name="line.18160"></a>
<span class="sourceLineNo">18161</span> }<a name="line.18161"></a>
<span class="sourceLineNo">18162</span> }<a name="line.18162"></a>
<span class="sourceLineNo">18163</span> } else if (as == 1) {<a name="line.18163"></a>
<span class="sourceLineNo">18164</span> if (it.isOutputDouble()) {<a name="line.18164"></a>
<span class="sourceLineNo">18165</span> while (it.hasNext()) {<a name="line.18165"></a>
<span class="sourceLineNo">18166</span> final double ix = it.aDouble;<a name="line.18166"></a>
<span class="sourceLineNo">18167</span> double ox;<a name="line.18167"></a>
<span class="sourceLineNo">18168</span> ox = (Math.sin(ix));<a name="line.18168"></a>
<span class="sourceLineNo">18169</span> for (int j = 0; j &lt; is; j++) {<a name="line.18169"></a>
<span class="sourceLineNo">18170</span> oaf64data[it.oIndex + j] = ox;<a name="line.18170"></a>
<span class="sourceLineNo">18171</span> }<a name="line.18171"></a>
<span class="sourceLineNo">18172</span> }<a name="line.18172"></a>
<span class="sourceLineNo">18173</span> } else {<a name="line.18173"></a>
<span class="sourceLineNo">18174</span> while (it.hasNext()) {<a name="line.18174"></a>
<span class="sourceLineNo">18175</span> final long ix = it.aLong;<a name="line.18175"></a>
<span class="sourceLineNo">18176</span> double ox;<a name="line.18176"></a>
<span class="sourceLineNo">18177</span> ox = (Math.sin(ix));<a name="line.18177"></a>
<span class="sourceLineNo">18178</span> for (int j = 0; j &lt; is; j++) {<a name="line.18178"></a>
<span class="sourceLineNo">18179</span> oaf64data[it.oIndex + j] = ox;<a name="line.18179"></a>
<span class="sourceLineNo">18180</span> }<a name="line.18180"></a>
<span class="sourceLineNo">18181</span> }<a name="line.18181"></a>
<span class="sourceLineNo">18182</span> }<a name="line.18182"></a>
<span class="sourceLineNo">18183</span> } else {<a name="line.18183"></a>
<span class="sourceLineNo">18184</span> if (it.isOutputDouble()) {<a name="line.18184"></a>
<span class="sourceLineNo">18185</span> while (it.hasNext()) {<a name="line.18185"></a>
<span class="sourceLineNo">18186</span> for (int j = 0; j &lt; is; j++) {<a name="line.18186"></a>
<span class="sourceLineNo">18187</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.18187"></a>
<span class="sourceLineNo">18188</span> double ox;<a name="line.18188"></a>
<span class="sourceLineNo">18189</span> ox = (Math.sin(ix));<a name="line.18189"></a>
<span class="sourceLineNo">18190</span> oaf64data[it.oIndex + j] = ox;<a name="line.18190"></a>
<span class="sourceLineNo">18191</span> }<a name="line.18191"></a>
<span class="sourceLineNo">18192</span> }<a name="line.18192"></a>
<span class="sourceLineNo">18193</span> } else {<a name="line.18193"></a>
<span class="sourceLineNo">18194</span> while (it.hasNext()) {<a name="line.18194"></a>
<span class="sourceLineNo">18195</span> for (int j = 0; j &lt; is; j++) {<a name="line.18195"></a>
<span class="sourceLineNo">18196</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.18196"></a>
<span class="sourceLineNo">18197</span> double ox;<a name="line.18197"></a>
<span class="sourceLineNo">18198</span> ox = (Math.sin(ix));<a name="line.18198"></a>
<span class="sourceLineNo">18199</span> oaf64data[it.oIndex + j] = ox;<a name="line.18199"></a>
<span class="sourceLineNo">18200</span> }<a name="line.18200"></a>
<span class="sourceLineNo">18201</span> }<a name="line.18201"></a>
<span class="sourceLineNo">18202</span> }<a name="line.18202"></a>
<span class="sourceLineNo">18203</span> }<a name="line.18203"></a>
<span class="sourceLineNo">18204</span> break;<a name="line.18204"></a>
<span class="sourceLineNo">18205</span> case Dataset.COMPLEX64:<a name="line.18205"></a>
<span class="sourceLineNo">18206</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.18206"></a>
<span class="sourceLineNo">18207</span> if (!da.isComplex()) {<a name="line.18207"></a>
<span class="sourceLineNo">18208</span> if (it.isOutputDouble()) {<a name="line.18208"></a>
<span class="sourceLineNo">18209</span> final double iy = 0;<a name="line.18209"></a>
<span class="sourceLineNo">18210</span> while (it.hasNext()) {<a name="line.18210"></a>
<span class="sourceLineNo">18211</span> final double ix = it.aDouble;<a name="line.18211"></a>
<span class="sourceLineNo">18212</span> float ox;<a name="line.18212"></a>
<span class="sourceLineNo">18213</span> float oy;<a name="line.18213"></a>
<span class="sourceLineNo">18214</span> ox = (float) (Math.sin(ix)*Math.cosh(iy));<a name="line.18214"></a>
<span class="sourceLineNo">18215</span> oy = (float) (Math.cos(ix)*Math.sinh(iy));<a name="line.18215"></a>
<span class="sourceLineNo">18216</span> oc64data[it.oIndex] = ox;<a name="line.18216"></a>
<span class="sourceLineNo">18217</span> oc64data[it.oIndex + 1] = oy;<a name="line.18217"></a>
<span class="sourceLineNo">18218</span> }<a name="line.18218"></a>
<span class="sourceLineNo">18219</span> } else {<a name="line.18219"></a>
<span class="sourceLineNo">18220</span> final long iy = 0;<a name="line.18220"></a>
<span class="sourceLineNo">18221</span> while (it.hasNext()) {<a name="line.18221"></a>
<span class="sourceLineNo">18222</span> final long ix = it.aLong;<a name="line.18222"></a>
<span class="sourceLineNo">18223</span> float ox;<a name="line.18223"></a>
<span class="sourceLineNo">18224</span> float oy;<a name="line.18224"></a>
<span class="sourceLineNo">18225</span> ox = (float) toLong(Math.sin(ix)*Math.cosh(iy));<a name="line.18225"></a>
<span class="sourceLineNo">18226</span> oy = (float) toLong(Math.cos(ix)*Math.sinh(iy));<a name="line.18226"></a>
<span class="sourceLineNo">18227</span> oc64data[it.oIndex] = ox;<a name="line.18227"></a>
<span class="sourceLineNo">18228</span> oc64data[it.oIndex + 1] = oy;<a name="line.18228"></a>
<span class="sourceLineNo">18229</span> }<a name="line.18229"></a>
<span class="sourceLineNo">18230</span> }<a name="line.18230"></a>
<span class="sourceLineNo">18231</span> } else {<a name="line.18231"></a>
<span class="sourceLineNo">18232</span> while (it.hasNext()) {<a name="line.18232"></a>
<span class="sourceLineNo">18233</span> final double ix = it.aDouble;<a name="line.18233"></a>
<span class="sourceLineNo">18234</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.18234"></a>
<span class="sourceLineNo">18235</span> float ox;<a name="line.18235"></a>
<span class="sourceLineNo">18236</span> float oy;<a name="line.18236"></a>
<span class="sourceLineNo">18237</span> ox = (float) (Math.sin(ix)*Math.cosh(iy));<a name="line.18237"></a>
<span class="sourceLineNo">18238</span> oy = (float) (Math.cos(ix)*Math.sinh(iy));<a name="line.18238"></a>
<span class="sourceLineNo">18239</span> oc64data[it.oIndex] = ox;<a name="line.18239"></a>
<span class="sourceLineNo">18240</span> oc64data[it.oIndex + 1] = oy;<a name="line.18240"></a>
<span class="sourceLineNo">18241</span> }<a name="line.18241"></a>
<span class="sourceLineNo">18242</span> }<a name="line.18242"></a>
<span class="sourceLineNo">18243</span> break;<a name="line.18243"></a>
<span class="sourceLineNo">18244</span> case Dataset.COMPLEX128:<a name="line.18244"></a>
<span class="sourceLineNo">18245</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.18245"></a>
<span class="sourceLineNo">18246</span> if (!da.isComplex()) {<a name="line.18246"></a>
<span class="sourceLineNo">18247</span> if (it.isOutputDouble()) {<a name="line.18247"></a>
<span class="sourceLineNo">18248</span> final double iy = 0;<a name="line.18248"></a>
<span class="sourceLineNo">18249</span> while (it.hasNext()) {<a name="line.18249"></a>
<span class="sourceLineNo">18250</span> final double ix = it.aDouble;<a name="line.18250"></a>
<span class="sourceLineNo">18251</span> double ox;<a name="line.18251"></a>
<span class="sourceLineNo">18252</span> double oy;<a name="line.18252"></a>
<span class="sourceLineNo">18253</span> ox = (Math.sin(ix)*Math.cosh(iy));<a name="line.18253"></a>
<span class="sourceLineNo">18254</span> oy = (Math.cos(ix)*Math.sinh(iy));<a name="line.18254"></a>
<span class="sourceLineNo">18255</span> oc128data[it.oIndex] = ox;<a name="line.18255"></a>
<span class="sourceLineNo">18256</span> oc128data[it.oIndex + 1] = oy;<a name="line.18256"></a>
<span class="sourceLineNo">18257</span> }<a name="line.18257"></a>
<span class="sourceLineNo">18258</span> } else {<a name="line.18258"></a>
<span class="sourceLineNo">18259</span> final long iy = 0;<a name="line.18259"></a>
<span class="sourceLineNo">18260</span> while (it.hasNext()) {<a name="line.18260"></a>
<span class="sourceLineNo">18261</span> final long ix = it.aLong;<a name="line.18261"></a>
<span class="sourceLineNo">18262</span> double ox;<a name="line.18262"></a>
<span class="sourceLineNo">18263</span> double oy;<a name="line.18263"></a>
<span class="sourceLineNo">18264</span> ox = (double) (Math.sin(ix)*Math.cosh(iy));<a name="line.18264"></a>
<span class="sourceLineNo">18265</span> oy = (double) (Math.cos(ix)*Math.sinh(iy));<a name="line.18265"></a>
<span class="sourceLineNo">18266</span> oc128data[it.oIndex] = ox;<a name="line.18266"></a>
<span class="sourceLineNo">18267</span> oc128data[it.oIndex + 1] = oy;<a name="line.18267"></a>
<span class="sourceLineNo">18268</span> }<a name="line.18268"></a>
<span class="sourceLineNo">18269</span> }<a name="line.18269"></a>
<span class="sourceLineNo">18270</span> } else {<a name="line.18270"></a>
<span class="sourceLineNo">18271</span> while (it.hasNext()) {<a name="line.18271"></a>
<span class="sourceLineNo">18272</span> final double ix = it.aDouble;<a name="line.18272"></a>
<span class="sourceLineNo">18273</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.18273"></a>
<span class="sourceLineNo">18274</span> double ox;<a name="line.18274"></a>
<span class="sourceLineNo">18275</span> double oy;<a name="line.18275"></a>
<span class="sourceLineNo">18276</span> ox = (Math.sin(ix)*Math.cosh(iy));<a name="line.18276"></a>
<span class="sourceLineNo">18277</span> oy = (Math.cos(ix)*Math.sinh(iy));<a name="line.18277"></a>
<span class="sourceLineNo">18278</span> oc128data[it.oIndex] = ox;<a name="line.18278"></a>
<span class="sourceLineNo">18279</span> oc128data[it.oIndex + 1] = oy;<a name="line.18279"></a>
<span class="sourceLineNo">18280</span> }<a name="line.18280"></a>
<span class="sourceLineNo">18281</span> }<a name="line.18281"></a>
<span class="sourceLineNo">18282</span> break;<a name="line.18282"></a>
<span class="sourceLineNo">18283</span> default:<a name="line.18283"></a>
<span class="sourceLineNo">18284</span> throw new IllegalArgumentException("sin supports integer, compound integer, real, compound real, complex datasets only");<a name="line.18284"></a>
<span class="sourceLineNo">18285</span> }<a name="line.18285"></a>
<span class="sourceLineNo">18286</span><a name="line.18286"></a>
<span class="sourceLineNo">18287</span> addFunctionName(result, "sin");<a name="line.18287"></a>
<span class="sourceLineNo">18288</span> return result;<a name="line.18288"></a>
<span class="sourceLineNo">18289</span> }<a name="line.18289"></a>
<span class="sourceLineNo">18290</span><a name="line.18290"></a>
<span class="sourceLineNo">18291</span> /**<a name="line.18291"></a>
<span class="sourceLineNo">18292</span> * cos - evaluate the cosine function on each element of the dataset<a name="line.18292"></a>
<span class="sourceLineNo">18293</span> * @param a<a name="line.18293"></a>
<span class="sourceLineNo">18294</span> * @return dataset<a name="line.18294"></a>
<span class="sourceLineNo">18295</span> */<a name="line.18295"></a>
<span class="sourceLineNo">18296</span> public static Dataset cos(final Object a) {<a name="line.18296"></a>
<span class="sourceLineNo">18297</span> return cos(a, null);<a name="line.18297"></a>
<span class="sourceLineNo">18298</span> }<a name="line.18298"></a>
<span class="sourceLineNo">18299</span><a name="line.18299"></a>
<span class="sourceLineNo">18300</span> /**<a name="line.18300"></a>
<span class="sourceLineNo">18301</span> * cos - evaluate the cosine function on each element of the dataset<a name="line.18301"></a>
<span class="sourceLineNo">18302</span> * @param a<a name="line.18302"></a>
<span class="sourceLineNo">18303</span> * @param o output can be null - in which case, a new dataset is created<a name="line.18303"></a>
<span class="sourceLineNo">18304</span> * @return dataset<a name="line.18304"></a>
<span class="sourceLineNo">18305</span> */<a name="line.18305"></a>
<span class="sourceLineNo">18306</span> public static Dataset cos(final Object a, final Dataset o) {<a name="line.18306"></a>
<span class="sourceLineNo">18307</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.18307"></a>
<span class="sourceLineNo">18308</span> SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true);<a name="line.18308"></a>
<span class="sourceLineNo">18309</span> final Dataset result = it.getOutput();<a name="line.18309"></a>
<span class="sourceLineNo">18310</span> if (!result.isComplex()) {<a name="line.18310"></a>
<span class="sourceLineNo">18311</span> if (da.isComplex()) {<a name="line.18311"></a>
<span class="sourceLineNo">18312</span> da = da.getRealView();<a name="line.18312"></a>
<span class="sourceLineNo">18313</span> it = new SingleInputBroadcastIterator(da, result, true);<a name="line.18313"></a>
<span class="sourceLineNo">18314</span> }<a name="line.18314"></a>
<span class="sourceLineNo">18315</span> }<a name="line.18315"></a>
<span class="sourceLineNo">18316</span> final int is = result.getElementsPerItem();<a name="line.18316"></a>
<span class="sourceLineNo">18317</span> final int as = da.getElementsPerItem();<a name="line.18317"></a>
<span class="sourceLineNo">18318</span> final int dt = result.getDType();<a name="line.18318"></a>
<span class="sourceLineNo">18319</span><a name="line.18319"></a>
<span class="sourceLineNo">18320</span> switch(dt) {<a name="line.18320"></a>
<span class="sourceLineNo">18321</span> case Dataset.INT8:<a name="line.18321"></a>
<span class="sourceLineNo">18322</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.18322"></a>
<span class="sourceLineNo">18323</span> if (it.isOutputDouble()) {<a name="line.18323"></a>
<span class="sourceLineNo">18324</span> while (it.hasNext()) {<a name="line.18324"></a>
<span class="sourceLineNo">18325</span> final double ix = it.aDouble;<a name="line.18325"></a>
<span class="sourceLineNo">18326</span> byte ox;<a name="line.18326"></a>
<span class="sourceLineNo">18327</span> ox = (byte) toLong(Math.cos(ix));<a name="line.18327"></a>
<span class="sourceLineNo">18328</span> oi8data[it.oIndex] = ox;<a name="line.18328"></a>
<span class="sourceLineNo">18329</span> }<a name="line.18329"></a>
<span class="sourceLineNo">18330</span> } else {<a name="line.18330"></a>
<span class="sourceLineNo">18331</span> while (it.hasNext()) {<a name="line.18331"></a>
<span class="sourceLineNo">18332</span> final long ix = it.aLong;<a name="line.18332"></a>
<span class="sourceLineNo">18333</span> byte ox;<a name="line.18333"></a>
<span class="sourceLineNo">18334</span> ox = (byte) toLong(Math.cos(ix));<a name="line.18334"></a>
<span class="sourceLineNo">18335</span> oi8data[it.oIndex] = ox;<a name="line.18335"></a>
<span class="sourceLineNo">18336</span> }<a name="line.18336"></a>
<span class="sourceLineNo">18337</span> }<a name="line.18337"></a>
<span class="sourceLineNo">18338</span> break;<a name="line.18338"></a>
<span class="sourceLineNo">18339</span> case Dataset.INT16:<a name="line.18339"></a>
<span class="sourceLineNo">18340</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.18340"></a>
<span class="sourceLineNo">18341</span> if (it.isOutputDouble()) {<a name="line.18341"></a>
<span class="sourceLineNo">18342</span> while (it.hasNext()) {<a name="line.18342"></a>
<span class="sourceLineNo">18343</span> final double ix = it.aDouble;<a name="line.18343"></a>
<span class="sourceLineNo">18344</span> short ox;<a name="line.18344"></a>
<span class="sourceLineNo">18345</span> ox = (short) toLong(Math.cos(ix));<a name="line.18345"></a>
<span class="sourceLineNo">18346</span> oi16data[it.oIndex] = ox;<a name="line.18346"></a>
<span class="sourceLineNo">18347</span> }<a name="line.18347"></a>
<span class="sourceLineNo">18348</span> } else {<a name="line.18348"></a>
<span class="sourceLineNo">18349</span> while (it.hasNext()) {<a name="line.18349"></a>
<span class="sourceLineNo">18350</span> final long ix = it.aLong;<a name="line.18350"></a>
<span class="sourceLineNo">18351</span> short ox;<a name="line.18351"></a>
<span class="sourceLineNo">18352</span> ox = (short) toLong(Math.cos(ix));<a name="line.18352"></a>
<span class="sourceLineNo">18353</span> oi16data[it.oIndex] = ox;<a name="line.18353"></a>
<span class="sourceLineNo">18354</span> }<a name="line.18354"></a>
<span class="sourceLineNo">18355</span> }<a name="line.18355"></a>
<span class="sourceLineNo">18356</span> break;<a name="line.18356"></a>
<span class="sourceLineNo">18357</span> case Dataset.INT64:<a name="line.18357"></a>
<span class="sourceLineNo">18358</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.18358"></a>
<span class="sourceLineNo">18359</span> if (it.isOutputDouble()) {<a name="line.18359"></a>
<span class="sourceLineNo">18360</span> while (it.hasNext()) {<a name="line.18360"></a>
<span class="sourceLineNo">18361</span> final double ix = it.aDouble;<a name="line.18361"></a>
<span class="sourceLineNo">18362</span> long ox;<a name="line.18362"></a>
<span class="sourceLineNo">18363</span> ox = toLong(Math.cos(ix));<a name="line.18363"></a>
<span class="sourceLineNo">18364</span> oi64data[it.oIndex] = ox;<a name="line.18364"></a>
<span class="sourceLineNo">18365</span> }<a name="line.18365"></a>
<span class="sourceLineNo">18366</span> } else {<a name="line.18366"></a>
<span class="sourceLineNo">18367</span> while (it.hasNext()) {<a name="line.18367"></a>
<span class="sourceLineNo">18368</span> final long ix = it.aLong;<a name="line.18368"></a>
<span class="sourceLineNo">18369</span> long ox;<a name="line.18369"></a>
<span class="sourceLineNo">18370</span> ox = toLong(Math.cos(ix));<a name="line.18370"></a>
<span class="sourceLineNo">18371</span> oi64data[it.oIndex] = ox;<a name="line.18371"></a>
<span class="sourceLineNo">18372</span> }<a name="line.18372"></a>
<span class="sourceLineNo">18373</span> }<a name="line.18373"></a>
<span class="sourceLineNo">18374</span> break;<a name="line.18374"></a>
<span class="sourceLineNo">18375</span> case Dataset.INT32:<a name="line.18375"></a>
<span class="sourceLineNo">18376</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.18376"></a>
<span class="sourceLineNo">18377</span> if (it.isOutputDouble()) {<a name="line.18377"></a>
<span class="sourceLineNo">18378</span> while (it.hasNext()) {<a name="line.18378"></a>
<span class="sourceLineNo">18379</span> final double ix = it.aDouble;<a name="line.18379"></a>
<span class="sourceLineNo">18380</span> int ox;<a name="line.18380"></a>
<span class="sourceLineNo">18381</span> ox = (int) toLong(Math.cos(ix));<a name="line.18381"></a>
<span class="sourceLineNo">18382</span> oi32data[it.oIndex] = ox;<a name="line.18382"></a>
<span class="sourceLineNo">18383</span> }<a name="line.18383"></a>
<span class="sourceLineNo">18384</span> } else {<a name="line.18384"></a>
<span class="sourceLineNo">18385</span> while (it.hasNext()) {<a name="line.18385"></a>
<span class="sourceLineNo">18386</span> final long ix = it.aLong;<a name="line.18386"></a>
<span class="sourceLineNo">18387</span> int ox;<a name="line.18387"></a>
<span class="sourceLineNo">18388</span> ox = (int) toLong(Math.cos(ix));<a name="line.18388"></a>
<span class="sourceLineNo">18389</span> oi32data[it.oIndex] = ox;<a name="line.18389"></a>
<span class="sourceLineNo">18390</span> }<a name="line.18390"></a>
<span class="sourceLineNo">18391</span> }<a name="line.18391"></a>
<span class="sourceLineNo">18392</span> break;<a name="line.18392"></a>
<span class="sourceLineNo">18393</span> case Dataset.ARRAYINT8:<a name="line.18393"></a>
<span class="sourceLineNo">18394</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.18394"></a>
<span class="sourceLineNo">18395</span> if (is == 1) {<a name="line.18395"></a>
<span class="sourceLineNo">18396</span> if (it.isOutputDouble()) {<a name="line.18396"></a>
<span class="sourceLineNo">18397</span> while (it.hasNext()) {<a name="line.18397"></a>
<span class="sourceLineNo">18398</span> final double ix = it.aDouble;<a name="line.18398"></a>
<span class="sourceLineNo">18399</span> byte ox;<a name="line.18399"></a>
<span class="sourceLineNo">18400</span> ox = (byte) toLong(Math.cos(ix));<a name="line.18400"></a>
<span class="sourceLineNo">18401</span> oai8data[it.oIndex] = ox;<a name="line.18401"></a>
<span class="sourceLineNo">18402</span> }<a name="line.18402"></a>
<span class="sourceLineNo">18403</span> } else {<a name="line.18403"></a>
<span class="sourceLineNo">18404</span> while (it.hasNext()) {<a name="line.18404"></a>
<span class="sourceLineNo">18405</span> final long ix = it.aLong;<a name="line.18405"></a>
<span class="sourceLineNo">18406</span> byte ox;<a name="line.18406"></a>
<span class="sourceLineNo">18407</span> ox = (byte) toLong(Math.cos(ix));<a name="line.18407"></a>
<span class="sourceLineNo">18408</span> oai8data[it.oIndex] = ox;<a name="line.18408"></a>
<span class="sourceLineNo">18409</span> }<a name="line.18409"></a>
<span class="sourceLineNo">18410</span> }<a name="line.18410"></a>
<span class="sourceLineNo">18411</span> } else if (as == 1) {<a name="line.18411"></a>
<span class="sourceLineNo">18412</span> if (it.isOutputDouble()) {<a name="line.18412"></a>
<span class="sourceLineNo">18413</span> while (it.hasNext()) {<a name="line.18413"></a>
<span class="sourceLineNo">18414</span> final double ix = it.aDouble;<a name="line.18414"></a>
<span class="sourceLineNo">18415</span> byte ox;<a name="line.18415"></a>
<span class="sourceLineNo">18416</span> ox = (byte) toLong(Math.cos(ix));<a name="line.18416"></a>
<span class="sourceLineNo">18417</span> for (int j = 0; j &lt; is; j++) {<a name="line.18417"></a>
<span class="sourceLineNo">18418</span> oai8data[it.oIndex + j] = ox;<a name="line.18418"></a>
<span class="sourceLineNo">18419</span> }<a name="line.18419"></a>
<span class="sourceLineNo">18420</span> }<a name="line.18420"></a>
<span class="sourceLineNo">18421</span> } else {<a name="line.18421"></a>
<span class="sourceLineNo">18422</span> while (it.hasNext()) {<a name="line.18422"></a>
<span class="sourceLineNo">18423</span> final long ix = it.aLong;<a name="line.18423"></a>
<span class="sourceLineNo">18424</span> byte ox;<a name="line.18424"></a>
<span class="sourceLineNo">18425</span> ox = (byte) toLong(Math.cos(ix));<a name="line.18425"></a>
<span class="sourceLineNo">18426</span> for (int j = 0; j &lt; is; j++) {<a name="line.18426"></a>
<span class="sourceLineNo">18427</span> oai8data[it.oIndex + j] = ox;<a name="line.18427"></a>
<span class="sourceLineNo">18428</span> }<a name="line.18428"></a>
<span class="sourceLineNo">18429</span> }<a name="line.18429"></a>
<span class="sourceLineNo">18430</span> }<a name="line.18430"></a>
<span class="sourceLineNo">18431</span> } else {<a name="line.18431"></a>
<span class="sourceLineNo">18432</span> if (it.isOutputDouble()) {<a name="line.18432"></a>
<span class="sourceLineNo">18433</span> while (it.hasNext()) {<a name="line.18433"></a>
<span class="sourceLineNo">18434</span> for (int j = 0; j &lt; is; j++) {<a name="line.18434"></a>
<span class="sourceLineNo">18435</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.18435"></a>
<span class="sourceLineNo">18436</span> byte ox;<a name="line.18436"></a>
<span class="sourceLineNo">18437</span> ox = (byte) toLong(Math.cos(ix));<a name="line.18437"></a>
<span class="sourceLineNo">18438</span> oai8data[it.oIndex + j] = ox;<a name="line.18438"></a>
<span class="sourceLineNo">18439</span> }<a name="line.18439"></a>
<span class="sourceLineNo">18440</span> }<a name="line.18440"></a>
<span class="sourceLineNo">18441</span> } else {<a name="line.18441"></a>
<span class="sourceLineNo">18442</span> while (it.hasNext()) {<a name="line.18442"></a>
<span class="sourceLineNo">18443</span> for (int j = 0; j &lt; is; j++) {<a name="line.18443"></a>
<span class="sourceLineNo">18444</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.18444"></a>
<span class="sourceLineNo">18445</span> byte ox;<a name="line.18445"></a>
<span class="sourceLineNo">18446</span> ox = (byte) toLong(Math.cos(ix));<a name="line.18446"></a>
<span class="sourceLineNo">18447</span> oai8data[it.oIndex + j] = ox;<a name="line.18447"></a>
<span class="sourceLineNo">18448</span> }<a name="line.18448"></a>
<span class="sourceLineNo">18449</span> }<a name="line.18449"></a>
<span class="sourceLineNo">18450</span> }<a name="line.18450"></a>
<span class="sourceLineNo">18451</span> }<a name="line.18451"></a>
<span class="sourceLineNo">18452</span> break;<a name="line.18452"></a>
<span class="sourceLineNo">18453</span> case Dataset.ARRAYINT16:<a name="line.18453"></a>
<span class="sourceLineNo">18454</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.18454"></a>
<span class="sourceLineNo">18455</span> if (is == 1) {<a name="line.18455"></a>
<span class="sourceLineNo">18456</span> if (it.isOutputDouble()) {<a name="line.18456"></a>
<span class="sourceLineNo">18457</span> while (it.hasNext()) {<a name="line.18457"></a>
<span class="sourceLineNo">18458</span> final double ix = it.aDouble;<a name="line.18458"></a>
<span class="sourceLineNo">18459</span> short ox;<a name="line.18459"></a>
<span class="sourceLineNo">18460</span> ox = (short) toLong(Math.cos(ix));<a name="line.18460"></a>
<span class="sourceLineNo">18461</span> oai16data[it.oIndex] = ox;<a name="line.18461"></a>
<span class="sourceLineNo">18462</span> }<a name="line.18462"></a>
<span class="sourceLineNo">18463</span> } else {<a name="line.18463"></a>
<span class="sourceLineNo">18464</span> while (it.hasNext()) {<a name="line.18464"></a>
<span class="sourceLineNo">18465</span> final long ix = it.aLong;<a name="line.18465"></a>
<span class="sourceLineNo">18466</span> short ox;<a name="line.18466"></a>
<span class="sourceLineNo">18467</span> ox = (short) toLong(Math.cos(ix));<a name="line.18467"></a>
<span class="sourceLineNo">18468</span> oai16data[it.oIndex] = ox;<a name="line.18468"></a>
<span class="sourceLineNo">18469</span> }<a name="line.18469"></a>
<span class="sourceLineNo">18470</span> }<a name="line.18470"></a>
<span class="sourceLineNo">18471</span> } else if (as == 1) {<a name="line.18471"></a>
<span class="sourceLineNo">18472</span> if (it.isOutputDouble()) {<a name="line.18472"></a>
<span class="sourceLineNo">18473</span> while (it.hasNext()) {<a name="line.18473"></a>
<span class="sourceLineNo">18474</span> final double ix = it.aDouble;<a name="line.18474"></a>
<span class="sourceLineNo">18475</span> short ox;<a name="line.18475"></a>
<span class="sourceLineNo">18476</span> ox = (short) toLong(Math.cos(ix));<a name="line.18476"></a>
<span class="sourceLineNo">18477</span> for (int j = 0; j &lt; is; j++) {<a name="line.18477"></a>
<span class="sourceLineNo">18478</span> oai16data[it.oIndex + j] = ox;<a name="line.18478"></a>
<span class="sourceLineNo">18479</span> }<a name="line.18479"></a>
<span class="sourceLineNo">18480</span> }<a name="line.18480"></a>
<span class="sourceLineNo">18481</span> } else {<a name="line.18481"></a>
<span class="sourceLineNo">18482</span> while (it.hasNext()) {<a name="line.18482"></a>
<span class="sourceLineNo">18483</span> final long ix = it.aLong;<a name="line.18483"></a>
<span class="sourceLineNo">18484</span> short ox;<a name="line.18484"></a>
<span class="sourceLineNo">18485</span> ox = (short) toLong(Math.cos(ix));<a name="line.18485"></a>
<span class="sourceLineNo">18486</span> for (int j = 0; j &lt; is; j++) {<a name="line.18486"></a>
<span class="sourceLineNo">18487</span> oai16data[it.oIndex + j] = ox;<a name="line.18487"></a>
<span class="sourceLineNo">18488</span> }<a name="line.18488"></a>
<span class="sourceLineNo">18489</span> }<a name="line.18489"></a>
<span class="sourceLineNo">18490</span> }<a name="line.18490"></a>
<span class="sourceLineNo">18491</span> } else {<a name="line.18491"></a>
<span class="sourceLineNo">18492</span> if (it.isOutputDouble()) {<a name="line.18492"></a>
<span class="sourceLineNo">18493</span> while (it.hasNext()) {<a name="line.18493"></a>
<span class="sourceLineNo">18494</span> for (int j = 0; j &lt; is; j++) {<a name="line.18494"></a>
<span class="sourceLineNo">18495</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.18495"></a>
<span class="sourceLineNo">18496</span> short ox;<a name="line.18496"></a>
<span class="sourceLineNo">18497</span> ox = (short) toLong(Math.cos(ix));<a name="line.18497"></a>
<span class="sourceLineNo">18498</span> oai16data[it.oIndex + j] = ox;<a name="line.18498"></a>
<span class="sourceLineNo">18499</span> }<a name="line.18499"></a>
<span class="sourceLineNo">18500</span> }<a name="line.18500"></a>
<span class="sourceLineNo">18501</span> } else {<a name="line.18501"></a>
<span class="sourceLineNo">18502</span> while (it.hasNext()) {<a name="line.18502"></a>
<span class="sourceLineNo">18503</span> for (int j = 0; j &lt; is; j++) {<a name="line.18503"></a>
<span class="sourceLineNo">18504</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.18504"></a>
<span class="sourceLineNo">18505</span> short ox;<a name="line.18505"></a>
<span class="sourceLineNo">18506</span> ox = (short) toLong(Math.cos(ix));<a name="line.18506"></a>
<span class="sourceLineNo">18507</span> oai16data[it.oIndex + j] = ox;<a name="line.18507"></a>
<span class="sourceLineNo">18508</span> }<a name="line.18508"></a>
<span class="sourceLineNo">18509</span> }<a name="line.18509"></a>
<span class="sourceLineNo">18510</span> }<a name="line.18510"></a>
<span class="sourceLineNo">18511</span> }<a name="line.18511"></a>
<span class="sourceLineNo">18512</span> break;<a name="line.18512"></a>
<span class="sourceLineNo">18513</span> case Dataset.ARRAYINT64:<a name="line.18513"></a>
<span class="sourceLineNo">18514</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.18514"></a>
<span class="sourceLineNo">18515</span> if (is == 1) {<a name="line.18515"></a>
<span class="sourceLineNo">18516</span> if (it.isOutputDouble()) {<a name="line.18516"></a>
<span class="sourceLineNo">18517</span> while (it.hasNext()) {<a name="line.18517"></a>
<span class="sourceLineNo">18518</span> final double ix = it.aDouble;<a name="line.18518"></a>
<span class="sourceLineNo">18519</span> long ox;<a name="line.18519"></a>
<span class="sourceLineNo">18520</span> ox = toLong(Math.cos(ix));<a name="line.18520"></a>
<span class="sourceLineNo">18521</span> oai64data[it.oIndex] = ox;<a name="line.18521"></a>
<span class="sourceLineNo">18522</span> }<a name="line.18522"></a>
<span class="sourceLineNo">18523</span> } else {<a name="line.18523"></a>
<span class="sourceLineNo">18524</span> while (it.hasNext()) {<a name="line.18524"></a>
<span class="sourceLineNo">18525</span> final long ix = it.aLong;<a name="line.18525"></a>
<span class="sourceLineNo">18526</span> long ox;<a name="line.18526"></a>
<span class="sourceLineNo">18527</span> ox = toLong(Math.cos(ix));<a name="line.18527"></a>
<span class="sourceLineNo">18528</span> oai64data[it.oIndex] = ox;<a name="line.18528"></a>
<span class="sourceLineNo">18529</span> }<a name="line.18529"></a>
<span class="sourceLineNo">18530</span> }<a name="line.18530"></a>
<span class="sourceLineNo">18531</span> } else if (as == 1) {<a name="line.18531"></a>
<span class="sourceLineNo">18532</span> if (it.isOutputDouble()) {<a name="line.18532"></a>
<span class="sourceLineNo">18533</span> while (it.hasNext()) {<a name="line.18533"></a>
<span class="sourceLineNo">18534</span> final double ix = it.aDouble;<a name="line.18534"></a>
<span class="sourceLineNo">18535</span> long ox;<a name="line.18535"></a>
<span class="sourceLineNo">18536</span> ox = toLong(Math.cos(ix));<a name="line.18536"></a>
<span class="sourceLineNo">18537</span> for (int j = 0; j &lt; is; j++) {<a name="line.18537"></a>
<span class="sourceLineNo">18538</span> oai64data[it.oIndex + j] = ox;<a name="line.18538"></a>
<span class="sourceLineNo">18539</span> }<a name="line.18539"></a>
<span class="sourceLineNo">18540</span> }<a name="line.18540"></a>
<span class="sourceLineNo">18541</span> } else {<a name="line.18541"></a>
<span class="sourceLineNo">18542</span> while (it.hasNext()) {<a name="line.18542"></a>
<span class="sourceLineNo">18543</span> final long ix = it.aLong;<a name="line.18543"></a>
<span class="sourceLineNo">18544</span> long ox;<a name="line.18544"></a>
<span class="sourceLineNo">18545</span> ox = toLong(Math.cos(ix));<a name="line.18545"></a>
<span class="sourceLineNo">18546</span> for (int j = 0; j &lt; is; j++) {<a name="line.18546"></a>
<span class="sourceLineNo">18547</span> oai64data[it.oIndex + j] = ox;<a name="line.18547"></a>
<span class="sourceLineNo">18548</span> }<a name="line.18548"></a>
<span class="sourceLineNo">18549</span> }<a name="line.18549"></a>
<span class="sourceLineNo">18550</span> }<a name="line.18550"></a>
<span class="sourceLineNo">18551</span> } else {<a name="line.18551"></a>
<span class="sourceLineNo">18552</span> if (it.isOutputDouble()) {<a name="line.18552"></a>
<span class="sourceLineNo">18553</span> while (it.hasNext()) {<a name="line.18553"></a>
<span class="sourceLineNo">18554</span> for (int j = 0; j &lt; is; j++) {<a name="line.18554"></a>
<span class="sourceLineNo">18555</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.18555"></a>
<span class="sourceLineNo">18556</span> long ox;<a name="line.18556"></a>
<span class="sourceLineNo">18557</span> ox = toLong(Math.cos(ix));<a name="line.18557"></a>
<span class="sourceLineNo">18558</span> oai64data[it.oIndex + j] = ox;<a name="line.18558"></a>
<span class="sourceLineNo">18559</span> }<a name="line.18559"></a>
<span class="sourceLineNo">18560</span> }<a name="line.18560"></a>
<span class="sourceLineNo">18561</span> } else {<a name="line.18561"></a>
<span class="sourceLineNo">18562</span> while (it.hasNext()) {<a name="line.18562"></a>
<span class="sourceLineNo">18563</span> for (int j = 0; j &lt; is; j++) {<a name="line.18563"></a>
<span class="sourceLineNo">18564</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.18564"></a>
<span class="sourceLineNo">18565</span> long ox;<a name="line.18565"></a>
<span class="sourceLineNo">18566</span> ox = toLong(Math.cos(ix));<a name="line.18566"></a>
<span class="sourceLineNo">18567</span> oai64data[it.oIndex + j] = ox;<a name="line.18567"></a>
<span class="sourceLineNo">18568</span> }<a name="line.18568"></a>
<span class="sourceLineNo">18569</span> }<a name="line.18569"></a>
<span class="sourceLineNo">18570</span> }<a name="line.18570"></a>
<span class="sourceLineNo">18571</span> }<a name="line.18571"></a>
<span class="sourceLineNo">18572</span> break;<a name="line.18572"></a>
<span class="sourceLineNo">18573</span> case Dataset.ARRAYINT32:<a name="line.18573"></a>
<span class="sourceLineNo">18574</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.18574"></a>
<span class="sourceLineNo">18575</span> if (is == 1) {<a name="line.18575"></a>
<span class="sourceLineNo">18576</span> if (it.isOutputDouble()) {<a name="line.18576"></a>
<span class="sourceLineNo">18577</span> while (it.hasNext()) {<a name="line.18577"></a>
<span class="sourceLineNo">18578</span> final double ix = it.aDouble;<a name="line.18578"></a>
<span class="sourceLineNo">18579</span> int ox;<a name="line.18579"></a>
<span class="sourceLineNo">18580</span> ox = (int) toLong(Math.cos(ix));<a name="line.18580"></a>
<span class="sourceLineNo">18581</span> oai32data[it.oIndex] = ox;<a name="line.18581"></a>
<span class="sourceLineNo">18582</span> }<a name="line.18582"></a>
<span class="sourceLineNo">18583</span> } else {<a name="line.18583"></a>
<span class="sourceLineNo">18584</span> while (it.hasNext()) {<a name="line.18584"></a>
<span class="sourceLineNo">18585</span> final long ix = it.aLong;<a name="line.18585"></a>
<span class="sourceLineNo">18586</span> int ox;<a name="line.18586"></a>
<span class="sourceLineNo">18587</span> ox = (int) toLong(Math.cos(ix));<a name="line.18587"></a>
<span class="sourceLineNo">18588</span> oai32data[it.oIndex] = ox;<a name="line.18588"></a>
<span class="sourceLineNo">18589</span> }<a name="line.18589"></a>
<span class="sourceLineNo">18590</span> }<a name="line.18590"></a>
<span class="sourceLineNo">18591</span> } else if (as == 1) {<a name="line.18591"></a>
<span class="sourceLineNo">18592</span> if (it.isOutputDouble()) {<a name="line.18592"></a>
<span class="sourceLineNo">18593</span> while (it.hasNext()) {<a name="line.18593"></a>
<span class="sourceLineNo">18594</span> final double ix = it.aDouble;<a name="line.18594"></a>
<span class="sourceLineNo">18595</span> int ox;<a name="line.18595"></a>
<span class="sourceLineNo">18596</span> ox = (int) toLong(Math.cos(ix));<a name="line.18596"></a>
<span class="sourceLineNo">18597</span> for (int j = 0; j &lt; is; j++) {<a name="line.18597"></a>
<span class="sourceLineNo">18598</span> oai32data[it.oIndex + j] = ox;<a name="line.18598"></a>
<span class="sourceLineNo">18599</span> }<a name="line.18599"></a>
<span class="sourceLineNo">18600</span> }<a name="line.18600"></a>
<span class="sourceLineNo">18601</span> } else {<a name="line.18601"></a>
<span class="sourceLineNo">18602</span> while (it.hasNext()) {<a name="line.18602"></a>
<span class="sourceLineNo">18603</span> final long ix = it.aLong;<a name="line.18603"></a>
<span class="sourceLineNo">18604</span> int ox;<a name="line.18604"></a>
<span class="sourceLineNo">18605</span> ox = (int) toLong(Math.cos(ix));<a name="line.18605"></a>
<span class="sourceLineNo">18606</span> for (int j = 0; j &lt; is; j++) {<a name="line.18606"></a>
<span class="sourceLineNo">18607</span> oai32data[it.oIndex + j] = ox;<a name="line.18607"></a>
<span class="sourceLineNo">18608</span> }<a name="line.18608"></a>
<span class="sourceLineNo">18609</span> }<a name="line.18609"></a>
<span class="sourceLineNo">18610</span> }<a name="line.18610"></a>
<span class="sourceLineNo">18611</span> } else {<a name="line.18611"></a>
<span class="sourceLineNo">18612</span> if (it.isOutputDouble()) {<a name="line.18612"></a>
<span class="sourceLineNo">18613</span> while (it.hasNext()) {<a name="line.18613"></a>
<span class="sourceLineNo">18614</span> for (int j = 0; j &lt; is; j++) {<a name="line.18614"></a>
<span class="sourceLineNo">18615</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.18615"></a>
<span class="sourceLineNo">18616</span> int ox;<a name="line.18616"></a>
<span class="sourceLineNo">18617</span> ox = (int) toLong(Math.cos(ix));<a name="line.18617"></a>
<span class="sourceLineNo">18618</span> oai32data[it.oIndex + j] = ox;<a name="line.18618"></a>
<span class="sourceLineNo">18619</span> }<a name="line.18619"></a>
<span class="sourceLineNo">18620</span> }<a name="line.18620"></a>
<span class="sourceLineNo">18621</span> } else {<a name="line.18621"></a>
<span class="sourceLineNo">18622</span> while (it.hasNext()) {<a name="line.18622"></a>
<span class="sourceLineNo">18623</span> for (int j = 0; j &lt; is; j++) {<a name="line.18623"></a>
<span class="sourceLineNo">18624</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.18624"></a>
<span class="sourceLineNo">18625</span> int ox;<a name="line.18625"></a>
<span class="sourceLineNo">18626</span> ox = (int) toLong(Math.cos(ix));<a name="line.18626"></a>
<span class="sourceLineNo">18627</span> oai32data[it.oIndex + j] = ox;<a name="line.18627"></a>
<span class="sourceLineNo">18628</span> }<a name="line.18628"></a>
<span class="sourceLineNo">18629</span> }<a name="line.18629"></a>
<span class="sourceLineNo">18630</span> }<a name="line.18630"></a>
<span class="sourceLineNo">18631</span> }<a name="line.18631"></a>
<span class="sourceLineNo">18632</span> break;<a name="line.18632"></a>
<span class="sourceLineNo">18633</span> case Dataset.FLOAT32:<a name="line.18633"></a>
<span class="sourceLineNo">18634</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.18634"></a>
<span class="sourceLineNo">18635</span> if (it.isOutputDouble()) {<a name="line.18635"></a>
<span class="sourceLineNo">18636</span> while (it.hasNext()) {<a name="line.18636"></a>
<span class="sourceLineNo">18637</span> final double ix = it.aDouble;<a name="line.18637"></a>
<span class="sourceLineNo">18638</span> float ox;<a name="line.18638"></a>
<span class="sourceLineNo">18639</span> ox = (float) (Math.cos(ix));<a name="line.18639"></a>
<span class="sourceLineNo">18640</span> of32data[it.oIndex] = ox;<a name="line.18640"></a>
<span class="sourceLineNo">18641</span> }<a name="line.18641"></a>
<span class="sourceLineNo">18642</span> } else {<a name="line.18642"></a>
<span class="sourceLineNo">18643</span> while (it.hasNext()) {<a name="line.18643"></a>
<span class="sourceLineNo">18644</span> final long ix = it.aLong;<a name="line.18644"></a>
<span class="sourceLineNo">18645</span> float ox;<a name="line.18645"></a>
<span class="sourceLineNo">18646</span> ox = (float) (Math.cos(ix));<a name="line.18646"></a>
<span class="sourceLineNo">18647</span> of32data[it.oIndex] = ox;<a name="line.18647"></a>
<span class="sourceLineNo">18648</span> }<a name="line.18648"></a>
<span class="sourceLineNo">18649</span> }<a name="line.18649"></a>
<span class="sourceLineNo">18650</span> break;<a name="line.18650"></a>
<span class="sourceLineNo">18651</span> case Dataset.FLOAT64:<a name="line.18651"></a>
<span class="sourceLineNo">18652</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.18652"></a>
<span class="sourceLineNo">18653</span> if (it.isOutputDouble()) {<a name="line.18653"></a>
<span class="sourceLineNo">18654</span> while (it.hasNext()) {<a name="line.18654"></a>
<span class="sourceLineNo">18655</span> final double ix = it.aDouble;<a name="line.18655"></a>
<span class="sourceLineNo">18656</span> double ox;<a name="line.18656"></a>
<span class="sourceLineNo">18657</span> ox = (Math.cos(ix));<a name="line.18657"></a>
<span class="sourceLineNo">18658</span> of64data[it.oIndex] = ox;<a name="line.18658"></a>
<span class="sourceLineNo">18659</span> }<a name="line.18659"></a>
<span class="sourceLineNo">18660</span> } else {<a name="line.18660"></a>
<span class="sourceLineNo">18661</span> while (it.hasNext()) {<a name="line.18661"></a>
<span class="sourceLineNo">18662</span> final long ix = it.aLong;<a name="line.18662"></a>
<span class="sourceLineNo">18663</span> double ox;<a name="line.18663"></a>
<span class="sourceLineNo">18664</span> ox = (Math.cos(ix));<a name="line.18664"></a>
<span class="sourceLineNo">18665</span> of64data[it.oIndex] = ox;<a name="line.18665"></a>
<span class="sourceLineNo">18666</span> }<a name="line.18666"></a>
<span class="sourceLineNo">18667</span> }<a name="line.18667"></a>
<span class="sourceLineNo">18668</span> break;<a name="line.18668"></a>
<span class="sourceLineNo">18669</span> case Dataset.ARRAYFLOAT32:<a name="line.18669"></a>
<span class="sourceLineNo">18670</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.18670"></a>
<span class="sourceLineNo">18671</span> if (is == 1) {<a name="line.18671"></a>
<span class="sourceLineNo">18672</span> if (it.isOutputDouble()) {<a name="line.18672"></a>
<span class="sourceLineNo">18673</span> while (it.hasNext()) {<a name="line.18673"></a>
<span class="sourceLineNo">18674</span> final double ix = it.aDouble;<a name="line.18674"></a>
<span class="sourceLineNo">18675</span> float ox;<a name="line.18675"></a>
<span class="sourceLineNo">18676</span> ox = (float) (Math.cos(ix));<a name="line.18676"></a>
<span class="sourceLineNo">18677</span> oaf32data[it.oIndex] = ox;<a name="line.18677"></a>
<span class="sourceLineNo">18678</span> }<a name="line.18678"></a>
<span class="sourceLineNo">18679</span> } else {<a name="line.18679"></a>
<span class="sourceLineNo">18680</span> while (it.hasNext()) {<a name="line.18680"></a>
<span class="sourceLineNo">18681</span> final long ix = it.aLong;<a name="line.18681"></a>
<span class="sourceLineNo">18682</span> float ox;<a name="line.18682"></a>
<span class="sourceLineNo">18683</span> ox = (float) (Math.cos(ix));<a name="line.18683"></a>
<span class="sourceLineNo">18684</span> oaf32data[it.oIndex] = ox;<a name="line.18684"></a>
<span class="sourceLineNo">18685</span> }<a name="line.18685"></a>
<span class="sourceLineNo">18686</span> }<a name="line.18686"></a>
<span class="sourceLineNo">18687</span> } else if (as == 1) {<a name="line.18687"></a>
<span class="sourceLineNo">18688</span> if (it.isOutputDouble()) {<a name="line.18688"></a>
<span class="sourceLineNo">18689</span> while (it.hasNext()) {<a name="line.18689"></a>
<span class="sourceLineNo">18690</span> final double ix = it.aDouble;<a name="line.18690"></a>
<span class="sourceLineNo">18691</span> float ox;<a name="line.18691"></a>
<span class="sourceLineNo">18692</span> ox = (float) (Math.cos(ix));<a name="line.18692"></a>
<span class="sourceLineNo">18693</span> for (int j = 0; j &lt; is; j++) {<a name="line.18693"></a>
<span class="sourceLineNo">18694</span> oaf32data[it.oIndex + j] = ox;<a name="line.18694"></a>
<span class="sourceLineNo">18695</span> }<a name="line.18695"></a>
<span class="sourceLineNo">18696</span> }<a name="line.18696"></a>
<span class="sourceLineNo">18697</span> } else {<a name="line.18697"></a>
<span class="sourceLineNo">18698</span> while (it.hasNext()) {<a name="line.18698"></a>
<span class="sourceLineNo">18699</span> final long ix = it.aLong;<a name="line.18699"></a>
<span class="sourceLineNo">18700</span> float ox;<a name="line.18700"></a>
<span class="sourceLineNo">18701</span> ox = (float) (Math.cos(ix));<a name="line.18701"></a>
<span class="sourceLineNo">18702</span> for (int j = 0; j &lt; is; j++) {<a name="line.18702"></a>
<span class="sourceLineNo">18703</span> oaf32data[it.oIndex + j] = ox;<a name="line.18703"></a>
<span class="sourceLineNo">18704</span> }<a name="line.18704"></a>
<span class="sourceLineNo">18705</span> }<a name="line.18705"></a>
<span class="sourceLineNo">18706</span> }<a name="line.18706"></a>
<span class="sourceLineNo">18707</span> } else {<a name="line.18707"></a>
<span class="sourceLineNo">18708</span> if (it.isOutputDouble()) {<a name="line.18708"></a>
<span class="sourceLineNo">18709</span> while (it.hasNext()) {<a name="line.18709"></a>
<span class="sourceLineNo">18710</span> for (int j = 0; j &lt; is; j++) {<a name="line.18710"></a>
<span class="sourceLineNo">18711</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.18711"></a>
<span class="sourceLineNo">18712</span> float ox;<a name="line.18712"></a>
<span class="sourceLineNo">18713</span> ox = (float) (Math.cos(ix));<a name="line.18713"></a>
<span class="sourceLineNo">18714</span> oaf32data[it.oIndex + j] = ox;<a name="line.18714"></a>
<span class="sourceLineNo">18715</span> }<a name="line.18715"></a>
<span class="sourceLineNo">18716</span> }<a name="line.18716"></a>
<span class="sourceLineNo">18717</span> } else {<a name="line.18717"></a>
<span class="sourceLineNo">18718</span> while (it.hasNext()) {<a name="line.18718"></a>
<span class="sourceLineNo">18719</span> for (int j = 0; j &lt; is; j++) {<a name="line.18719"></a>
<span class="sourceLineNo">18720</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.18720"></a>
<span class="sourceLineNo">18721</span> float ox;<a name="line.18721"></a>
<span class="sourceLineNo">18722</span> ox = (float) (Math.cos(ix));<a name="line.18722"></a>
<span class="sourceLineNo">18723</span> oaf32data[it.oIndex + j] = ox;<a name="line.18723"></a>
<span class="sourceLineNo">18724</span> }<a name="line.18724"></a>
<span class="sourceLineNo">18725</span> }<a name="line.18725"></a>
<span class="sourceLineNo">18726</span> }<a name="line.18726"></a>
<span class="sourceLineNo">18727</span> }<a name="line.18727"></a>
<span class="sourceLineNo">18728</span> break;<a name="line.18728"></a>
<span class="sourceLineNo">18729</span> case Dataset.ARRAYFLOAT64:<a name="line.18729"></a>
<span class="sourceLineNo">18730</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.18730"></a>
<span class="sourceLineNo">18731</span> if (is == 1) {<a name="line.18731"></a>
<span class="sourceLineNo">18732</span> if (it.isOutputDouble()) {<a name="line.18732"></a>
<span class="sourceLineNo">18733</span> while (it.hasNext()) {<a name="line.18733"></a>
<span class="sourceLineNo">18734</span> final double ix = it.aDouble;<a name="line.18734"></a>
<span class="sourceLineNo">18735</span> double ox;<a name="line.18735"></a>
<span class="sourceLineNo">18736</span> ox = (Math.cos(ix));<a name="line.18736"></a>
<span class="sourceLineNo">18737</span> oaf64data[it.oIndex] = ox;<a name="line.18737"></a>
<span class="sourceLineNo">18738</span> }<a name="line.18738"></a>
<span class="sourceLineNo">18739</span> } else {<a name="line.18739"></a>
<span class="sourceLineNo">18740</span> while (it.hasNext()) {<a name="line.18740"></a>
<span class="sourceLineNo">18741</span> final long ix = it.aLong;<a name="line.18741"></a>
<span class="sourceLineNo">18742</span> double ox;<a name="line.18742"></a>
<span class="sourceLineNo">18743</span> ox = (Math.cos(ix));<a name="line.18743"></a>
<span class="sourceLineNo">18744</span> oaf64data[it.oIndex] = ox;<a name="line.18744"></a>
<span class="sourceLineNo">18745</span> }<a name="line.18745"></a>
<span class="sourceLineNo">18746</span> }<a name="line.18746"></a>
<span class="sourceLineNo">18747</span> } else if (as == 1) {<a name="line.18747"></a>
<span class="sourceLineNo">18748</span> if (it.isOutputDouble()) {<a name="line.18748"></a>
<span class="sourceLineNo">18749</span> while (it.hasNext()) {<a name="line.18749"></a>
<span class="sourceLineNo">18750</span> final double ix = it.aDouble;<a name="line.18750"></a>
<span class="sourceLineNo">18751</span> double ox;<a name="line.18751"></a>
<span class="sourceLineNo">18752</span> ox = (Math.cos(ix));<a name="line.18752"></a>
<span class="sourceLineNo">18753</span> for (int j = 0; j &lt; is; j++) {<a name="line.18753"></a>
<span class="sourceLineNo">18754</span> oaf64data[it.oIndex + j] = ox;<a name="line.18754"></a>
<span class="sourceLineNo">18755</span> }<a name="line.18755"></a>
<span class="sourceLineNo">18756</span> }<a name="line.18756"></a>
<span class="sourceLineNo">18757</span> } else {<a name="line.18757"></a>
<span class="sourceLineNo">18758</span> while (it.hasNext()) {<a name="line.18758"></a>
<span class="sourceLineNo">18759</span> final long ix = it.aLong;<a name="line.18759"></a>
<span class="sourceLineNo">18760</span> double ox;<a name="line.18760"></a>
<span class="sourceLineNo">18761</span> ox = (Math.cos(ix));<a name="line.18761"></a>
<span class="sourceLineNo">18762</span> for (int j = 0; j &lt; is; j++) {<a name="line.18762"></a>
<span class="sourceLineNo">18763</span> oaf64data[it.oIndex + j] = ox;<a name="line.18763"></a>
<span class="sourceLineNo">18764</span> }<a name="line.18764"></a>
<span class="sourceLineNo">18765</span> }<a name="line.18765"></a>
<span class="sourceLineNo">18766</span> }<a name="line.18766"></a>
<span class="sourceLineNo">18767</span> } else {<a name="line.18767"></a>
<span class="sourceLineNo">18768</span> if (it.isOutputDouble()) {<a name="line.18768"></a>
<span class="sourceLineNo">18769</span> while (it.hasNext()) {<a name="line.18769"></a>
<span class="sourceLineNo">18770</span> for (int j = 0; j &lt; is; j++) {<a name="line.18770"></a>
<span class="sourceLineNo">18771</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.18771"></a>
<span class="sourceLineNo">18772</span> double ox;<a name="line.18772"></a>
<span class="sourceLineNo">18773</span> ox = (Math.cos(ix));<a name="line.18773"></a>
<span class="sourceLineNo">18774</span> oaf64data[it.oIndex + j] = ox;<a name="line.18774"></a>
<span class="sourceLineNo">18775</span> }<a name="line.18775"></a>
<span class="sourceLineNo">18776</span> }<a name="line.18776"></a>
<span class="sourceLineNo">18777</span> } else {<a name="line.18777"></a>
<span class="sourceLineNo">18778</span> while (it.hasNext()) {<a name="line.18778"></a>
<span class="sourceLineNo">18779</span> for (int j = 0; j &lt; is; j++) {<a name="line.18779"></a>
<span class="sourceLineNo">18780</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.18780"></a>
<span class="sourceLineNo">18781</span> double ox;<a name="line.18781"></a>
<span class="sourceLineNo">18782</span> ox = (Math.cos(ix));<a name="line.18782"></a>
<span class="sourceLineNo">18783</span> oaf64data[it.oIndex + j] = ox;<a name="line.18783"></a>
<span class="sourceLineNo">18784</span> }<a name="line.18784"></a>
<span class="sourceLineNo">18785</span> }<a name="line.18785"></a>
<span class="sourceLineNo">18786</span> }<a name="line.18786"></a>
<span class="sourceLineNo">18787</span> }<a name="line.18787"></a>
<span class="sourceLineNo">18788</span> break;<a name="line.18788"></a>
<span class="sourceLineNo">18789</span> case Dataset.COMPLEX64:<a name="line.18789"></a>
<span class="sourceLineNo">18790</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.18790"></a>
<span class="sourceLineNo">18791</span> if (!da.isComplex()) {<a name="line.18791"></a>
<span class="sourceLineNo">18792</span> if (it.isOutputDouble()) {<a name="line.18792"></a>
<span class="sourceLineNo">18793</span> final double iy = 0;<a name="line.18793"></a>
<span class="sourceLineNo">18794</span> while (it.hasNext()) {<a name="line.18794"></a>
<span class="sourceLineNo">18795</span> final double ix = it.aDouble;<a name="line.18795"></a>
<span class="sourceLineNo">18796</span> float ox;<a name="line.18796"></a>
<span class="sourceLineNo">18797</span> float oy;<a name="line.18797"></a>
<span class="sourceLineNo">18798</span> ox = (float) (Math.cos(ix)*Math.cosh(iy));<a name="line.18798"></a>
<span class="sourceLineNo">18799</span> oy = (float) (-Math.sin(ix)*Math.sinh(iy));<a name="line.18799"></a>
<span class="sourceLineNo">18800</span> oc64data[it.oIndex] = ox;<a name="line.18800"></a>
<span class="sourceLineNo">18801</span> oc64data[it.oIndex + 1] = oy;<a name="line.18801"></a>
<span class="sourceLineNo">18802</span> }<a name="line.18802"></a>
<span class="sourceLineNo">18803</span> } else {<a name="line.18803"></a>
<span class="sourceLineNo">18804</span> final long iy = 0;<a name="line.18804"></a>
<span class="sourceLineNo">18805</span> while (it.hasNext()) {<a name="line.18805"></a>
<span class="sourceLineNo">18806</span> final long ix = it.aLong;<a name="line.18806"></a>
<span class="sourceLineNo">18807</span> float ox;<a name="line.18807"></a>
<span class="sourceLineNo">18808</span> float oy;<a name="line.18808"></a>
<span class="sourceLineNo">18809</span> ox = (float) toLong(Math.cos(ix)*Math.cosh(iy));<a name="line.18809"></a>
<span class="sourceLineNo">18810</span> oy = (float) toLong(-Math.sin(ix)*Math.sinh(iy));<a name="line.18810"></a>
<span class="sourceLineNo">18811</span> oc64data[it.oIndex] = ox;<a name="line.18811"></a>
<span class="sourceLineNo">18812</span> oc64data[it.oIndex + 1] = oy;<a name="line.18812"></a>
<span class="sourceLineNo">18813</span> }<a name="line.18813"></a>
<span class="sourceLineNo">18814</span> }<a name="line.18814"></a>
<span class="sourceLineNo">18815</span> } else {<a name="line.18815"></a>
<span class="sourceLineNo">18816</span> while (it.hasNext()) {<a name="line.18816"></a>
<span class="sourceLineNo">18817</span> final double ix = it.aDouble;<a name="line.18817"></a>
<span class="sourceLineNo">18818</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.18818"></a>
<span class="sourceLineNo">18819</span> float ox;<a name="line.18819"></a>
<span class="sourceLineNo">18820</span> float oy;<a name="line.18820"></a>
<span class="sourceLineNo">18821</span> ox = (float) (Math.cos(ix)*Math.cosh(iy));<a name="line.18821"></a>
<span class="sourceLineNo">18822</span> oy = (float) (-Math.sin(ix)*Math.sinh(iy));<a name="line.18822"></a>
<span class="sourceLineNo">18823</span> oc64data[it.oIndex] = ox;<a name="line.18823"></a>
<span class="sourceLineNo">18824</span> oc64data[it.oIndex + 1] = oy;<a name="line.18824"></a>
<span class="sourceLineNo">18825</span> }<a name="line.18825"></a>
<span class="sourceLineNo">18826</span> }<a name="line.18826"></a>
<span class="sourceLineNo">18827</span> break;<a name="line.18827"></a>
<span class="sourceLineNo">18828</span> case Dataset.COMPLEX128:<a name="line.18828"></a>
<span class="sourceLineNo">18829</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.18829"></a>
<span class="sourceLineNo">18830</span> if (!da.isComplex()) {<a name="line.18830"></a>
<span class="sourceLineNo">18831</span> if (it.isOutputDouble()) {<a name="line.18831"></a>
<span class="sourceLineNo">18832</span> final double iy = 0;<a name="line.18832"></a>
<span class="sourceLineNo">18833</span> while (it.hasNext()) {<a name="line.18833"></a>
<span class="sourceLineNo">18834</span> final double ix = it.aDouble;<a name="line.18834"></a>
<span class="sourceLineNo">18835</span> double ox;<a name="line.18835"></a>
<span class="sourceLineNo">18836</span> double oy;<a name="line.18836"></a>
<span class="sourceLineNo">18837</span> ox = (Math.cos(ix)*Math.cosh(iy));<a name="line.18837"></a>
<span class="sourceLineNo">18838</span> oy = (-Math.sin(ix)*Math.sinh(iy));<a name="line.18838"></a>
<span class="sourceLineNo">18839</span> oc128data[it.oIndex] = ox;<a name="line.18839"></a>
<span class="sourceLineNo">18840</span> oc128data[it.oIndex + 1] = oy;<a name="line.18840"></a>
<span class="sourceLineNo">18841</span> }<a name="line.18841"></a>
<span class="sourceLineNo">18842</span> } else {<a name="line.18842"></a>
<span class="sourceLineNo">18843</span> final long iy = 0;<a name="line.18843"></a>
<span class="sourceLineNo">18844</span> while (it.hasNext()) {<a name="line.18844"></a>
<span class="sourceLineNo">18845</span> final long ix = it.aLong;<a name="line.18845"></a>
<span class="sourceLineNo">18846</span> double ox;<a name="line.18846"></a>
<span class="sourceLineNo">18847</span> double oy;<a name="line.18847"></a>
<span class="sourceLineNo">18848</span> ox = (double) (Math.cos(ix)*Math.cosh(iy));<a name="line.18848"></a>
<span class="sourceLineNo">18849</span> oy = (double) (-Math.sin(ix)*Math.sinh(iy));<a name="line.18849"></a>
<span class="sourceLineNo">18850</span> oc128data[it.oIndex] = ox;<a name="line.18850"></a>
<span class="sourceLineNo">18851</span> oc128data[it.oIndex + 1] = oy;<a name="line.18851"></a>
<span class="sourceLineNo">18852</span> }<a name="line.18852"></a>
<span class="sourceLineNo">18853</span> }<a name="line.18853"></a>
<span class="sourceLineNo">18854</span> } else {<a name="line.18854"></a>
<span class="sourceLineNo">18855</span> while (it.hasNext()) {<a name="line.18855"></a>
<span class="sourceLineNo">18856</span> final double ix = it.aDouble;<a name="line.18856"></a>
<span class="sourceLineNo">18857</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.18857"></a>
<span class="sourceLineNo">18858</span> double ox;<a name="line.18858"></a>
<span class="sourceLineNo">18859</span> double oy;<a name="line.18859"></a>
<span class="sourceLineNo">18860</span> ox = (Math.cos(ix)*Math.cosh(iy));<a name="line.18860"></a>
<span class="sourceLineNo">18861</span> oy = (-Math.sin(ix)*Math.sinh(iy));<a name="line.18861"></a>
<span class="sourceLineNo">18862</span> oc128data[it.oIndex] = ox;<a name="line.18862"></a>
<span class="sourceLineNo">18863</span> oc128data[it.oIndex + 1] = oy;<a name="line.18863"></a>
<span class="sourceLineNo">18864</span> }<a name="line.18864"></a>
<span class="sourceLineNo">18865</span> }<a name="line.18865"></a>
<span class="sourceLineNo">18866</span> break;<a name="line.18866"></a>
<span class="sourceLineNo">18867</span> default:<a name="line.18867"></a>
<span class="sourceLineNo">18868</span> throw new IllegalArgumentException("cos supports integer, compound integer, real, compound real, complex datasets only");<a name="line.18868"></a>
<span class="sourceLineNo">18869</span> }<a name="line.18869"></a>
<span class="sourceLineNo">18870</span><a name="line.18870"></a>
<span class="sourceLineNo">18871</span> addFunctionName(result, "cos");<a name="line.18871"></a>
<span class="sourceLineNo">18872</span> return result;<a name="line.18872"></a>
<span class="sourceLineNo">18873</span> }<a name="line.18873"></a>
<span class="sourceLineNo">18874</span><a name="line.18874"></a>
<span class="sourceLineNo">18875</span> /**<a name="line.18875"></a>
<span class="sourceLineNo">18876</span> * tan - evaluate the tangent function on each element of the dataset<a name="line.18876"></a>
<span class="sourceLineNo">18877</span> * @param a<a name="line.18877"></a>
<span class="sourceLineNo">18878</span> * @return dataset<a name="line.18878"></a>
<span class="sourceLineNo">18879</span> */<a name="line.18879"></a>
<span class="sourceLineNo">18880</span> public static Dataset tan(final Object a) {<a name="line.18880"></a>
<span class="sourceLineNo">18881</span> return tan(a, null);<a name="line.18881"></a>
<span class="sourceLineNo">18882</span> }<a name="line.18882"></a>
<span class="sourceLineNo">18883</span><a name="line.18883"></a>
<span class="sourceLineNo">18884</span> /**<a name="line.18884"></a>
<span class="sourceLineNo">18885</span> * tan - evaluate the tangent function on each element of the dataset<a name="line.18885"></a>
<span class="sourceLineNo">18886</span> * @param a<a name="line.18886"></a>
<span class="sourceLineNo">18887</span> * @param o output can be null - in which case, a new dataset is created<a name="line.18887"></a>
<span class="sourceLineNo">18888</span> * @return dataset<a name="line.18888"></a>
<span class="sourceLineNo">18889</span> */<a name="line.18889"></a>
<span class="sourceLineNo">18890</span> public static Dataset tan(final Object a, final Dataset o) {<a name="line.18890"></a>
<span class="sourceLineNo">18891</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.18891"></a>
<span class="sourceLineNo">18892</span> SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true);<a name="line.18892"></a>
<span class="sourceLineNo">18893</span> final Dataset result = it.getOutput();<a name="line.18893"></a>
<span class="sourceLineNo">18894</span> if (!result.isComplex()) {<a name="line.18894"></a>
<span class="sourceLineNo">18895</span> if (da.isComplex()) {<a name="line.18895"></a>
<span class="sourceLineNo">18896</span> da = da.getRealView();<a name="line.18896"></a>
<span class="sourceLineNo">18897</span> it = new SingleInputBroadcastIterator(da, result, true);<a name="line.18897"></a>
<span class="sourceLineNo">18898</span> }<a name="line.18898"></a>
<span class="sourceLineNo">18899</span> }<a name="line.18899"></a>
<span class="sourceLineNo">18900</span> final int is = result.getElementsPerItem();<a name="line.18900"></a>
<span class="sourceLineNo">18901</span> final int as = da.getElementsPerItem();<a name="line.18901"></a>
<span class="sourceLineNo">18902</span> final int dt = result.getDType();<a name="line.18902"></a>
<span class="sourceLineNo">18903</span><a name="line.18903"></a>
<span class="sourceLineNo">18904</span> switch(dt) {<a name="line.18904"></a>
<span class="sourceLineNo">18905</span> case Dataset.INT8:<a name="line.18905"></a>
<span class="sourceLineNo">18906</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.18906"></a>
<span class="sourceLineNo">18907</span> if (it.isOutputDouble()) {<a name="line.18907"></a>
<span class="sourceLineNo">18908</span> while (it.hasNext()) {<a name="line.18908"></a>
<span class="sourceLineNo">18909</span> final double ix = it.aDouble;<a name="line.18909"></a>
<span class="sourceLineNo">18910</span> byte ox;<a name="line.18910"></a>
<span class="sourceLineNo">18911</span> ox = (byte) toLong(Math.tan(ix));<a name="line.18911"></a>
<span class="sourceLineNo">18912</span> oi8data[it.oIndex] = ox;<a name="line.18912"></a>
<span class="sourceLineNo">18913</span> }<a name="line.18913"></a>
<span class="sourceLineNo">18914</span> } else {<a name="line.18914"></a>
<span class="sourceLineNo">18915</span> while (it.hasNext()) {<a name="line.18915"></a>
<span class="sourceLineNo">18916</span> final long ix = it.aLong;<a name="line.18916"></a>
<span class="sourceLineNo">18917</span> byte ox;<a name="line.18917"></a>
<span class="sourceLineNo">18918</span> ox = (byte) toLong(Math.tan(ix));<a name="line.18918"></a>
<span class="sourceLineNo">18919</span> oi8data[it.oIndex] = ox;<a name="line.18919"></a>
<span class="sourceLineNo">18920</span> }<a name="line.18920"></a>
<span class="sourceLineNo">18921</span> }<a name="line.18921"></a>
<span class="sourceLineNo">18922</span> break;<a name="line.18922"></a>
<span class="sourceLineNo">18923</span> case Dataset.INT16:<a name="line.18923"></a>
<span class="sourceLineNo">18924</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.18924"></a>
<span class="sourceLineNo">18925</span> if (it.isOutputDouble()) {<a name="line.18925"></a>
<span class="sourceLineNo">18926</span> while (it.hasNext()) {<a name="line.18926"></a>
<span class="sourceLineNo">18927</span> final double ix = it.aDouble;<a name="line.18927"></a>
<span class="sourceLineNo">18928</span> short ox;<a name="line.18928"></a>
<span class="sourceLineNo">18929</span> ox = (short) toLong(Math.tan(ix));<a name="line.18929"></a>
<span class="sourceLineNo">18930</span> oi16data[it.oIndex] = ox;<a name="line.18930"></a>
<span class="sourceLineNo">18931</span> }<a name="line.18931"></a>
<span class="sourceLineNo">18932</span> } else {<a name="line.18932"></a>
<span class="sourceLineNo">18933</span> while (it.hasNext()) {<a name="line.18933"></a>
<span class="sourceLineNo">18934</span> final long ix = it.aLong;<a name="line.18934"></a>
<span class="sourceLineNo">18935</span> short ox;<a name="line.18935"></a>
<span class="sourceLineNo">18936</span> ox = (short) toLong(Math.tan(ix));<a name="line.18936"></a>
<span class="sourceLineNo">18937</span> oi16data[it.oIndex] = ox;<a name="line.18937"></a>
<span class="sourceLineNo">18938</span> }<a name="line.18938"></a>
<span class="sourceLineNo">18939</span> }<a name="line.18939"></a>
<span class="sourceLineNo">18940</span> break;<a name="line.18940"></a>
<span class="sourceLineNo">18941</span> case Dataset.INT64:<a name="line.18941"></a>
<span class="sourceLineNo">18942</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.18942"></a>
<span class="sourceLineNo">18943</span> if (it.isOutputDouble()) {<a name="line.18943"></a>
<span class="sourceLineNo">18944</span> while (it.hasNext()) {<a name="line.18944"></a>
<span class="sourceLineNo">18945</span> final double ix = it.aDouble;<a name="line.18945"></a>
<span class="sourceLineNo">18946</span> long ox;<a name="line.18946"></a>
<span class="sourceLineNo">18947</span> ox = toLong(Math.tan(ix));<a name="line.18947"></a>
<span class="sourceLineNo">18948</span> oi64data[it.oIndex] = ox;<a name="line.18948"></a>
<span class="sourceLineNo">18949</span> }<a name="line.18949"></a>
<span class="sourceLineNo">18950</span> } else {<a name="line.18950"></a>
<span class="sourceLineNo">18951</span> while (it.hasNext()) {<a name="line.18951"></a>
<span class="sourceLineNo">18952</span> final long ix = it.aLong;<a name="line.18952"></a>
<span class="sourceLineNo">18953</span> long ox;<a name="line.18953"></a>
<span class="sourceLineNo">18954</span> ox = toLong(Math.tan(ix));<a name="line.18954"></a>
<span class="sourceLineNo">18955</span> oi64data[it.oIndex] = ox;<a name="line.18955"></a>
<span class="sourceLineNo">18956</span> }<a name="line.18956"></a>
<span class="sourceLineNo">18957</span> }<a name="line.18957"></a>
<span class="sourceLineNo">18958</span> break;<a name="line.18958"></a>
<span class="sourceLineNo">18959</span> case Dataset.INT32:<a name="line.18959"></a>
<span class="sourceLineNo">18960</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.18960"></a>
<span class="sourceLineNo">18961</span> if (it.isOutputDouble()) {<a name="line.18961"></a>
<span class="sourceLineNo">18962</span> while (it.hasNext()) {<a name="line.18962"></a>
<span class="sourceLineNo">18963</span> final double ix = it.aDouble;<a name="line.18963"></a>
<span class="sourceLineNo">18964</span> int ox;<a name="line.18964"></a>
<span class="sourceLineNo">18965</span> ox = (int) toLong(Math.tan(ix));<a name="line.18965"></a>
<span class="sourceLineNo">18966</span> oi32data[it.oIndex] = ox;<a name="line.18966"></a>
<span class="sourceLineNo">18967</span> }<a name="line.18967"></a>
<span class="sourceLineNo">18968</span> } else {<a name="line.18968"></a>
<span class="sourceLineNo">18969</span> while (it.hasNext()) {<a name="line.18969"></a>
<span class="sourceLineNo">18970</span> final long ix = it.aLong;<a name="line.18970"></a>
<span class="sourceLineNo">18971</span> int ox;<a name="line.18971"></a>
<span class="sourceLineNo">18972</span> ox = (int) toLong(Math.tan(ix));<a name="line.18972"></a>
<span class="sourceLineNo">18973</span> oi32data[it.oIndex] = ox;<a name="line.18973"></a>
<span class="sourceLineNo">18974</span> }<a name="line.18974"></a>
<span class="sourceLineNo">18975</span> }<a name="line.18975"></a>
<span class="sourceLineNo">18976</span> break;<a name="line.18976"></a>
<span class="sourceLineNo">18977</span> case Dataset.ARRAYINT8:<a name="line.18977"></a>
<span class="sourceLineNo">18978</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.18978"></a>
<span class="sourceLineNo">18979</span> if (is == 1) {<a name="line.18979"></a>
<span class="sourceLineNo">18980</span> if (it.isOutputDouble()) {<a name="line.18980"></a>
<span class="sourceLineNo">18981</span> while (it.hasNext()) {<a name="line.18981"></a>
<span class="sourceLineNo">18982</span> final double ix = it.aDouble;<a name="line.18982"></a>
<span class="sourceLineNo">18983</span> byte ox;<a name="line.18983"></a>
<span class="sourceLineNo">18984</span> ox = (byte) toLong(Math.tan(ix));<a name="line.18984"></a>
<span class="sourceLineNo">18985</span> oai8data[it.oIndex] = ox;<a name="line.18985"></a>
<span class="sourceLineNo">18986</span> }<a name="line.18986"></a>
<span class="sourceLineNo">18987</span> } else {<a name="line.18987"></a>
<span class="sourceLineNo">18988</span> while (it.hasNext()) {<a name="line.18988"></a>
<span class="sourceLineNo">18989</span> final long ix = it.aLong;<a name="line.18989"></a>
<span class="sourceLineNo">18990</span> byte ox;<a name="line.18990"></a>
<span class="sourceLineNo">18991</span> ox = (byte) toLong(Math.tan(ix));<a name="line.18991"></a>
<span class="sourceLineNo">18992</span> oai8data[it.oIndex] = ox;<a name="line.18992"></a>
<span class="sourceLineNo">18993</span> }<a name="line.18993"></a>
<span class="sourceLineNo">18994</span> }<a name="line.18994"></a>
<span class="sourceLineNo">18995</span> } else if (as == 1) {<a name="line.18995"></a>
<span class="sourceLineNo">18996</span> if (it.isOutputDouble()) {<a name="line.18996"></a>
<span class="sourceLineNo">18997</span> while (it.hasNext()) {<a name="line.18997"></a>
<span class="sourceLineNo">18998</span> final double ix = it.aDouble;<a name="line.18998"></a>
<span class="sourceLineNo">18999</span> byte ox;<a name="line.18999"></a>
<span class="sourceLineNo">19000</span> ox = (byte) toLong(Math.tan(ix));<a name="line.19000"></a>
<span class="sourceLineNo">19001</span> for (int j = 0; j &lt; is; j++) {<a name="line.19001"></a>
<span class="sourceLineNo">19002</span> oai8data[it.oIndex + j] = ox;<a name="line.19002"></a>
<span class="sourceLineNo">19003</span> }<a name="line.19003"></a>
<span class="sourceLineNo">19004</span> }<a name="line.19004"></a>
<span class="sourceLineNo">19005</span> } else {<a name="line.19005"></a>
<span class="sourceLineNo">19006</span> while (it.hasNext()) {<a name="line.19006"></a>
<span class="sourceLineNo">19007</span> final long ix = it.aLong;<a name="line.19007"></a>
<span class="sourceLineNo">19008</span> byte ox;<a name="line.19008"></a>
<span class="sourceLineNo">19009</span> ox = (byte) toLong(Math.tan(ix));<a name="line.19009"></a>
<span class="sourceLineNo">19010</span> for (int j = 0; j &lt; is; j++) {<a name="line.19010"></a>
<span class="sourceLineNo">19011</span> oai8data[it.oIndex + j] = ox;<a name="line.19011"></a>
<span class="sourceLineNo">19012</span> }<a name="line.19012"></a>
<span class="sourceLineNo">19013</span> }<a name="line.19013"></a>
<span class="sourceLineNo">19014</span> }<a name="line.19014"></a>
<span class="sourceLineNo">19015</span> } else {<a name="line.19015"></a>
<span class="sourceLineNo">19016</span> if (it.isOutputDouble()) {<a name="line.19016"></a>
<span class="sourceLineNo">19017</span> while (it.hasNext()) {<a name="line.19017"></a>
<span class="sourceLineNo">19018</span> for (int j = 0; j &lt; is; j++) {<a name="line.19018"></a>
<span class="sourceLineNo">19019</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.19019"></a>
<span class="sourceLineNo">19020</span> byte ox;<a name="line.19020"></a>
<span class="sourceLineNo">19021</span> ox = (byte) toLong(Math.tan(ix));<a name="line.19021"></a>
<span class="sourceLineNo">19022</span> oai8data[it.oIndex + j] = ox;<a name="line.19022"></a>
<span class="sourceLineNo">19023</span> }<a name="line.19023"></a>
<span class="sourceLineNo">19024</span> }<a name="line.19024"></a>
<span class="sourceLineNo">19025</span> } else {<a name="line.19025"></a>
<span class="sourceLineNo">19026</span> while (it.hasNext()) {<a name="line.19026"></a>
<span class="sourceLineNo">19027</span> for (int j = 0; j &lt; is; j++) {<a name="line.19027"></a>
<span class="sourceLineNo">19028</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.19028"></a>
<span class="sourceLineNo">19029</span> byte ox;<a name="line.19029"></a>
<span class="sourceLineNo">19030</span> ox = (byte) toLong(Math.tan(ix));<a name="line.19030"></a>
<span class="sourceLineNo">19031</span> oai8data[it.oIndex + j] = ox;<a name="line.19031"></a>
<span class="sourceLineNo">19032</span> }<a name="line.19032"></a>
<span class="sourceLineNo">19033</span> }<a name="line.19033"></a>
<span class="sourceLineNo">19034</span> }<a name="line.19034"></a>
<span class="sourceLineNo">19035</span> }<a name="line.19035"></a>
<span class="sourceLineNo">19036</span> break;<a name="line.19036"></a>
<span class="sourceLineNo">19037</span> case Dataset.ARRAYINT16:<a name="line.19037"></a>
<span class="sourceLineNo">19038</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.19038"></a>
<span class="sourceLineNo">19039</span> if (is == 1) {<a name="line.19039"></a>
<span class="sourceLineNo">19040</span> if (it.isOutputDouble()) {<a name="line.19040"></a>
<span class="sourceLineNo">19041</span> while (it.hasNext()) {<a name="line.19041"></a>
<span class="sourceLineNo">19042</span> final double ix = it.aDouble;<a name="line.19042"></a>
<span class="sourceLineNo">19043</span> short ox;<a name="line.19043"></a>
<span class="sourceLineNo">19044</span> ox = (short) toLong(Math.tan(ix));<a name="line.19044"></a>
<span class="sourceLineNo">19045</span> oai16data[it.oIndex] = ox;<a name="line.19045"></a>
<span class="sourceLineNo">19046</span> }<a name="line.19046"></a>
<span class="sourceLineNo">19047</span> } else {<a name="line.19047"></a>
<span class="sourceLineNo">19048</span> while (it.hasNext()) {<a name="line.19048"></a>
<span class="sourceLineNo">19049</span> final long ix = it.aLong;<a name="line.19049"></a>
<span class="sourceLineNo">19050</span> short ox;<a name="line.19050"></a>
<span class="sourceLineNo">19051</span> ox = (short) toLong(Math.tan(ix));<a name="line.19051"></a>
<span class="sourceLineNo">19052</span> oai16data[it.oIndex] = ox;<a name="line.19052"></a>
<span class="sourceLineNo">19053</span> }<a name="line.19053"></a>
<span class="sourceLineNo">19054</span> }<a name="line.19054"></a>
<span class="sourceLineNo">19055</span> } else if (as == 1) {<a name="line.19055"></a>
<span class="sourceLineNo">19056</span> if (it.isOutputDouble()) {<a name="line.19056"></a>
<span class="sourceLineNo">19057</span> while (it.hasNext()) {<a name="line.19057"></a>
<span class="sourceLineNo">19058</span> final double ix = it.aDouble;<a name="line.19058"></a>
<span class="sourceLineNo">19059</span> short ox;<a name="line.19059"></a>
<span class="sourceLineNo">19060</span> ox = (short) toLong(Math.tan(ix));<a name="line.19060"></a>
<span class="sourceLineNo">19061</span> for (int j = 0; j &lt; is; j++) {<a name="line.19061"></a>
<span class="sourceLineNo">19062</span> oai16data[it.oIndex + j] = ox;<a name="line.19062"></a>
<span class="sourceLineNo">19063</span> }<a name="line.19063"></a>
<span class="sourceLineNo">19064</span> }<a name="line.19064"></a>
<span class="sourceLineNo">19065</span> } else {<a name="line.19065"></a>
<span class="sourceLineNo">19066</span> while (it.hasNext()) {<a name="line.19066"></a>
<span class="sourceLineNo">19067</span> final long ix = it.aLong;<a name="line.19067"></a>
<span class="sourceLineNo">19068</span> short ox;<a name="line.19068"></a>
<span class="sourceLineNo">19069</span> ox = (short) toLong(Math.tan(ix));<a name="line.19069"></a>
<span class="sourceLineNo">19070</span> for (int j = 0; j &lt; is; j++) {<a name="line.19070"></a>
<span class="sourceLineNo">19071</span> oai16data[it.oIndex + j] = ox;<a name="line.19071"></a>
<span class="sourceLineNo">19072</span> }<a name="line.19072"></a>
<span class="sourceLineNo">19073</span> }<a name="line.19073"></a>
<span class="sourceLineNo">19074</span> }<a name="line.19074"></a>
<span class="sourceLineNo">19075</span> } else {<a name="line.19075"></a>
<span class="sourceLineNo">19076</span> if (it.isOutputDouble()) {<a name="line.19076"></a>
<span class="sourceLineNo">19077</span> while (it.hasNext()) {<a name="line.19077"></a>
<span class="sourceLineNo">19078</span> for (int j = 0; j &lt; is; j++) {<a name="line.19078"></a>
<span class="sourceLineNo">19079</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.19079"></a>
<span class="sourceLineNo">19080</span> short ox;<a name="line.19080"></a>
<span class="sourceLineNo">19081</span> ox = (short) toLong(Math.tan(ix));<a name="line.19081"></a>
<span class="sourceLineNo">19082</span> oai16data[it.oIndex + j] = ox;<a name="line.19082"></a>
<span class="sourceLineNo">19083</span> }<a name="line.19083"></a>
<span class="sourceLineNo">19084</span> }<a name="line.19084"></a>
<span class="sourceLineNo">19085</span> } else {<a name="line.19085"></a>
<span class="sourceLineNo">19086</span> while (it.hasNext()) {<a name="line.19086"></a>
<span class="sourceLineNo">19087</span> for (int j = 0; j &lt; is; j++) {<a name="line.19087"></a>
<span class="sourceLineNo">19088</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.19088"></a>
<span class="sourceLineNo">19089</span> short ox;<a name="line.19089"></a>
<span class="sourceLineNo">19090</span> ox = (short) toLong(Math.tan(ix));<a name="line.19090"></a>
<span class="sourceLineNo">19091</span> oai16data[it.oIndex + j] = ox;<a name="line.19091"></a>
<span class="sourceLineNo">19092</span> }<a name="line.19092"></a>
<span class="sourceLineNo">19093</span> }<a name="line.19093"></a>
<span class="sourceLineNo">19094</span> }<a name="line.19094"></a>
<span class="sourceLineNo">19095</span> }<a name="line.19095"></a>
<span class="sourceLineNo">19096</span> break;<a name="line.19096"></a>
<span class="sourceLineNo">19097</span> case Dataset.ARRAYINT64:<a name="line.19097"></a>
<span class="sourceLineNo">19098</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.19098"></a>
<span class="sourceLineNo">19099</span> if (is == 1) {<a name="line.19099"></a>
<span class="sourceLineNo">19100</span> if (it.isOutputDouble()) {<a name="line.19100"></a>
<span class="sourceLineNo">19101</span> while (it.hasNext()) {<a name="line.19101"></a>
<span class="sourceLineNo">19102</span> final double ix = it.aDouble;<a name="line.19102"></a>
<span class="sourceLineNo">19103</span> long ox;<a name="line.19103"></a>
<span class="sourceLineNo">19104</span> ox = toLong(Math.tan(ix));<a name="line.19104"></a>
<span class="sourceLineNo">19105</span> oai64data[it.oIndex] = ox;<a name="line.19105"></a>
<span class="sourceLineNo">19106</span> }<a name="line.19106"></a>
<span class="sourceLineNo">19107</span> } else {<a name="line.19107"></a>
<span class="sourceLineNo">19108</span> while (it.hasNext()) {<a name="line.19108"></a>
<span class="sourceLineNo">19109</span> final long ix = it.aLong;<a name="line.19109"></a>
<span class="sourceLineNo">19110</span> long ox;<a name="line.19110"></a>
<span class="sourceLineNo">19111</span> ox = toLong(Math.tan(ix));<a name="line.19111"></a>
<span class="sourceLineNo">19112</span> oai64data[it.oIndex] = ox;<a name="line.19112"></a>
<span class="sourceLineNo">19113</span> }<a name="line.19113"></a>
<span class="sourceLineNo">19114</span> }<a name="line.19114"></a>
<span class="sourceLineNo">19115</span> } else if (as == 1) {<a name="line.19115"></a>
<span class="sourceLineNo">19116</span> if (it.isOutputDouble()) {<a name="line.19116"></a>
<span class="sourceLineNo">19117</span> while (it.hasNext()) {<a name="line.19117"></a>
<span class="sourceLineNo">19118</span> final double ix = it.aDouble;<a name="line.19118"></a>
<span class="sourceLineNo">19119</span> long ox;<a name="line.19119"></a>
<span class="sourceLineNo">19120</span> ox = toLong(Math.tan(ix));<a name="line.19120"></a>
<span class="sourceLineNo">19121</span> for (int j = 0; j &lt; is; j++) {<a name="line.19121"></a>
<span class="sourceLineNo">19122</span> oai64data[it.oIndex + j] = ox;<a name="line.19122"></a>
<span class="sourceLineNo">19123</span> }<a name="line.19123"></a>
<span class="sourceLineNo">19124</span> }<a name="line.19124"></a>
<span class="sourceLineNo">19125</span> } else {<a name="line.19125"></a>
<span class="sourceLineNo">19126</span> while (it.hasNext()) {<a name="line.19126"></a>
<span class="sourceLineNo">19127</span> final long ix = it.aLong;<a name="line.19127"></a>
<span class="sourceLineNo">19128</span> long ox;<a name="line.19128"></a>
<span class="sourceLineNo">19129</span> ox = toLong(Math.tan(ix));<a name="line.19129"></a>
<span class="sourceLineNo">19130</span> for (int j = 0; j &lt; is; j++) {<a name="line.19130"></a>
<span class="sourceLineNo">19131</span> oai64data[it.oIndex + j] = ox;<a name="line.19131"></a>
<span class="sourceLineNo">19132</span> }<a name="line.19132"></a>
<span class="sourceLineNo">19133</span> }<a name="line.19133"></a>
<span class="sourceLineNo">19134</span> }<a name="line.19134"></a>
<span class="sourceLineNo">19135</span> } else {<a name="line.19135"></a>
<span class="sourceLineNo">19136</span> if (it.isOutputDouble()) {<a name="line.19136"></a>
<span class="sourceLineNo">19137</span> while (it.hasNext()) {<a name="line.19137"></a>
<span class="sourceLineNo">19138</span> for (int j = 0; j &lt; is; j++) {<a name="line.19138"></a>
<span class="sourceLineNo">19139</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.19139"></a>
<span class="sourceLineNo">19140</span> long ox;<a name="line.19140"></a>
<span class="sourceLineNo">19141</span> ox = toLong(Math.tan(ix));<a name="line.19141"></a>
<span class="sourceLineNo">19142</span> oai64data[it.oIndex + j] = ox;<a name="line.19142"></a>
<span class="sourceLineNo">19143</span> }<a name="line.19143"></a>
<span class="sourceLineNo">19144</span> }<a name="line.19144"></a>
<span class="sourceLineNo">19145</span> } else {<a name="line.19145"></a>
<span class="sourceLineNo">19146</span> while (it.hasNext()) {<a name="line.19146"></a>
<span class="sourceLineNo">19147</span> for (int j = 0; j &lt; is; j++) {<a name="line.19147"></a>
<span class="sourceLineNo">19148</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.19148"></a>
<span class="sourceLineNo">19149</span> long ox;<a name="line.19149"></a>
<span class="sourceLineNo">19150</span> ox = toLong(Math.tan(ix));<a name="line.19150"></a>
<span class="sourceLineNo">19151</span> oai64data[it.oIndex + j] = ox;<a name="line.19151"></a>
<span class="sourceLineNo">19152</span> }<a name="line.19152"></a>
<span class="sourceLineNo">19153</span> }<a name="line.19153"></a>
<span class="sourceLineNo">19154</span> }<a name="line.19154"></a>
<span class="sourceLineNo">19155</span> }<a name="line.19155"></a>
<span class="sourceLineNo">19156</span> break;<a name="line.19156"></a>
<span class="sourceLineNo">19157</span> case Dataset.ARRAYINT32:<a name="line.19157"></a>
<span class="sourceLineNo">19158</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.19158"></a>
<span class="sourceLineNo">19159</span> if (is == 1) {<a name="line.19159"></a>
<span class="sourceLineNo">19160</span> if (it.isOutputDouble()) {<a name="line.19160"></a>
<span class="sourceLineNo">19161</span> while (it.hasNext()) {<a name="line.19161"></a>
<span class="sourceLineNo">19162</span> final double ix = it.aDouble;<a name="line.19162"></a>
<span class="sourceLineNo">19163</span> int ox;<a name="line.19163"></a>
<span class="sourceLineNo">19164</span> ox = (int) toLong(Math.tan(ix));<a name="line.19164"></a>
<span class="sourceLineNo">19165</span> oai32data[it.oIndex] = ox;<a name="line.19165"></a>
<span class="sourceLineNo">19166</span> }<a name="line.19166"></a>
<span class="sourceLineNo">19167</span> } else {<a name="line.19167"></a>
<span class="sourceLineNo">19168</span> while (it.hasNext()) {<a name="line.19168"></a>
<span class="sourceLineNo">19169</span> final long ix = it.aLong;<a name="line.19169"></a>
<span class="sourceLineNo">19170</span> int ox;<a name="line.19170"></a>
<span class="sourceLineNo">19171</span> ox = (int) toLong(Math.tan(ix));<a name="line.19171"></a>
<span class="sourceLineNo">19172</span> oai32data[it.oIndex] = ox;<a name="line.19172"></a>
<span class="sourceLineNo">19173</span> }<a name="line.19173"></a>
<span class="sourceLineNo">19174</span> }<a name="line.19174"></a>
<span class="sourceLineNo">19175</span> } else if (as == 1) {<a name="line.19175"></a>
<span class="sourceLineNo">19176</span> if (it.isOutputDouble()) {<a name="line.19176"></a>
<span class="sourceLineNo">19177</span> while (it.hasNext()) {<a name="line.19177"></a>
<span class="sourceLineNo">19178</span> final double ix = it.aDouble;<a name="line.19178"></a>
<span class="sourceLineNo">19179</span> int ox;<a name="line.19179"></a>
<span class="sourceLineNo">19180</span> ox = (int) toLong(Math.tan(ix));<a name="line.19180"></a>
<span class="sourceLineNo">19181</span> for (int j = 0; j &lt; is; j++) {<a name="line.19181"></a>
<span class="sourceLineNo">19182</span> oai32data[it.oIndex + j] = ox;<a name="line.19182"></a>
<span class="sourceLineNo">19183</span> }<a name="line.19183"></a>
<span class="sourceLineNo">19184</span> }<a name="line.19184"></a>
<span class="sourceLineNo">19185</span> } else {<a name="line.19185"></a>
<span class="sourceLineNo">19186</span> while (it.hasNext()) {<a name="line.19186"></a>
<span class="sourceLineNo">19187</span> final long ix = it.aLong;<a name="line.19187"></a>
<span class="sourceLineNo">19188</span> int ox;<a name="line.19188"></a>
<span class="sourceLineNo">19189</span> ox = (int) toLong(Math.tan(ix));<a name="line.19189"></a>
<span class="sourceLineNo">19190</span> for (int j = 0; j &lt; is; j++) {<a name="line.19190"></a>
<span class="sourceLineNo">19191</span> oai32data[it.oIndex + j] = ox;<a name="line.19191"></a>
<span class="sourceLineNo">19192</span> }<a name="line.19192"></a>
<span class="sourceLineNo">19193</span> }<a name="line.19193"></a>
<span class="sourceLineNo">19194</span> }<a name="line.19194"></a>
<span class="sourceLineNo">19195</span> } else {<a name="line.19195"></a>
<span class="sourceLineNo">19196</span> if (it.isOutputDouble()) {<a name="line.19196"></a>
<span class="sourceLineNo">19197</span> while (it.hasNext()) {<a name="line.19197"></a>
<span class="sourceLineNo">19198</span> for (int j = 0; j &lt; is; j++) {<a name="line.19198"></a>
<span class="sourceLineNo">19199</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.19199"></a>
<span class="sourceLineNo">19200</span> int ox;<a name="line.19200"></a>
<span class="sourceLineNo">19201</span> ox = (int) toLong(Math.tan(ix));<a name="line.19201"></a>
<span class="sourceLineNo">19202</span> oai32data[it.oIndex + j] = ox;<a name="line.19202"></a>
<span class="sourceLineNo">19203</span> }<a name="line.19203"></a>
<span class="sourceLineNo">19204</span> }<a name="line.19204"></a>
<span class="sourceLineNo">19205</span> } else {<a name="line.19205"></a>
<span class="sourceLineNo">19206</span> while (it.hasNext()) {<a name="line.19206"></a>
<span class="sourceLineNo">19207</span> for (int j = 0; j &lt; is; j++) {<a name="line.19207"></a>
<span class="sourceLineNo">19208</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.19208"></a>
<span class="sourceLineNo">19209</span> int ox;<a name="line.19209"></a>
<span class="sourceLineNo">19210</span> ox = (int) toLong(Math.tan(ix));<a name="line.19210"></a>
<span class="sourceLineNo">19211</span> oai32data[it.oIndex + j] = ox;<a name="line.19211"></a>
<span class="sourceLineNo">19212</span> }<a name="line.19212"></a>
<span class="sourceLineNo">19213</span> }<a name="line.19213"></a>
<span class="sourceLineNo">19214</span> }<a name="line.19214"></a>
<span class="sourceLineNo">19215</span> }<a name="line.19215"></a>
<span class="sourceLineNo">19216</span> break;<a name="line.19216"></a>
<span class="sourceLineNo">19217</span> case Dataset.FLOAT32:<a name="line.19217"></a>
<span class="sourceLineNo">19218</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.19218"></a>
<span class="sourceLineNo">19219</span> if (it.isOutputDouble()) {<a name="line.19219"></a>
<span class="sourceLineNo">19220</span> while (it.hasNext()) {<a name="line.19220"></a>
<span class="sourceLineNo">19221</span> final double ix = it.aDouble;<a name="line.19221"></a>
<span class="sourceLineNo">19222</span> float ox;<a name="line.19222"></a>
<span class="sourceLineNo">19223</span> ox = (float) (Math.tan(ix));<a name="line.19223"></a>
<span class="sourceLineNo">19224</span> of32data[it.oIndex] = ox;<a name="line.19224"></a>
<span class="sourceLineNo">19225</span> }<a name="line.19225"></a>
<span class="sourceLineNo">19226</span> } else {<a name="line.19226"></a>
<span class="sourceLineNo">19227</span> while (it.hasNext()) {<a name="line.19227"></a>
<span class="sourceLineNo">19228</span> final long ix = it.aLong;<a name="line.19228"></a>
<span class="sourceLineNo">19229</span> float ox;<a name="line.19229"></a>
<span class="sourceLineNo">19230</span> ox = (float) (Math.tan(ix));<a name="line.19230"></a>
<span class="sourceLineNo">19231</span> of32data[it.oIndex] = ox;<a name="line.19231"></a>
<span class="sourceLineNo">19232</span> }<a name="line.19232"></a>
<span class="sourceLineNo">19233</span> }<a name="line.19233"></a>
<span class="sourceLineNo">19234</span> break;<a name="line.19234"></a>
<span class="sourceLineNo">19235</span> case Dataset.FLOAT64:<a name="line.19235"></a>
<span class="sourceLineNo">19236</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.19236"></a>
<span class="sourceLineNo">19237</span> if (it.isOutputDouble()) {<a name="line.19237"></a>
<span class="sourceLineNo">19238</span> while (it.hasNext()) {<a name="line.19238"></a>
<span class="sourceLineNo">19239</span> final double ix = it.aDouble;<a name="line.19239"></a>
<span class="sourceLineNo">19240</span> double ox;<a name="line.19240"></a>
<span class="sourceLineNo">19241</span> ox = (Math.tan(ix));<a name="line.19241"></a>
<span class="sourceLineNo">19242</span> of64data[it.oIndex] = ox;<a name="line.19242"></a>
<span class="sourceLineNo">19243</span> }<a name="line.19243"></a>
<span class="sourceLineNo">19244</span> } else {<a name="line.19244"></a>
<span class="sourceLineNo">19245</span> while (it.hasNext()) {<a name="line.19245"></a>
<span class="sourceLineNo">19246</span> final long ix = it.aLong;<a name="line.19246"></a>
<span class="sourceLineNo">19247</span> double ox;<a name="line.19247"></a>
<span class="sourceLineNo">19248</span> ox = (Math.tan(ix));<a name="line.19248"></a>
<span class="sourceLineNo">19249</span> of64data[it.oIndex] = ox;<a name="line.19249"></a>
<span class="sourceLineNo">19250</span> }<a name="line.19250"></a>
<span class="sourceLineNo">19251</span> }<a name="line.19251"></a>
<span class="sourceLineNo">19252</span> break;<a name="line.19252"></a>
<span class="sourceLineNo">19253</span> case Dataset.ARRAYFLOAT32:<a name="line.19253"></a>
<span class="sourceLineNo">19254</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.19254"></a>
<span class="sourceLineNo">19255</span> if (is == 1) {<a name="line.19255"></a>
<span class="sourceLineNo">19256</span> if (it.isOutputDouble()) {<a name="line.19256"></a>
<span class="sourceLineNo">19257</span> while (it.hasNext()) {<a name="line.19257"></a>
<span class="sourceLineNo">19258</span> final double ix = it.aDouble;<a name="line.19258"></a>
<span class="sourceLineNo">19259</span> float ox;<a name="line.19259"></a>
<span class="sourceLineNo">19260</span> ox = (float) (Math.tan(ix));<a name="line.19260"></a>
<span class="sourceLineNo">19261</span> oaf32data[it.oIndex] = ox;<a name="line.19261"></a>
<span class="sourceLineNo">19262</span> }<a name="line.19262"></a>
<span class="sourceLineNo">19263</span> } else {<a name="line.19263"></a>
<span class="sourceLineNo">19264</span> while (it.hasNext()) {<a name="line.19264"></a>
<span class="sourceLineNo">19265</span> final long ix = it.aLong;<a name="line.19265"></a>
<span class="sourceLineNo">19266</span> float ox;<a name="line.19266"></a>
<span class="sourceLineNo">19267</span> ox = (float) (Math.tan(ix));<a name="line.19267"></a>
<span class="sourceLineNo">19268</span> oaf32data[it.oIndex] = ox;<a name="line.19268"></a>
<span class="sourceLineNo">19269</span> }<a name="line.19269"></a>
<span class="sourceLineNo">19270</span> }<a name="line.19270"></a>
<span class="sourceLineNo">19271</span> } else if (as == 1) {<a name="line.19271"></a>
<span class="sourceLineNo">19272</span> if (it.isOutputDouble()) {<a name="line.19272"></a>
<span class="sourceLineNo">19273</span> while (it.hasNext()) {<a name="line.19273"></a>
<span class="sourceLineNo">19274</span> final double ix = it.aDouble;<a name="line.19274"></a>
<span class="sourceLineNo">19275</span> float ox;<a name="line.19275"></a>
<span class="sourceLineNo">19276</span> ox = (float) (Math.tan(ix));<a name="line.19276"></a>
<span class="sourceLineNo">19277</span> for (int j = 0; j &lt; is; j++) {<a name="line.19277"></a>
<span class="sourceLineNo">19278</span> oaf32data[it.oIndex + j] = ox;<a name="line.19278"></a>
<span class="sourceLineNo">19279</span> }<a name="line.19279"></a>
<span class="sourceLineNo">19280</span> }<a name="line.19280"></a>
<span class="sourceLineNo">19281</span> } else {<a name="line.19281"></a>
<span class="sourceLineNo">19282</span> while (it.hasNext()) {<a name="line.19282"></a>
<span class="sourceLineNo">19283</span> final long ix = it.aLong;<a name="line.19283"></a>
<span class="sourceLineNo">19284</span> float ox;<a name="line.19284"></a>
<span class="sourceLineNo">19285</span> ox = (float) (Math.tan(ix));<a name="line.19285"></a>
<span class="sourceLineNo">19286</span> for (int j = 0; j &lt; is; j++) {<a name="line.19286"></a>
<span class="sourceLineNo">19287</span> oaf32data[it.oIndex + j] = ox;<a name="line.19287"></a>
<span class="sourceLineNo">19288</span> }<a name="line.19288"></a>
<span class="sourceLineNo">19289</span> }<a name="line.19289"></a>
<span class="sourceLineNo">19290</span> }<a name="line.19290"></a>
<span class="sourceLineNo">19291</span> } else {<a name="line.19291"></a>
<span class="sourceLineNo">19292</span> if (it.isOutputDouble()) {<a name="line.19292"></a>
<span class="sourceLineNo">19293</span> while (it.hasNext()) {<a name="line.19293"></a>
<span class="sourceLineNo">19294</span> for (int j = 0; j &lt; is; j++) {<a name="line.19294"></a>
<span class="sourceLineNo">19295</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.19295"></a>
<span class="sourceLineNo">19296</span> float ox;<a name="line.19296"></a>
<span class="sourceLineNo">19297</span> ox = (float) (Math.tan(ix));<a name="line.19297"></a>
<span class="sourceLineNo">19298</span> oaf32data[it.oIndex + j] = ox;<a name="line.19298"></a>
<span class="sourceLineNo">19299</span> }<a name="line.19299"></a>
<span class="sourceLineNo">19300</span> }<a name="line.19300"></a>
<span class="sourceLineNo">19301</span> } else {<a name="line.19301"></a>
<span class="sourceLineNo">19302</span> while (it.hasNext()) {<a name="line.19302"></a>
<span class="sourceLineNo">19303</span> for (int j = 0; j &lt; is; j++) {<a name="line.19303"></a>
<span class="sourceLineNo">19304</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.19304"></a>
<span class="sourceLineNo">19305</span> float ox;<a name="line.19305"></a>
<span class="sourceLineNo">19306</span> ox = (float) (Math.tan(ix));<a name="line.19306"></a>
<span class="sourceLineNo">19307</span> oaf32data[it.oIndex + j] = ox;<a name="line.19307"></a>
<span class="sourceLineNo">19308</span> }<a name="line.19308"></a>
<span class="sourceLineNo">19309</span> }<a name="line.19309"></a>
<span class="sourceLineNo">19310</span> }<a name="line.19310"></a>
<span class="sourceLineNo">19311</span> }<a name="line.19311"></a>
<span class="sourceLineNo">19312</span> break;<a name="line.19312"></a>
<span class="sourceLineNo">19313</span> case Dataset.ARRAYFLOAT64:<a name="line.19313"></a>
<span class="sourceLineNo">19314</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.19314"></a>
<span class="sourceLineNo">19315</span> if (is == 1) {<a name="line.19315"></a>
<span class="sourceLineNo">19316</span> if (it.isOutputDouble()) {<a name="line.19316"></a>
<span class="sourceLineNo">19317</span> while (it.hasNext()) {<a name="line.19317"></a>
<span class="sourceLineNo">19318</span> final double ix = it.aDouble;<a name="line.19318"></a>
<span class="sourceLineNo">19319</span> double ox;<a name="line.19319"></a>
<span class="sourceLineNo">19320</span> ox = (Math.tan(ix));<a name="line.19320"></a>
<span class="sourceLineNo">19321</span> oaf64data[it.oIndex] = ox;<a name="line.19321"></a>
<span class="sourceLineNo">19322</span> }<a name="line.19322"></a>
<span class="sourceLineNo">19323</span> } else {<a name="line.19323"></a>
<span class="sourceLineNo">19324</span> while (it.hasNext()) {<a name="line.19324"></a>
<span class="sourceLineNo">19325</span> final long ix = it.aLong;<a name="line.19325"></a>
<span class="sourceLineNo">19326</span> double ox;<a name="line.19326"></a>
<span class="sourceLineNo">19327</span> ox = (Math.tan(ix));<a name="line.19327"></a>
<span class="sourceLineNo">19328</span> oaf64data[it.oIndex] = ox;<a name="line.19328"></a>
<span class="sourceLineNo">19329</span> }<a name="line.19329"></a>
<span class="sourceLineNo">19330</span> }<a name="line.19330"></a>
<span class="sourceLineNo">19331</span> } else if (as == 1) {<a name="line.19331"></a>
<span class="sourceLineNo">19332</span> if (it.isOutputDouble()) {<a name="line.19332"></a>
<span class="sourceLineNo">19333</span> while (it.hasNext()) {<a name="line.19333"></a>
<span class="sourceLineNo">19334</span> final double ix = it.aDouble;<a name="line.19334"></a>
<span class="sourceLineNo">19335</span> double ox;<a name="line.19335"></a>
<span class="sourceLineNo">19336</span> ox = (Math.tan(ix));<a name="line.19336"></a>
<span class="sourceLineNo">19337</span> for (int j = 0; j &lt; is; j++) {<a name="line.19337"></a>
<span class="sourceLineNo">19338</span> oaf64data[it.oIndex + j] = ox;<a name="line.19338"></a>
<span class="sourceLineNo">19339</span> }<a name="line.19339"></a>
<span class="sourceLineNo">19340</span> }<a name="line.19340"></a>
<span class="sourceLineNo">19341</span> } else {<a name="line.19341"></a>
<span class="sourceLineNo">19342</span> while (it.hasNext()) {<a name="line.19342"></a>
<span class="sourceLineNo">19343</span> final long ix = it.aLong;<a name="line.19343"></a>
<span class="sourceLineNo">19344</span> double ox;<a name="line.19344"></a>
<span class="sourceLineNo">19345</span> ox = (Math.tan(ix));<a name="line.19345"></a>
<span class="sourceLineNo">19346</span> for (int j = 0; j &lt; is; j++) {<a name="line.19346"></a>
<span class="sourceLineNo">19347</span> oaf64data[it.oIndex + j] = ox;<a name="line.19347"></a>
<span class="sourceLineNo">19348</span> }<a name="line.19348"></a>
<span class="sourceLineNo">19349</span> }<a name="line.19349"></a>
<span class="sourceLineNo">19350</span> }<a name="line.19350"></a>
<span class="sourceLineNo">19351</span> } else {<a name="line.19351"></a>
<span class="sourceLineNo">19352</span> if (it.isOutputDouble()) {<a name="line.19352"></a>
<span class="sourceLineNo">19353</span> while (it.hasNext()) {<a name="line.19353"></a>
<span class="sourceLineNo">19354</span> for (int j = 0; j &lt; is; j++) {<a name="line.19354"></a>
<span class="sourceLineNo">19355</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.19355"></a>
<span class="sourceLineNo">19356</span> double ox;<a name="line.19356"></a>
<span class="sourceLineNo">19357</span> ox = (Math.tan(ix));<a name="line.19357"></a>
<span class="sourceLineNo">19358</span> oaf64data[it.oIndex + j] = ox;<a name="line.19358"></a>
<span class="sourceLineNo">19359</span> }<a name="line.19359"></a>
<span class="sourceLineNo">19360</span> }<a name="line.19360"></a>
<span class="sourceLineNo">19361</span> } else {<a name="line.19361"></a>
<span class="sourceLineNo">19362</span> while (it.hasNext()) {<a name="line.19362"></a>
<span class="sourceLineNo">19363</span> for (int j = 0; j &lt; is; j++) {<a name="line.19363"></a>
<span class="sourceLineNo">19364</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.19364"></a>
<span class="sourceLineNo">19365</span> double ox;<a name="line.19365"></a>
<span class="sourceLineNo">19366</span> ox = (Math.tan(ix));<a name="line.19366"></a>
<span class="sourceLineNo">19367</span> oaf64data[it.oIndex + j] = ox;<a name="line.19367"></a>
<span class="sourceLineNo">19368</span> }<a name="line.19368"></a>
<span class="sourceLineNo">19369</span> }<a name="line.19369"></a>
<span class="sourceLineNo">19370</span> }<a name="line.19370"></a>
<span class="sourceLineNo">19371</span> }<a name="line.19371"></a>
<span class="sourceLineNo">19372</span> break;<a name="line.19372"></a>
<span class="sourceLineNo">19373</span> case Dataset.COMPLEX64:<a name="line.19373"></a>
<span class="sourceLineNo">19374</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.19374"></a>
<span class="sourceLineNo">19375</span> if (!da.isComplex()) {<a name="line.19375"></a>
<span class="sourceLineNo">19376</span> if (it.isOutputDouble()) {<a name="line.19376"></a>
<span class="sourceLineNo">19377</span> final double iy = 0;<a name="line.19377"></a>
<span class="sourceLineNo">19378</span> while (it.hasNext()) {<a name="line.19378"></a>
<span class="sourceLineNo">19379</span> final double ix = it.aDouble;<a name="line.19379"></a>
<span class="sourceLineNo">19380</span> float x;<a name="line.19380"></a>
<span class="sourceLineNo">19381</span> float y;<a name="line.19381"></a>
<span class="sourceLineNo">19382</span> float tf;<a name="line.19382"></a>
<span class="sourceLineNo">19383</span> float ox;<a name="line.19383"></a>
<span class="sourceLineNo">19384</span> float oy;<a name="line.19384"></a>
<span class="sourceLineNo">19385</span> x = (float) (2.*ix);<a name="line.19385"></a>
<span class="sourceLineNo">19386</span> y = (float) (2.*iy);<a name="line.19386"></a>
<span class="sourceLineNo">19387</span> tf = (float) (1./(Math.cos(x)+Math.cosh(y)));<a name="line.19387"></a>
<span class="sourceLineNo">19388</span> ox = (float) (tf*Math.sin(x));<a name="line.19388"></a>
<span class="sourceLineNo">19389</span> oy = (float) (tf*Math.sinh(y));<a name="line.19389"></a>
<span class="sourceLineNo">19390</span> oc64data[it.oIndex] = ox;<a name="line.19390"></a>
<span class="sourceLineNo">19391</span> oc64data[it.oIndex + 1] = oy;<a name="line.19391"></a>
<span class="sourceLineNo">19392</span> }<a name="line.19392"></a>
<span class="sourceLineNo">19393</span> } else {<a name="line.19393"></a>
<span class="sourceLineNo">19394</span> final long iy = 0;<a name="line.19394"></a>
<span class="sourceLineNo">19395</span> while (it.hasNext()) {<a name="line.19395"></a>
<span class="sourceLineNo">19396</span> final long ix = it.aLong;<a name="line.19396"></a>
<span class="sourceLineNo">19397</span> float x;<a name="line.19397"></a>
<span class="sourceLineNo">19398</span> float y;<a name="line.19398"></a>
<span class="sourceLineNo">19399</span> float tf;<a name="line.19399"></a>
<span class="sourceLineNo">19400</span> float ox;<a name="line.19400"></a>
<span class="sourceLineNo">19401</span> float oy;<a name="line.19401"></a>
<span class="sourceLineNo">19402</span> x = (float) toLong(2.*ix);<a name="line.19402"></a>
<span class="sourceLineNo">19403</span> y = (float) toLong(2.*iy);<a name="line.19403"></a>
<span class="sourceLineNo">19404</span> tf = (float) toLong(1./(Math.cos(x)+Math.cosh(y)));<a name="line.19404"></a>
<span class="sourceLineNo">19405</span> ox = (float) toLong(tf*Math.sin(x));<a name="line.19405"></a>
<span class="sourceLineNo">19406</span> oy = (float) toLong(tf*Math.sinh(y));<a name="line.19406"></a>
<span class="sourceLineNo">19407</span> oc64data[it.oIndex] = ox;<a name="line.19407"></a>
<span class="sourceLineNo">19408</span> oc64data[it.oIndex + 1] = oy;<a name="line.19408"></a>
<span class="sourceLineNo">19409</span> }<a name="line.19409"></a>
<span class="sourceLineNo">19410</span> }<a name="line.19410"></a>
<span class="sourceLineNo">19411</span> } else {<a name="line.19411"></a>
<span class="sourceLineNo">19412</span> while (it.hasNext()) {<a name="line.19412"></a>
<span class="sourceLineNo">19413</span> final double ix = it.aDouble;<a name="line.19413"></a>
<span class="sourceLineNo">19414</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.19414"></a>
<span class="sourceLineNo">19415</span> float x;<a name="line.19415"></a>
<span class="sourceLineNo">19416</span> float y;<a name="line.19416"></a>
<span class="sourceLineNo">19417</span> float tf;<a name="line.19417"></a>
<span class="sourceLineNo">19418</span> float ox;<a name="line.19418"></a>
<span class="sourceLineNo">19419</span> float oy;<a name="line.19419"></a>
<span class="sourceLineNo">19420</span> x = (float) (2.*ix);<a name="line.19420"></a>
<span class="sourceLineNo">19421</span> y = (float) (2.*iy);<a name="line.19421"></a>
<span class="sourceLineNo">19422</span> tf = (float) (1./(Math.cos(x)+Math.cosh(y)));<a name="line.19422"></a>
<span class="sourceLineNo">19423</span> ox = (float) (tf*Math.sin(x));<a name="line.19423"></a>
<span class="sourceLineNo">19424</span> oy = (float) (tf*Math.sinh(y));<a name="line.19424"></a>
<span class="sourceLineNo">19425</span> oc64data[it.oIndex] = ox;<a name="line.19425"></a>
<span class="sourceLineNo">19426</span> oc64data[it.oIndex + 1] = oy;<a name="line.19426"></a>
<span class="sourceLineNo">19427</span> }<a name="line.19427"></a>
<span class="sourceLineNo">19428</span> }<a name="line.19428"></a>
<span class="sourceLineNo">19429</span> break;<a name="line.19429"></a>
<span class="sourceLineNo">19430</span> case Dataset.COMPLEX128:<a name="line.19430"></a>
<span class="sourceLineNo">19431</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.19431"></a>
<span class="sourceLineNo">19432</span> if (!da.isComplex()) {<a name="line.19432"></a>
<span class="sourceLineNo">19433</span> if (it.isOutputDouble()) {<a name="line.19433"></a>
<span class="sourceLineNo">19434</span> final double iy = 0;<a name="line.19434"></a>
<span class="sourceLineNo">19435</span> while (it.hasNext()) {<a name="line.19435"></a>
<span class="sourceLineNo">19436</span> final double ix = it.aDouble;<a name="line.19436"></a>
<span class="sourceLineNo">19437</span> double x;<a name="line.19437"></a>
<span class="sourceLineNo">19438</span> double y;<a name="line.19438"></a>
<span class="sourceLineNo">19439</span> double tf;<a name="line.19439"></a>
<span class="sourceLineNo">19440</span> double ox;<a name="line.19440"></a>
<span class="sourceLineNo">19441</span> double oy;<a name="line.19441"></a>
<span class="sourceLineNo">19442</span> x = (2.*ix);<a name="line.19442"></a>
<span class="sourceLineNo">19443</span> y = (2.*iy);<a name="line.19443"></a>
<span class="sourceLineNo">19444</span> tf = (1./(Math.cos(x)+Math.cosh(y)));<a name="line.19444"></a>
<span class="sourceLineNo">19445</span> ox = (tf*Math.sin(x));<a name="line.19445"></a>
<span class="sourceLineNo">19446</span> oy = (tf*Math.sinh(y));<a name="line.19446"></a>
<span class="sourceLineNo">19447</span> oc128data[it.oIndex] = ox;<a name="line.19447"></a>
<span class="sourceLineNo">19448</span> oc128data[it.oIndex + 1] = oy;<a name="line.19448"></a>
<span class="sourceLineNo">19449</span> }<a name="line.19449"></a>
<span class="sourceLineNo">19450</span> } else {<a name="line.19450"></a>
<span class="sourceLineNo">19451</span> final long iy = 0;<a name="line.19451"></a>
<span class="sourceLineNo">19452</span> while (it.hasNext()) {<a name="line.19452"></a>
<span class="sourceLineNo">19453</span> final long ix = it.aLong;<a name="line.19453"></a>
<span class="sourceLineNo">19454</span> double x;<a name="line.19454"></a>
<span class="sourceLineNo">19455</span> double y;<a name="line.19455"></a>
<span class="sourceLineNo">19456</span> double tf;<a name="line.19456"></a>
<span class="sourceLineNo">19457</span> double ox;<a name="line.19457"></a>
<span class="sourceLineNo">19458</span> double oy;<a name="line.19458"></a>
<span class="sourceLineNo">19459</span> x = (2.*ix);<a name="line.19459"></a>
<span class="sourceLineNo">19460</span> y = (2.*iy);<a name="line.19460"></a>
<span class="sourceLineNo">19461</span> tf = (double) (1./(Math.cos(x)+Math.cosh(y)));<a name="line.19461"></a>
<span class="sourceLineNo">19462</span> ox = (double) (tf*Math.sin(x));<a name="line.19462"></a>
<span class="sourceLineNo">19463</span> oy = (double) (tf*Math.sinh(y));<a name="line.19463"></a>
<span class="sourceLineNo">19464</span> oc128data[it.oIndex] = ox;<a name="line.19464"></a>
<span class="sourceLineNo">19465</span> oc128data[it.oIndex + 1] = oy;<a name="line.19465"></a>
<span class="sourceLineNo">19466</span> }<a name="line.19466"></a>
<span class="sourceLineNo">19467</span> }<a name="line.19467"></a>
<span class="sourceLineNo">19468</span> } else {<a name="line.19468"></a>
<span class="sourceLineNo">19469</span> while (it.hasNext()) {<a name="line.19469"></a>
<span class="sourceLineNo">19470</span> final double ix = it.aDouble;<a name="line.19470"></a>
<span class="sourceLineNo">19471</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.19471"></a>
<span class="sourceLineNo">19472</span> double x;<a name="line.19472"></a>
<span class="sourceLineNo">19473</span> double y;<a name="line.19473"></a>
<span class="sourceLineNo">19474</span> double tf;<a name="line.19474"></a>
<span class="sourceLineNo">19475</span> double ox;<a name="line.19475"></a>
<span class="sourceLineNo">19476</span> double oy;<a name="line.19476"></a>
<span class="sourceLineNo">19477</span> x = (2.*ix);<a name="line.19477"></a>
<span class="sourceLineNo">19478</span> y = (2.*iy);<a name="line.19478"></a>
<span class="sourceLineNo">19479</span> tf = (1./(Math.cos(x)+Math.cosh(y)));<a name="line.19479"></a>
<span class="sourceLineNo">19480</span> ox = (tf*Math.sin(x));<a name="line.19480"></a>
<span class="sourceLineNo">19481</span> oy = (tf*Math.sinh(y));<a name="line.19481"></a>
<span class="sourceLineNo">19482</span> oc128data[it.oIndex] = ox;<a name="line.19482"></a>
<span class="sourceLineNo">19483</span> oc128data[it.oIndex + 1] = oy;<a name="line.19483"></a>
<span class="sourceLineNo">19484</span> }<a name="line.19484"></a>
<span class="sourceLineNo">19485</span> }<a name="line.19485"></a>
<span class="sourceLineNo">19486</span> break;<a name="line.19486"></a>
<span class="sourceLineNo">19487</span> default:<a name="line.19487"></a>
<span class="sourceLineNo">19488</span> throw new IllegalArgumentException("tan supports integer, compound integer, real, compound real, complex datasets only");<a name="line.19488"></a>
<span class="sourceLineNo">19489</span> }<a name="line.19489"></a>
<span class="sourceLineNo">19490</span><a name="line.19490"></a>
<span class="sourceLineNo">19491</span> addFunctionName(result, "tan");<a name="line.19491"></a>
<span class="sourceLineNo">19492</span> return result;<a name="line.19492"></a>
<span class="sourceLineNo">19493</span> }<a name="line.19493"></a>
<span class="sourceLineNo">19494</span><a name="line.19494"></a>
<span class="sourceLineNo">19495</span> /**<a name="line.19495"></a>
<span class="sourceLineNo">19496</span> * arcsin - evaluate the inverse sine function on each element of the dataset<a name="line.19496"></a>
<span class="sourceLineNo">19497</span> * @param a<a name="line.19497"></a>
<span class="sourceLineNo">19498</span> * @return dataset<a name="line.19498"></a>
<span class="sourceLineNo">19499</span> */<a name="line.19499"></a>
<span class="sourceLineNo">19500</span> public static Dataset arcsin(final Object a) {<a name="line.19500"></a>
<span class="sourceLineNo">19501</span> return arcsin(a, null);<a name="line.19501"></a>
<span class="sourceLineNo">19502</span> }<a name="line.19502"></a>
<span class="sourceLineNo">19503</span><a name="line.19503"></a>
<span class="sourceLineNo">19504</span> /**<a name="line.19504"></a>
<span class="sourceLineNo">19505</span> * arcsin - evaluate the inverse sine function on each element of the dataset<a name="line.19505"></a>
<span class="sourceLineNo">19506</span> * @param a<a name="line.19506"></a>
<span class="sourceLineNo">19507</span> * @param o output can be null - in which case, a new dataset is created<a name="line.19507"></a>
<span class="sourceLineNo">19508</span> * @return dataset<a name="line.19508"></a>
<span class="sourceLineNo">19509</span> */<a name="line.19509"></a>
<span class="sourceLineNo">19510</span> public static Dataset arcsin(final Object a, final Dataset o) {<a name="line.19510"></a>
<span class="sourceLineNo">19511</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.19511"></a>
<span class="sourceLineNo">19512</span> SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true);<a name="line.19512"></a>
<span class="sourceLineNo">19513</span> final Dataset result = it.getOutput();<a name="line.19513"></a>
<span class="sourceLineNo">19514</span> if (!result.isComplex()) {<a name="line.19514"></a>
<span class="sourceLineNo">19515</span> if (da.isComplex()) {<a name="line.19515"></a>
<span class="sourceLineNo">19516</span> da = da.getRealView();<a name="line.19516"></a>
<span class="sourceLineNo">19517</span> it = new SingleInputBroadcastIterator(da, result, true);<a name="line.19517"></a>
<span class="sourceLineNo">19518</span> }<a name="line.19518"></a>
<span class="sourceLineNo">19519</span> }<a name="line.19519"></a>
<span class="sourceLineNo">19520</span> final int is = result.getElementsPerItem();<a name="line.19520"></a>
<span class="sourceLineNo">19521</span> final int as = da.getElementsPerItem();<a name="line.19521"></a>
<span class="sourceLineNo">19522</span> final int dt = result.getDType();<a name="line.19522"></a>
<span class="sourceLineNo">19523</span><a name="line.19523"></a>
<span class="sourceLineNo">19524</span> switch(dt) {<a name="line.19524"></a>
<span class="sourceLineNo">19525</span> case Dataset.INT8:<a name="line.19525"></a>
<span class="sourceLineNo">19526</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.19526"></a>
<span class="sourceLineNo">19527</span> if (it.isOutputDouble()) {<a name="line.19527"></a>
<span class="sourceLineNo">19528</span> while (it.hasNext()) {<a name="line.19528"></a>
<span class="sourceLineNo">19529</span> final double ix = it.aDouble;<a name="line.19529"></a>
<span class="sourceLineNo">19530</span> byte ox;<a name="line.19530"></a>
<span class="sourceLineNo">19531</span> ox = (byte) toLong(Math.asin(ix));<a name="line.19531"></a>
<span class="sourceLineNo">19532</span> oi8data[it.oIndex] = ox;<a name="line.19532"></a>
<span class="sourceLineNo">19533</span> }<a name="line.19533"></a>
<span class="sourceLineNo">19534</span> } else {<a name="line.19534"></a>
<span class="sourceLineNo">19535</span> while (it.hasNext()) {<a name="line.19535"></a>
<span class="sourceLineNo">19536</span> final long ix = it.aLong;<a name="line.19536"></a>
<span class="sourceLineNo">19537</span> byte ox;<a name="line.19537"></a>
<span class="sourceLineNo">19538</span> ox = (byte) toLong(Math.asin(ix));<a name="line.19538"></a>
<span class="sourceLineNo">19539</span> oi8data[it.oIndex] = ox;<a name="line.19539"></a>
<span class="sourceLineNo">19540</span> }<a name="line.19540"></a>
<span class="sourceLineNo">19541</span> }<a name="line.19541"></a>
<span class="sourceLineNo">19542</span> break;<a name="line.19542"></a>
<span class="sourceLineNo">19543</span> case Dataset.INT16:<a name="line.19543"></a>
<span class="sourceLineNo">19544</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.19544"></a>
<span class="sourceLineNo">19545</span> if (it.isOutputDouble()) {<a name="line.19545"></a>
<span class="sourceLineNo">19546</span> while (it.hasNext()) {<a name="line.19546"></a>
<span class="sourceLineNo">19547</span> final double ix = it.aDouble;<a name="line.19547"></a>
<span class="sourceLineNo">19548</span> short ox;<a name="line.19548"></a>
<span class="sourceLineNo">19549</span> ox = (short) toLong(Math.asin(ix));<a name="line.19549"></a>
<span class="sourceLineNo">19550</span> oi16data[it.oIndex] = ox;<a name="line.19550"></a>
<span class="sourceLineNo">19551</span> }<a name="line.19551"></a>
<span class="sourceLineNo">19552</span> } else {<a name="line.19552"></a>
<span class="sourceLineNo">19553</span> while (it.hasNext()) {<a name="line.19553"></a>
<span class="sourceLineNo">19554</span> final long ix = it.aLong;<a name="line.19554"></a>
<span class="sourceLineNo">19555</span> short ox;<a name="line.19555"></a>
<span class="sourceLineNo">19556</span> ox = (short) toLong(Math.asin(ix));<a name="line.19556"></a>
<span class="sourceLineNo">19557</span> oi16data[it.oIndex] = ox;<a name="line.19557"></a>
<span class="sourceLineNo">19558</span> }<a name="line.19558"></a>
<span class="sourceLineNo">19559</span> }<a name="line.19559"></a>
<span class="sourceLineNo">19560</span> break;<a name="line.19560"></a>
<span class="sourceLineNo">19561</span> case Dataset.INT64:<a name="line.19561"></a>
<span class="sourceLineNo">19562</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.19562"></a>
<span class="sourceLineNo">19563</span> if (it.isOutputDouble()) {<a name="line.19563"></a>
<span class="sourceLineNo">19564</span> while (it.hasNext()) {<a name="line.19564"></a>
<span class="sourceLineNo">19565</span> final double ix = it.aDouble;<a name="line.19565"></a>
<span class="sourceLineNo">19566</span> long ox;<a name="line.19566"></a>
<span class="sourceLineNo">19567</span> ox = toLong(Math.asin(ix));<a name="line.19567"></a>
<span class="sourceLineNo">19568</span> oi64data[it.oIndex] = ox;<a name="line.19568"></a>
<span class="sourceLineNo">19569</span> }<a name="line.19569"></a>
<span class="sourceLineNo">19570</span> } else {<a name="line.19570"></a>
<span class="sourceLineNo">19571</span> while (it.hasNext()) {<a name="line.19571"></a>
<span class="sourceLineNo">19572</span> final long ix = it.aLong;<a name="line.19572"></a>
<span class="sourceLineNo">19573</span> long ox;<a name="line.19573"></a>
<span class="sourceLineNo">19574</span> ox = toLong(Math.asin(ix));<a name="line.19574"></a>
<span class="sourceLineNo">19575</span> oi64data[it.oIndex] = ox;<a name="line.19575"></a>
<span class="sourceLineNo">19576</span> }<a name="line.19576"></a>
<span class="sourceLineNo">19577</span> }<a name="line.19577"></a>
<span class="sourceLineNo">19578</span> break;<a name="line.19578"></a>
<span class="sourceLineNo">19579</span> case Dataset.INT32:<a name="line.19579"></a>
<span class="sourceLineNo">19580</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.19580"></a>
<span class="sourceLineNo">19581</span> if (it.isOutputDouble()) {<a name="line.19581"></a>
<span class="sourceLineNo">19582</span> while (it.hasNext()) {<a name="line.19582"></a>
<span class="sourceLineNo">19583</span> final double ix = it.aDouble;<a name="line.19583"></a>
<span class="sourceLineNo">19584</span> int ox;<a name="line.19584"></a>
<span class="sourceLineNo">19585</span> ox = (int) toLong(Math.asin(ix));<a name="line.19585"></a>
<span class="sourceLineNo">19586</span> oi32data[it.oIndex] = ox;<a name="line.19586"></a>
<span class="sourceLineNo">19587</span> }<a name="line.19587"></a>
<span class="sourceLineNo">19588</span> } else {<a name="line.19588"></a>
<span class="sourceLineNo">19589</span> while (it.hasNext()) {<a name="line.19589"></a>
<span class="sourceLineNo">19590</span> final long ix = it.aLong;<a name="line.19590"></a>
<span class="sourceLineNo">19591</span> int ox;<a name="line.19591"></a>
<span class="sourceLineNo">19592</span> ox = (int) toLong(Math.asin(ix));<a name="line.19592"></a>
<span class="sourceLineNo">19593</span> oi32data[it.oIndex] = ox;<a name="line.19593"></a>
<span class="sourceLineNo">19594</span> }<a name="line.19594"></a>
<span class="sourceLineNo">19595</span> }<a name="line.19595"></a>
<span class="sourceLineNo">19596</span> break;<a name="line.19596"></a>
<span class="sourceLineNo">19597</span> case Dataset.ARRAYINT8:<a name="line.19597"></a>
<span class="sourceLineNo">19598</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.19598"></a>
<span class="sourceLineNo">19599</span> if (is == 1) {<a name="line.19599"></a>
<span class="sourceLineNo">19600</span> if (it.isOutputDouble()) {<a name="line.19600"></a>
<span class="sourceLineNo">19601</span> while (it.hasNext()) {<a name="line.19601"></a>
<span class="sourceLineNo">19602</span> final double ix = it.aDouble;<a name="line.19602"></a>
<span class="sourceLineNo">19603</span> byte ox;<a name="line.19603"></a>
<span class="sourceLineNo">19604</span> ox = (byte) toLong(Math.asin(ix));<a name="line.19604"></a>
<span class="sourceLineNo">19605</span> oai8data[it.oIndex] = ox;<a name="line.19605"></a>
<span class="sourceLineNo">19606</span> }<a name="line.19606"></a>
<span class="sourceLineNo">19607</span> } else {<a name="line.19607"></a>
<span class="sourceLineNo">19608</span> while (it.hasNext()) {<a name="line.19608"></a>
<span class="sourceLineNo">19609</span> final long ix = it.aLong;<a name="line.19609"></a>
<span class="sourceLineNo">19610</span> byte ox;<a name="line.19610"></a>
<span class="sourceLineNo">19611</span> ox = (byte) toLong(Math.asin(ix));<a name="line.19611"></a>
<span class="sourceLineNo">19612</span> oai8data[it.oIndex] = ox;<a name="line.19612"></a>
<span class="sourceLineNo">19613</span> }<a name="line.19613"></a>
<span class="sourceLineNo">19614</span> }<a name="line.19614"></a>
<span class="sourceLineNo">19615</span> } else if (as == 1) {<a name="line.19615"></a>
<span class="sourceLineNo">19616</span> if (it.isOutputDouble()) {<a name="line.19616"></a>
<span class="sourceLineNo">19617</span> while (it.hasNext()) {<a name="line.19617"></a>
<span class="sourceLineNo">19618</span> final double ix = it.aDouble;<a name="line.19618"></a>
<span class="sourceLineNo">19619</span> byte ox;<a name="line.19619"></a>
<span class="sourceLineNo">19620</span> ox = (byte) toLong(Math.asin(ix));<a name="line.19620"></a>
<span class="sourceLineNo">19621</span> for (int j = 0; j &lt; is; j++) {<a name="line.19621"></a>
<span class="sourceLineNo">19622</span> oai8data[it.oIndex + j] = ox;<a name="line.19622"></a>
<span class="sourceLineNo">19623</span> }<a name="line.19623"></a>
<span class="sourceLineNo">19624</span> }<a name="line.19624"></a>
<span class="sourceLineNo">19625</span> } else {<a name="line.19625"></a>
<span class="sourceLineNo">19626</span> while (it.hasNext()) {<a name="line.19626"></a>
<span class="sourceLineNo">19627</span> final long ix = it.aLong;<a name="line.19627"></a>
<span class="sourceLineNo">19628</span> byte ox;<a name="line.19628"></a>
<span class="sourceLineNo">19629</span> ox = (byte) toLong(Math.asin(ix));<a name="line.19629"></a>
<span class="sourceLineNo">19630</span> for (int j = 0; j &lt; is; j++) {<a name="line.19630"></a>
<span class="sourceLineNo">19631</span> oai8data[it.oIndex + j] = ox;<a name="line.19631"></a>
<span class="sourceLineNo">19632</span> }<a name="line.19632"></a>
<span class="sourceLineNo">19633</span> }<a name="line.19633"></a>
<span class="sourceLineNo">19634</span> }<a name="line.19634"></a>
<span class="sourceLineNo">19635</span> } else {<a name="line.19635"></a>
<span class="sourceLineNo">19636</span> if (it.isOutputDouble()) {<a name="line.19636"></a>
<span class="sourceLineNo">19637</span> while (it.hasNext()) {<a name="line.19637"></a>
<span class="sourceLineNo">19638</span> for (int j = 0; j &lt; is; j++) {<a name="line.19638"></a>
<span class="sourceLineNo">19639</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.19639"></a>
<span class="sourceLineNo">19640</span> byte ox;<a name="line.19640"></a>
<span class="sourceLineNo">19641</span> ox = (byte) toLong(Math.asin(ix));<a name="line.19641"></a>
<span class="sourceLineNo">19642</span> oai8data[it.oIndex + j] = ox;<a name="line.19642"></a>
<span class="sourceLineNo">19643</span> }<a name="line.19643"></a>
<span class="sourceLineNo">19644</span> }<a name="line.19644"></a>
<span class="sourceLineNo">19645</span> } else {<a name="line.19645"></a>
<span class="sourceLineNo">19646</span> while (it.hasNext()) {<a name="line.19646"></a>
<span class="sourceLineNo">19647</span> for (int j = 0; j &lt; is; j++) {<a name="line.19647"></a>
<span class="sourceLineNo">19648</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.19648"></a>
<span class="sourceLineNo">19649</span> byte ox;<a name="line.19649"></a>
<span class="sourceLineNo">19650</span> ox = (byte) toLong(Math.asin(ix));<a name="line.19650"></a>
<span class="sourceLineNo">19651</span> oai8data[it.oIndex + j] = ox;<a name="line.19651"></a>
<span class="sourceLineNo">19652</span> }<a name="line.19652"></a>
<span class="sourceLineNo">19653</span> }<a name="line.19653"></a>
<span class="sourceLineNo">19654</span> }<a name="line.19654"></a>
<span class="sourceLineNo">19655</span> }<a name="line.19655"></a>
<span class="sourceLineNo">19656</span> break;<a name="line.19656"></a>
<span class="sourceLineNo">19657</span> case Dataset.ARRAYINT16:<a name="line.19657"></a>
<span class="sourceLineNo">19658</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.19658"></a>
<span class="sourceLineNo">19659</span> if (is == 1) {<a name="line.19659"></a>
<span class="sourceLineNo">19660</span> if (it.isOutputDouble()) {<a name="line.19660"></a>
<span class="sourceLineNo">19661</span> while (it.hasNext()) {<a name="line.19661"></a>
<span class="sourceLineNo">19662</span> final double ix = it.aDouble;<a name="line.19662"></a>
<span class="sourceLineNo">19663</span> short ox;<a name="line.19663"></a>
<span class="sourceLineNo">19664</span> ox = (short) toLong(Math.asin(ix));<a name="line.19664"></a>
<span class="sourceLineNo">19665</span> oai16data[it.oIndex] = ox;<a name="line.19665"></a>
<span class="sourceLineNo">19666</span> }<a name="line.19666"></a>
<span class="sourceLineNo">19667</span> } else {<a name="line.19667"></a>
<span class="sourceLineNo">19668</span> while (it.hasNext()) {<a name="line.19668"></a>
<span class="sourceLineNo">19669</span> final long ix = it.aLong;<a name="line.19669"></a>
<span class="sourceLineNo">19670</span> short ox;<a name="line.19670"></a>
<span class="sourceLineNo">19671</span> ox = (short) toLong(Math.asin(ix));<a name="line.19671"></a>
<span class="sourceLineNo">19672</span> oai16data[it.oIndex] = ox;<a name="line.19672"></a>
<span class="sourceLineNo">19673</span> }<a name="line.19673"></a>
<span class="sourceLineNo">19674</span> }<a name="line.19674"></a>
<span class="sourceLineNo">19675</span> } else if (as == 1) {<a name="line.19675"></a>
<span class="sourceLineNo">19676</span> if (it.isOutputDouble()) {<a name="line.19676"></a>
<span class="sourceLineNo">19677</span> while (it.hasNext()) {<a name="line.19677"></a>
<span class="sourceLineNo">19678</span> final double ix = it.aDouble;<a name="line.19678"></a>
<span class="sourceLineNo">19679</span> short ox;<a name="line.19679"></a>
<span class="sourceLineNo">19680</span> ox = (short) toLong(Math.asin(ix));<a name="line.19680"></a>
<span class="sourceLineNo">19681</span> for (int j = 0; j &lt; is; j++) {<a name="line.19681"></a>
<span class="sourceLineNo">19682</span> oai16data[it.oIndex + j] = ox;<a name="line.19682"></a>
<span class="sourceLineNo">19683</span> }<a name="line.19683"></a>
<span class="sourceLineNo">19684</span> }<a name="line.19684"></a>
<span class="sourceLineNo">19685</span> } else {<a name="line.19685"></a>
<span class="sourceLineNo">19686</span> while (it.hasNext()) {<a name="line.19686"></a>
<span class="sourceLineNo">19687</span> final long ix = it.aLong;<a name="line.19687"></a>
<span class="sourceLineNo">19688</span> short ox;<a name="line.19688"></a>
<span class="sourceLineNo">19689</span> ox = (short) toLong(Math.asin(ix));<a name="line.19689"></a>
<span class="sourceLineNo">19690</span> for (int j = 0; j &lt; is; j++) {<a name="line.19690"></a>
<span class="sourceLineNo">19691</span> oai16data[it.oIndex + j] = ox;<a name="line.19691"></a>
<span class="sourceLineNo">19692</span> }<a name="line.19692"></a>
<span class="sourceLineNo">19693</span> }<a name="line.19693"></a>
<span class="sourceLineNo">19694</span> }<a name="line.19694"></a>
<span class="sourceLineNo">19695</span> } else {<a name="line.19695"></a>
<span class="sourceLineNo">19696</span> if (it.isOutputDouble()) {<a name="line.19696"></a>
<span class="sourceLineNo">19697</span> while (it.hasNext()) {<a name="line.19697"></a>
<span class="sourceLineNo">19698</span> for (int j = 0; j &lt; is; j++) {<a name="line.19698"></a>
<span class="sourceLineNo">19699</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.19699"></a>
<span class="sourceLineNo">19700</span> short ox;<a name="line.19700"></a>
<span class="sourceLineNo">19701</span> ox = (short) toLong(Math.asin(ix));<a name="line.19701"></a>
<span class="sourceLineNo">19702</span> oai16data[it.oIndex + j] = ox;<a name="line.19702"></a>
<span class="sourceLineNo">19703</span> }<a name="line.19703"></a>
<span class="sourceLineNo">19704</span> }<a name="line.19704"></a>
<span class="sourceLineNo">19705</span> } else {<a name="line.19705"></a>
<span class="sourceLineNo">19706</span> while (it.hasNext()) {<a name="line.19706"></a>
<span class="sourceLineNo">19707</span> for (int j = 0; j &lt; is; j++) {<a name="line.19707"></a>
<span class="sourceLineNo">19708</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.19708"></a>
<span class="sourceLineNo">19709</span> short ox;<a name="line.19709"></a>
<span class="sourceLineNo">19710</span> ox = (short) toLong(Math.asin(ix));<a name="line.19710"></a>
<span class="sourceLineNo">19711</span> oai16data[it.oIndex + j] = ox;<a name="line.19711"></a>
<span class="sourceLineNo">19712</span> }<a name="line.19712"></a>
<span class="sourceLineNo">19713</span> }<a name="line.19713"></a>
<span class="sourceLineNo">19714</span> }<a name="line.19714"></a>
<span class="sourceLineNo">19715</span> }<a name="line.19715"></a>
<span class="sourceLineNo">19716</span> break;<a name="line.19716"></a>
<span class="sourceLineNo">19717</span> case Dataset.ARRAYINT64:<a name="line.19717"></a>
<span class="sourceLineNo">19718</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.19718"></a>
<span class="sourceLineNo">19719</span> if (is == 1) {<a name="line.19719"></a>
<span class="sourceLineNo">19720</span> if (it.isOutputDouble()) {<a name="line.19720"></a>
<span class="sourceLineNo">19721</span> while (it.hasNext()) {<a name="line.19721"></a>
<span class="sourceLineNo">19722</span> final double ix = it.aDouble;<a name="line.19722"></a>
<span class="sourceLineNo">19723</span> long ox;<a name="line.19723"></a>
<span class="sourceLineNo">19724</span> ox = toLong(Math.asin(ix));<a name="line.19724"></a>
<span class="sourceLineNo">19725</span> oai64data[it.oIndex] = ox;<a name="line.19725"></a>
<span class="sourceLineNo">19726</span> }<a name="line.19726"></a>
<span class="sourceLineNo">19727</span> } else {<a name="line.19727"></a>
<span class="sourceLineNo">19728</span> while (it.hasNext()) {<a name="line.19728"></a>
<span class="sourceLineNo">19729</span> final long ix = it.aLong;<a name="line.19729"></a>
<span class="sourceLineNo">19730</span> long ox;<a name="line.19730"></a>
<span class="sourceLineNo">19731</span> ox = toLong(Math.asin(ix));<a name="line.19731"></a>
<span class="sourceLineNo">19732</span> oai64data[it.oIndex] = ox;<a name="line.19732"></a>
<span class="sourceLineNo">19733</span> }<a name="line.19733"></a>
<span class="sourceLineNo">19734</span> }<a name="line.19734"></a>
<span class="sourceLineNo">19735</span> } else if (as == 1) {<a name="line.19735"></a>
<span class="sourceLineNo">19736</span> if (it.isOutputDouble()) {<a name="line.19736"></a>
<span class="sourceLineNo">19737</span> while (it.hasNext()) {<a name="line.19737"></a>
<span class="sourceLineNo">19738</span> final double ix = it.aDouble;<a name="line.19738"></a>
<span class="sourceLineNo">19739</span> long ox;<a name="line.19739"></a>
<span class="sourceLineNo">19740</span> ox = toLong(Math.asin(ix));<a name="line.19740"></a>
<span class="sourceLineNo">19741</span> for (int j = 0; j &lt; is; j++) {<a name="line.19741"></a>
<span class="sourceLineNo">19742</span> oai64data[it.oIndex + j] = ox;<a name="line.19742"></a>
<span class="sourceLineNo">19743</span> }<a name="line.19743"></a>
<span class="sourceLineNo">19744</span> }<a name="line.19744"></a>
<span class="sourceLineNo">19745</span> } else {<a name="line.19745"></a>
<span class="sourceLineNo">19746</span> while (it.hasNext()) {<a name="line.19746"></a>
<span class="sourceLineNo">19747</span> final long ix = it.aLong;<a name="line.19747"></a>
<span class="sourceLineNo">19748</span> long ox;<a name="line.19748"></a>
<span class="sourceLineNo">19749</span> ox = toLong(Math.asin(ix));<a name="line.19749"></a>
<span class="sourceLineNo">19750</span> for (int j = 0; j &lt; is; j++) {<a name="line.19750"></a>
<span class="sourceLineNo">19751</span> oai64data[it.oIndex + j] = ox;<a name="line.19751"></a>
<span class="sourceLineNo">19752</span> }<a name="line.19752"></a>
<span class="sourceLineNo">19753</span> }<a name="line.19753"></a>
<span class="sourceLineNo">19754</span> }<a name="line.19754"></a>
<span class="sourceLineNo">19755</span> } else {<a name="line.19755"></a>
<span class="sourceLineNo">19756</span> if (it.isOutputDouble()) {<a name="line.19756"></a>
<span class="sourceLineNo">19757</span> while (it.hasNext()) {<a name="line.19757"></a>
<span class="sourceLineNo">19758</span> for (int j = 0; j &lt; is; j++) {<a name="line.19758"></a>
<span class="sourceLineNo">19759</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.19759"></a>
<span class="sourceLineNo">19760</span> long ox;<a name="line.19760"></a>
<span class="sourceLineNo">19761</span> ox = toLong(Math.asin(ix));<a name="line.19761"></a>
<span class="sourceLineNo">19762</span> oai64data[it.oIndex + j] = ox;<a name="line.19762"></a>
<span class="sourceLineNo">19763</span> }<a name="line.19763"></a>
<span class="sourceLineNo">19764</span> }<a name="line.19764"></a>
<span class="sourceLineNo">19765</span> } else {<a name="line.19765"></a>
<span class="sourceLineNo">19766</span> while (it.hasNext()) {<a name="line.19766"></a>
<span class="sourceLineNo">19767</span> for (int j = 0; j &lt; is; j++) {<a name="line.19767"></a>
<span class="sourceLineNo">19768</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.19768"></a>
<span class="sourceLineNo">19769</span> long ox;<a name="line.19769"></a>
<span class="sourceLineNo">19770</span> ox = toLong(Math.asin(ix));<a name="line.19770"></a>
<span class="sourceLineNo">19771</span> oai64data[it.oIndex + j] = ox;<a name="line.19771"></a>
<span class="sourceLineNo">19772</span> }<a name="line.19772"></a>
<span class="sourceLineNo">19773</span> }<a name="line.19773"></a>
<span class="sourceLineNo">19774</span> }<a name="line.19774"></a>
<span class="sourceLineNo">19775</span> }<a name="line.19775"></a>
<span class="sourceLineNo">19776</span> break;<a name="line.19776"></a>
<span class="sourceLineNo">19777</span> case Dataset.ARRAYINT32:<a name="line.19777"></a>
<span class="sourceLineNo">19778</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.19778"></a>
<span class="sourceLineNo">19779</span> if (is == 1) {<a name="line.19779"></a>
<span class="sourceLineNo">19780</span> if (it.isOutputDouble()) {<a name="line.19780"></a>
<span class="sourceLineNo">19781</span> while (it.hasNext()) {<a name="line.19781"></a>
<span class="sourceLineNo">19782</span> final double ix = it.aDouble;<a name="line.19782"></a>
<span class="sourceLineNo">19783</span> int ox;<a name="line.19783"></a>
<span class="sourceLineNo">19784</span> ox = (int) toLong(Math.asin(ix));<a name="line.19784"></a>
<span class="sourceLineNo">19785</span> oai32data[it.oIndex] = ox;<a name="line.19785"></a>
<span class="sourceLineNo">19786</span> }<a name="line.19786"></a>
<span class="sourceLineNo">19787</span> } else {<a name="line.19787"></a>
<span class="sourceLineNo">19788</span> while (it.hasNext()) {<a name="line.19788"></a>
<span class="sourceLineNo">19789</span> final long ix = it.aLong;<a name="line.19789"></a>
<span class="sourceLineNo">19790</span> int ox;<a name="line.19790"></a>
<span class="sourceLineNo">19791</span> ox = (int) toLong(Math.asin(ix));<a name="line.19791"></a>
<span class="sourceLineNo">19792</span> oai32data[it.oIndex] = ox;<a name="line.19792"></a>
<span class="sourceLineNo">19793</span> }<a name="line.19793"></a>
<span class="sourceLineNo">19794</span> }<a name="line.19794"></a>
<span class="sourceLineNo">19795</span> } else if (as == 1) {<a name="line.19795"></a>
<span class="sourceLineNo">19796</span> if (it.isOutputDouble()) {<a name="line.19796"></a>
<span class="sourceLineNo">19797</span> while (it.hasNext()) {<a name="line.19797"></a>
<span class="sourceLineNo">19798</span> final double ix = it.aDouble;<a name="line.19798"></a>
<span class="sourceLineNo">19799</span> int ox;<a name="line.19799"></a>
<span class="sourceLineNo">19800</span> ox = (int) toLong(Math.asin(ix));<a name="line.19800"></a>
<span class="sourceLineNo">19801</span> for (int j = 0; j &lt; is; j++) {<a name="line.19801"></a>
<span class="sourceLineNo">19802</span> oai32data[it.oIndex + j] = ox;<a name="line.19802"></a>
<span class="sourceLineNo">19803</span> }<a name="line.19803"></a>
<span class="sourceLineNo">19804</span> }<a name="line.19804"></a>
<span class="sourceLineNo">19805</span> } else {<a name="line.19805"></a>
<span class="sourceLineNo">19806</span> while (it.hasNext()) {<a name="line.19806"></a>
<span class="sourceLineNo">19807</span> final long ix = it.aLong;<a name="line.19807"></a>
<span class="sourceLineNo">19808</span> int ox;<a name="line.19808"></a>
<span class="sourceLineNo">19809</span> ox = (int) toLong(Math.asin(ix));<a name="line.19809"></a>
<span class="sourceLineNo">19810</span> for (int j = 0; j &lt; is; j++) {<a name="line.19810"></a>
<span class="sourceLineNo">19811</span> oai32data[it.oIndex + j] = ox;<a name="line.19811"></a>
<span class="sourceLineNo">19812</span> }<a name="line.19812"></a>
<span class="sourceLineNo">19813</span> }<a name="line.19813"></a>
<span class="sourceLineNo">19814</span> }<a name="line.19814"></a>
<span class="sourceLineNo">19815</span> } else {<a name="line.19815"></a>
<span class="sourceLineNo">19816</span> if (it.isOutputDouble()) {<a name="line.19816"></a>
<span class="sourceLineNo">19817</span> while (it.hasNext()) {<a name="line.19817"></a>
<span class="sourceLineNo">19818</span> for (int j = 0; j &lt; is; j++) {<a name="line.19818"></a>
<span class="sourceLineNo">19819</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.19819"></a>
<span class="sourceLineNo">19820</span> int ox;<a name="line.19820"></a>
<span class="sourceLineNo">19821</span> ox = (int) toLong(Math.asin(ix));<a name="line.19821"></a>
<span class="sourceLineNo">19822</span> oai32data[it.oIndex + j] = ox;<a name="line.19822"></a>
<span class="sourceLineNo">19823</span> }<a name="line.19823"></a>
<span class="sourceLineNo">19824</span> }<a name="line.19824"></a>
<span class="sourceLineNo">19825</span> } else {<a name="line.19825"></a>
<span class="sourceLineNo">19826</span> while (it.hasNext()) {<a name="line.19826"></a>
<span class="sourceLineNo">19827</span> for (int j = 0; j &lt; is; j++) {<a name="line.19827"></a>
<span class="sourceLineNo">19828</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.19828"></a>
<span class="sourceLineNo">19829</span> int ox;<a name="line.19829"></a>
<span class="sourceLineNo">19830</span> ox = (int) toLong(Math.asin(ix));<a name="line.19830"></a>
<span class="sourceLineNo">19831</span> oai32data[it.oIndex + j] = ox;<a name="line.19831"></a>
<span class="sourceLineNo">19832</span> }<a name="line.19832"></a>
<span class="sourceLineNo">19833</span> }<a name="line.19833"></a>
<span class="sourceLineNo">19834</span> }<a name="line.19834"></a>
<span class="sourceLineNo">19835</span> }<a name="line.19835"></a>
<span class="sourceLineNo">19836</span> break;<a name="line.19836"></a>
<span class="sourceLineNo">19837</span> case Dataset.FLOAT32:<a name="line.19837"></a>
<span class="sourceLineNo">19838</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.19838"></a>
<span class="sourceLineNo">19839</span> if (it.isOutputDouble()) {<a name="line.19839"></a>
<span class="sourceLineNo">19840</span> while (it.hasNext()) {<a name="line.19840"></a>
<span class="sourceLineNo">19841</span> final double ix = it.aDouble;<a name="line.19841"></a>
<span class="sourceLineNo">19842</span> float ox;<a name="line.19842"></a>
<span class="sourceLineNo">19843</span> ox = (float) (Math.asin(ix));<a name="line.19843"></a>
<span class="sourceLineNo">19844</span> of32data[it.oIndex] = ox;<a name="line.19844"></a>
<span class="sourceLineNo">19845</span> }<a name="line.19845"></a>
<span class="sourceLineNo">19846</span> } else {<a name="line.19846"></a>
<span class="sourceLineNo">19847</span> while (it.hasNext()) {<a name="line.19847"></a>
<span class="sourceLineNo">19848</span> final long ix = it.aLong;<a name="line.19848"></a>
<span class="sourceLineNo">19849</span> float ox;<a name="line.19849"></a>
<span class="sourceLineNo">19850</span> ox = (float) (Math.asin(ix));<a name="line.19850"></a>
<span class="sourceLineNo">19851</span> of32data[it.oIndex] = ox;<a name="line.19851"></a>
<span class="sourceLineNo">19852</span> }<a name="line.19852"></a>
<span class="sourceLineNo">19853</span> }<a name="line.19853"></a>
<span class="sourceLineNo">19854</span> break;<a name="line.19854"></a>
<span class="sourceLineNo">19855</span> case Dataset.FLOAT64:<a name="line.19855"></a>
<span class="sourceLineNo">19856</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.19856"></a>
<span class="sourceLineNo">19857</span> if (it.isOutputDouble()) {<a name="line.19857"></a>
<span class="sourceLineNo">19858</span> while (it.hasNext()) {<a name="line.19858"></a>
<span class="sourceLineNo">19859</span> final double ix = it.aDouble;<a name="line.19859"></a>
<span class="sourceLineNo">19860</span> double ox;<a name="line.19860"></a>
<span class="sourceLineNo">19861</span> ox = (Math.asin(ix));<a name="line.19861"></a>
<span class="sourceLineNo">19862</span> of64data[it.oIndex] = ox;<a name="line.19862"></a>
<span class="sourceLineNo">19863</span> }<a name="line.19863"></a>
<span class="sourceLineNo">19864</span> } else {<a name="line.19864"></a>
<span class="sourceLineNo">19865</span> while (it.hasNext()) {<a name="line.19865"></a>
<span class="sourceLineNo">19866</span> final long ix = it.aLong;<a name="line.19866"></a>
<span class="sourceLineNo">19867</span> double ox;<a name="line.19867"></a>
<span class="sourceLineNo">19868</span> ox = (Math.asin(ix));<a name="line.19868"></a>
<span class="sourceLineNo">19869</span> of64data[it.oIndex] = ox;<a name="line.19869"></a>
<span class="sourceLineNo">19870</span> }<a name="line.19870"></a>
<span class="sourceLineNo">19871</span> }<a name="line.19871"></a>
<span class="sourceLineNo">19872</span> break;<a name="line.19872"></a>
<span class="sourceLineNo">19873</span> case Dataset.ARRAYFLOAT32:<a name="line.19873"></a>
<span class="sourceLineNo">19874</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.19874"></a>
<span class="sourceLineNo">19875</span> if (is == 1) {<a name="line.19875"></a>
<span class="sourceLineNo">19876</span> if (it.isOutputDouble()) {<a name="line.19876"></a>
<span class="sourceLineNo">19877</span> while (it.hasNext()) {<a name="line.19877"></a>
<span class="sourceLineNo">19878</span> final double ix = it.aDouble;<a name="line.19878"></a>
<span class="sourceLineNo">19879</span> float ox;<a name="line.19879"></a>
<span class="sourceLineNo">19880</span> ox = (float) (Math.asin(ix));<a name="line.19880"></a>
<span class="sourceLineNo">19881</span> oaf32data[it.oIndex] = ox;<a name="line.19881"></a>
<span class="sourceLineNo">19882</span> }<a name="line.19882"></a>
<span class="sourceLineNo">19883</span> } else {<a name="line.19883"></a>
<span class="sourceLineNo">19884</span> while (it.hasNext()) {<a name="line.19884"></a>
<span class="sourceLineNo">19885</span> final long ix = it.aLong;<a name="line.19885"></a>
<span class="sourceLineNo">19886</span> float ox;<a name="line.19886"></a>
<span class="sourceLineNo">19887</span> ox = (float) (Math.asin(ix));<a name="line.19887"></a>
<span class="sourceLineNo">19888</span> oaf32data[it.oIndex] = ox;<a name="line.19888"></a>
<span class="sourceLineNo">19889</span> }<a name="line.19889"></a>
<span class="sourceLineNo">19890</span> }<a name="line.19890"></a>
<span class="sourceLineNo">19891</span> } else if (as == 1) {<a name="line.19891"></a>
<span class="sourceLineNo">19892</span> if (it.isOutputDouble()) {<a name="line.19892"></a>
<span class="sourceLineNo">19893</span> while (it.hasNext()) {<a name="line.19893"></a>
<span class="sourceLineNo">19894</span> final double ix = it.aDouble;<a name="line.19894"></a>
<span class="sourceLineNo">19895</span> float ox;<a name="line.19895"></a>
<span class="sourceLineNo">19896</span> ox = (float) (Math.asin(ix));<a name="line.19896"></a>
<span class="sourceLineNo">19897</span> for (int j = 0; j &lt; is; j++) {<a name="line.19897"></a>
<span class="sourceLineNo">19898</span> oaf32data[it.oIndex + j] = ox;<a name="line.19898"></a>
<span class="sourceLineNo">19899</span> }<a name="line.19899"></a>
<span class="sourceLineNo">19900</span> }<a name="line.19900"></a>
<span class="sourceLineNo">19901</span> } else {<a name="line.19901"></a>
<span class="sourceLineNo">19902</span> while (it.hasNext()) {<a name="line.19902"></a>
<span class="sourceLineNo">19903</span> final long ix = it.aLong;<a name="line.19903"></a>
<span class="sourceLineNo">19904</span> float ox;<a name="line.19904"></a>
<span class="sourceLineNo">19905</span> ox = (float) (Math.asin(ix));<a name="line.19905"></a>
<span class="sourceLineNo">19906</span> for (int j = 0; j &lt; is; j++) {<a name="line.19906"></a>
<span class="sourceLineNo">19907</span> oaf32data[it.oIndex + j] = ox;<a name="line.19907"></a>
<span class="sourceLineNo">19908</span> }<a name="line.19908"></a>
<span class="sourceLineNo">19909</span> }<a name="line.19909"></a>
<span class="sourceLineNo">19910</span> }<a name="line.19910"></a>
<span class="sourceLineNo">19911</span> } else {<a name="line.19911"></a>
<span class="sourceLineNo">19912</span> if (it.isOutputDouble()) {<a name="line.19912"></a>
<span class="sourceLineNo">19913</span> while (it.hasNext()) {<a name="line.19913"></a>
<span class="sourceLineNo">19914</span> for (int j = 0; j &lt; is; j++) {<a name="line.19914"></a>
<span class="sourceLineNo">19915</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.19915"></a>
<span class="sourceLineNo">19916</span> float ox;<a name="line.19916"></a>
<span class="sourceLineNo">19917</span> ox = (float) (Math.asin(ix));<a name="line.19917"></a>
<span class="sourceLineNo">19918</span> oaf32data[it.oIndex + j] = ox;<a name="line.19918"></a>
<span class="sourceLineNo">19919</span> }<a name="line.19919"></a>
<span class="sourceLineNo">19920</span> }<a name="line.19920"></a>
<span class="sourceLineNo">19921</span> } else {<a name="line.19921"></a>
<span class="sourceLineNo">19922</span> while (it.hasNext()) {<a name="line.19922"></a>
<span class="sourceLineNo">19923</span> for (int j = 0; j &lt; is; j++) {<a name="line.19923"></a>
<span class="sourceLineNo">19924</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.19924"></a>
<span class="sourceLineNo">19925</span> float ox;<a name="line.19925"></a>
<span class="sourceLineNo">19926</span> ox = (float) (Math.asin(ix));<a name="line.19926"></a>
<span class="sourceLineNo">19927</span> oaf32data[it.oIndex + j] = ox;<a name="line.19927"></a>
<span class="sourceLineNo">19928</span> }<a name="line.19928"></a>
<span class="sourceLineNo">19929</span> }<a name="line.19929"></a>
<span class="sourceLineNo">19930</span> }<a name="line.19930"></a>
<span class="sourceLineNo">19931</span> }<a name="line.19931"></a>
<span class="sourceLineNo">19932</span> break;<a name="line.19932"></a>
<span class="sourceLineNo">19933</span> case Dataset.ARRAYFLOAT64:<a name="line.19933"></a>
<span class="sourceLineNo">19934</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.19934"></a>
<span class="sourceLineNo">19935</span> if (is == 1) {<a name="line.19935"></a>
<span class="sourceLineNo">19936</span> if (it.isOutputDouble()) {<a name="line.19936"></a>
<span class="sourceLineNo">19937</span> while (it.hasNext()) {<a name="line.19937"></a>
<span class="sourceLineNo">19938</span> final double ix = it.aDouble;<a name="line.19938"></a>
<span class="sourceLineNo">19939</span> double ox;<a name="line.19939"></a>
<span class="sourceLineNo">19940</span> ox = (Math.asin(ix));<a name="line.19940"></a>
<span class="sourceLineNo">19941</span> oaf64data[it.oIndex] = ox;<a name="line.19941"></a>
<span class="sourceLineNo">19942</span> }<a name="line.19942"></a>
<span class="sourceLineNo">19943</span> } else {<a name="line.19943"></a>
<span class="sourceLineNo">19944</span> while (it.hasNext()) {<a name="line.19944"></a>
<span class="sourceLineNo">19945</span> final long ix = it.aLong;<a name="line.19945"></a>
<span class="sourceLineNo">19946</span> double ox;<a name="line.19946"></a>
<span class="sourceLineNo">19947</span> ox = (Math.asin(ix));<a name="line.19947"></a>
<span class="sourceLineNo">19948</span> oaf64data[it.oIndex] = ox;<a name="line.19948"></a>
<span class="sourceLineNo">19949</span> }<a name="line.19949"></a>
<span class="sourceLineNo">19950</span> }<a name="line.19950"></a>
<span class="sourceLineNo">19951</span> } else if (as == 1) {<a name="line.19951"></a>
<span class="sourceLineNo">19952</span> if (it.isOutputDouble()) {<a name="line.19952"></a>
<span class="sourceLineNo">19953</span> while (it.hasNext()) {<a name="line.19953"></a>
<span class="sourceLineNo">19954</span> final double ix = it.aDouble;<a name="line.19954"></a>
<span class="sourceLineNo">19955</span> double ox;<a name="line.19955"></a>
<span class="sourceLineNo">19956</span> ox = (Math.asin(ix));<a name="line.19956"></a>
<span class="sourceLineNo">19957</span> for (int j = 0; j &lt; is; j++) {<a name="line.19957"></a>
<span class="sourceLineNo">19958</span> oaf64data[it.oIndex + j] = ox;<a name="line.19958"></a>
<span class="sourceLineNo">19959</span> }<a name="line.19959"></a>
<span class="sourceLineNo">19960</span> }<a name="line.19960"></a>
<span class="sourceLineNo">19961</span> } else {<a name="line.19961"></a>
<span class="sourceLineNo">19962</span> while (it.hasNext()) {<a name="line.19962"></a>
<span class="sourceLineNo">19963</span> final long ix = it.aLong;<a name="line.19963"></a>
<span class="sourceLineNo">19964</span> double ox;<a name="line.19964"></a>
<span class="sourceLineNo">19965</span> ox = (Math.asin(ix));<a name="line.19965"></a>
<span class="sourceLineNo">19966</span> for (int j = 0; j &lt; is; j++) {<a name="line.19966"></a>
<span class="sourceLineNo">19967</span> oaf64data[it.oIndex + j] = ox;<a name="line.19967"></a>
<span class="sourceLineNo">19968</span> }<a name="line.19968"></a>
<span class="sourceLineNo">19969</span> }<a name="line.19969"></a>
<span class="sourceLineNo">19970</span> }<a name="line.19970"></a>
<span class="sourceLineNo">19971</span> } else {<a name="line.19971"></a>
<span class="sourceLineNo">19972</span> if (it.isOutputDouble()) {<a name="line.19972"></a>
<span class="sourceLineNo">19973</span> while (it.hasNext()) {<a name="line.19973"></a>
<span class="sourceLineNo">19974</span> for (int j = 0; j &lt; is; j++) {<a name="line.19974"></a>
<span class="sourceLineNo">19975</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.19975"></a>
<span class="sourceLineNo">19976</span> double ox;<a name="line.19976"></a>
<span class="sourceLineNo">19977</span> ox = (Math.asin(ix));<a name="line.19977"></a>
<span class="sourceLineNo">19978</span> oaf64data[it.oIndex + j] = ox;<a name="line.19978"></a>
<span class="sourceLineNo">19979</span> }<a name="line.19979"></a>
<span class="sourceLineNo">19980</span> }<a name="line.19980"></a>
<span class="sourceLineNo">19981</span> } else {<a name="line.19981"></a>
<span class="sourceLineNo">19982</span> while (it.hasNext()) {<a name="line.19982"></a>
<span class="sourceLineNo">19983</span> for (int j = 0; j &lt; is; j++) {<a name="line.19983"></a>
<span class="sourceLineNo">19984</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.19984"></a>
<span class="sourceLineNo">19985</span> double ox;<a name="line.19985"></a>
<span class="sourceLineNo">19986</span> ox = (Math.asin(ix));<a name="line.19986"></a>
<span class="sourceLineNo">19987</span> oaf64data[it.oIndex + j] = ox;<a name="line.19987"></a>
<span class="sourceLineNo">19988</span> }<a name="line.19988"></a>
<span class="sourceLineNo">19989</span> }<a name="line.19989"></a>
<span class="sourceLineNo">19990</span> }<a name="line.19990"></a>
<span class="sourceLineNo">19991</span> }<a name="line.19991"></a>
<span class="sourceLineNo">19992</span> break;<a name="line.19992"></a>
<span class="sourceLineNo">19993</span> case Dataset.COMPLEX64:<a name="line.19993"></a>
<span class="sourceLineNo">19994</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.19994"></a>
<span class="sourceLineNo">19995</span> if (!da.isComplex()) {<a name="line.19995"></a>
<span class="sourceLineNo">19996</span> if (it.isOutputDouble()) {<a name="line.19996"></a>
<span class="sourceLineNo">19997</span> final double iy = 0;<a name="line.19997"></a>
<span class="sourceLineNo">19998</span> while (it.hasNext()) {<a name="line.19998"></a>
<span class="sourceLineNo">19999</span> final double ix = it.aDouble;<a name="line.19999"></a>
<span class="sourceLineNo">20000</span> Complex tz;<a name="line.20000"></a>
<span class="sourceLineNo">20001</span> float ox;<a name="line.20001"></a>
<span class="sourceLineNo">20002</span> float oy;<a name="line.20002"></a>
<span class="sourceLineNo">20003</span> tz = new Complex(ix, iy).asin();<a name="line.20003"></a>
<span class="sourceLineNo">20004</span> ox = (float) (tz.getReal());<a name="line.20004"></a>
<span class="sourceLineNo">20005</span> oy = (float) (tz.getImaginary());<a name="line.20005"></a>
<span class="sourceLineNo">20006</span> oc64data[it.oIndex] = ox;<a name="line.20006"></a>
<span class="sourceLineNo">20007</span> oc64data[it.oIndex + 1] = oy;<a name="line.20007"></a>
<span class="sourceLineNo">20008</span> }<a name="line.20008"></a>
<span class="sourceLineNo">20009</span> } else {<a name="line.20009"></a>
<span class="sourceLineNo">20010</span> final long iy = 0;<a name="line.20010"></a>
<span class="sourceLineNo">20011</span> while (it.hasNext()) {<a name="line.20011"></a>
<span class="sourceLineNo">20012</span> final long ix = it.aLong;<a name="line.20012"></a>
<span class="sourceLineNo">20013</span> Complex tz;<a name="line.20013"></a>
<span class="sourceLineNo">20014</span> float ox;<a name="line.20014"></a>
<span class="sourceLineNo">20015</span> float oy;<a name="line.20015"></a>
<span class="sourceLineNo">20016</span> tz = new Complex(ix, iy).asin();<a name="line.20016"></a>
<span class="sourceLineNo">20017</span> ox = (float) toLong(tz.getReal());<a name="line.20017"></a>
<span class="sourceLineNo">20018</span> oy = (float) toLong(tz.getImaginary());<a name="line.20018"></a>
<span class="sourceLineNo">20019</span> oc64data[it.oIndex] = ox;<a name="line.20019"></a>
<span class="sourceLineNo">20020</span> oc64data[it.oIndex + 1] = oy;<a name="line.20020"></a>
<span class="sourceLineNo">20021</span> }<a name="line.20021"></a>
<span class="sourceLineNo">20022</span> }<a name="line.20022"></a>
<span class="sourceLineNo">20023</span> } else {<a name="line.20023"></a>
<span class="sourceLineNo">20024</span> while (it.hasNext()) {<a name="line.20024"></a>
<span class="sourceLineNo">20025</span> final double ix = it.aDouble;<a name="line.20025"></a>
<span class="sourceLineNo">20026</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.20026"></a>
<span class="sourceLineNo">20027</span> Complex tz;<a name="line.20027"></a>
<span class="sourceLineNo">20028</span> float ox;<a name="line.20028"></a>
<span class="sourceLineNo">20029</span> float oy;<a name="line.20029"></a>
<span class="sourceLineNo">20030</span> tz = new Complex(ix, iy).asin();<a name="line.20030"></a>
<span class="sourceLineNo">20031</span> ox = (float) (tz.getReal());<a name="line.20031"></a>
<span class="sourceLineNo">20032</span> oy = (float) (tz.getImaginary());<a name="line.20032"></a>
<span class="sourceLineNo">20033</span> oc64data[it.oIndex] = ox;<a name="line.20033"></a>
<span class="sourceLineNo">20034</span> oc64data[it.oIndex + 1] = oy;<a name="line.20034"></a>
<span class="sourceLineNo">20035</span> }<a name="line.20035"></a>
<span class="sourceLineNo">20036</span> }<a name="line.20036"></a>
<span class="sourceLineNo">20037</span> break;<a name="line.20037"></a>
<span class="sourceLineNo">20038</span> case Dataset.COMPLEX128:<a name="line.20038"></a>
<span class="sourceLineNo">20039</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.20039"></a>
<span class="sourceLineNo">20040</span> if (!da.isComplex()) {<a name="line.20040"></a>
<span class="sourceLineNo">20041</span> if (it.isOutputDouble()) {<a name="line.20041"></a>
<span class="sourceLineNo">20042</span> final double iy = 0;<a name="line.20042"></a>
<span class="sourceLineNo">20043</span> while (it.hasNext()) {<a name="line.20043"></a>
<span class="sourceLineNo">20044</span> final double ix = it.aDouble;<a name="line.20044"></a>
<span class="sourceLineNo">20045</span> Complex tz;<a name="line.20045"></a>
<span class="sourceLineNo">20046</span> double ox;<a name="line.20046"></a>
<span class="sourceLineNo">20047</span> double oy;<a name="line.20047"></a>
<span class="sourceLineNo">20048</span> tz = new Complex(ix, iy).asin();<a name="line.20048"></a>
<span class="sourceLineNo">20049</span> ox = (tz.getReal());<a name="line.20049"></a>
<span class="sourceLineNo">20050</span> oy = (tz.getImaginary());<a name="line.20050"></a>
<span class="sourceLineNo">20051</span> oc128data[it.oIndex] = ox;<a name="line.20051"></a>
<span class="sourceLineNo">20052</span> oc128data[it.oIndex + 1] = oy;<a name="line.20052"></a>
<span class="sourceLineNo">20053</span> }<a name="line.20053"></a>
<span class="sourceLineNo">20054</span> } else {<a name="line.20054"></a>
<span class="sourceLineNo">20055</span> final long iy = 0;<a name="line.20055"></a>
<span class="sourceLineNo">20056</span> while (it.hasNext()) {<a name="line.20056"></a>
<span class="sourceLineNo">20057</span> final long ix = it.aLong;<a name="line.20057"></a>
<span class="sourceLineNo">20058</span> Complex tz;<a name="line.20058"></a>
<span class="sourceLineNo">20059</span> double ox;<a name="line.20059"></a>
<span class="sourceLineNo">20060</span> double oy;<a name="line.20060"></a>
<span class="sourceLineNo">20061</span> tz = new Complex(ix, iy).asin();<a name="line.20061"></a>
<span class="sourceLineNo">20062</span> ox = (tz.getReal());<a name="line.20062"></a>
<span class="sourceLineNo">20063</span> oy = (tz.getImaginary());<a name="line.20063"></a>
<span class="sourceLineNo">20064</span> oc128data[it.oIndex] = ox;<a name="line.20064"></a>
<span class="sourceLineNo">20065</span> oc128data[it.oIndex + 1] = oy;<a name="line.20065"></a>
<span class="sourceLineNo">20066</span> }<a name="line.20066"></a>
<span class="sourceLineNo">20067</span> }<a name="line.20067"></a>
<span class="sourceLineNo">20068</span> } else {<a name="line.20068"></a>
<span class="sourceLineNo">20069</span> while (it.hasNext()) {<a name="line.20069"></a>
<span class="sourceLineNo">20070</span> final double ix = it.aDouble;<a name="line.20070"></a>
<span class="sourceLineNo">20071</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.20071"></a>
<span class="sourceLineNo">20072</span> Complex tz;<a name="line.20072"></a>
<span class="sourceLineNo">20073</span> double ox;<a name="line.20073"></a>
<span class="sourceLineNo">20074</span> double oy;<a name="line.20074"></a>
<span class="sourceLineNo">20075</span> tz = new Complex(ix, iy).asin();<a name="line.20075"></a>
<span class="sourceLineNo">20076</span> ox = (tz.getReal());<a name="line.20076"></a>
<span class="sourceLineNo">20077</span> oy = (tz.getImaginary());<a name="line.20077"></a>
<span class="sourceLineNo">20078</span> oc128data[it.oIndex] = ox;<a name="line.20078"></a>
<span class="sourceLineNo">20079</span> oc128data[it.oIndex + 1] = oy;<a name="line.20079"></a>
<span class="sourceLineNo">20080</span> }<a name="line.20080"></a>
<span class="sourceLineNo">20081</span> }<a name="line.20081"></a>
<span class="sourceLineNo">20082</span> break;<a name="line.20082"></a>
<span class="sourceLineNo">20083</span> default:<a name="line.20083"></a>
<span class="sourceLineNo">20084</span> throw new IllegalArgumentException("arcsin supports integer, compound integer, real, compound real, complex datasets only");<a name="line.20084"></a>
<span class="sourceLineNo">20085</span> }<a name="line.20085"></a>
<span class="sourceLineNo">20086</span><a name="line.20086"></a>
<span class="sourceLineNo">20087</span> addFunctionName(result, "arcsin");<a name="line.20087"></a>
<span class="sourceLineNo">20088</span> return result;<a name="line.20088"></a>
<span class="sourceLineNo">20089</span> }<a name="line.20089"></a>
<span class="sourceLineNo">20090</span><a name="line.20090"></a>
<span class="sourceLineNo">20091</span> /**<a name="line.20091"></a>
<span class="sourceLineNo">20092</span> * arccos - evaluate the inverse cosine function on each element of the dataset<a name="line.20092"></a>
<span class="sourceLineNo">20093</span> * @param a<a name="line.20093"></a>
<span class="sourceLineNo">20094</span> * @return dataset<a name="line.20094"></a>
<span class="sourceLineNo">20095</span> */<a name="line.20095"></a>
<span class="sourceLineNo">20096</span> public static Dataset arccos(final Object a) {<a name="line.20096"></a>
<span class="sourceLineNo">20097</span> return arccos(a, null);<a name="line.20097"></a>
<span class="sourceLineNo">20098</span> }<a name="line.20098"></a>
<span class="sourceLineNo">20099</span><a name="line.20099"></a>
<span class="sourceLineNo">20100</span> /**<a name="line.20100"></a>
<span class="sourceLineNo">20101</span> * arccos - evaluate the inverse cosine function on each element of the dataset<a name="line.20101"></a>
<span class="sourceLineNo">20102</span> * @param a<a name="line.20102"></a>
<span class="sourceLineNo">20103</span> * @param o output can be null - in which case, a new dataset is created<a name="line.20103"></a>
<span class="sourceLineNo">20104</span> * @return dataset<a name="line.20104"></a>
<span class="sourceLineNo">20105</span> */<a name="line.20105"></a>
<span class="sourceLineNo">20106</span> public static Dataset arccos(final Object a, final Dataset o) {<a name="line.20106"></a>
<span class="sourceLineNo">20107</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.20107"></a>
<span class="sourceLineNo">20108</span> SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true);<a name="line.20108"></a>
<span class="sourceLineNo">20109</span> final Dataset result = it.getOutput();<a name="line.20109"></a>
<span class="sourceLineNo">20110</span> if (!result.isComplex()) {<a name="line.20110"></a>
<span class="sourceLineNo">20111</span> if (da.isComplex()) {<a name="line.20111"></a>
<span class="sourceLineNo">20112</span> da = da.getRealView();<a name="line.20112"></a>
<span class="sourceLineNo">20113</span> it = new SingleInputBroadcastIterator(da, result, true);<a name="line.20113"></a>
<span class="sourceLineNo">20114</span> }<a name="line.20114"></a>
<span class="sourceLineNo">20115</span> }<a name="line.20115"></a>
<span class="sourceLineNo">20116</span> final int is = result.getElementsPerItem();<a name="line.20116"></a>
<span class="sourceLineNo">20117</span> final int as = da.getElementsPerItem();<a name="line.20117"></a>
<span class="sourceLineNo">20118</span> final int dt = result.getDType();<a name="line.20118"></a>
<span class="sourceLineNo">20119</span><a name="line.20119"></a>
<span class="sourceLineNo">20120</span> switch(dt) {<a name="line.20120"></a>
<span class="sourceLineNo">20121</span> case Dataset.INT8:<a name="line.20121"></a>
<span class="sourceLineNo">20122</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.20122"></a>
<span class="sourceLineNo">20123</span> if (it.isOutputDouble()) {<a name="line.20123"></a>
<span class="sourceLineNo">20124</span> while (it.hasNext()) {<a name="line.20124"></a>
<span class="sourceLineNo">20125</span> final double ix = it.aDouble;<a name="line.20125"></a>
<span class="sourceLineNo">20126</span> byte ox;<a name="line.20126"></a>
<span class="sourceLineNo">20127</span> ox = (byte) toLong(Math.acos(ix));<a name="line.20127"></a>
<span class="sourceLineNo">20128</span> oi8data[it.oIndex] = ox;<a name="line.20128"></a>
<span class="sourceLineNo">20129</span> }<a name="line.20129"></a>
<span class="sourceLineNo">20130</span> } else {<a name="line.20130"></a>
<span class="sourceLineNo">20131</span> while (it.hasNext()) {<a name="line.20131"></a>
<span class="sourceLineNo">20132</span> final long ix = it.aLong;<a name="line.20132"></a>
<span class="sourceLineNo">20133</span> byte ox;<a name="line.20133"></a>
<span class="sourceLineNo">20134</span> ox = (byte) toLong(Math.acos(ix));<a name="line.20134"></a>
<span class="sourceLineNo">20135</span> oi8data[it.oIndex] = ox;<a name="line.20135"></a>
<span class="sourceLineNo">20136</span> }<a name="line.20136"></a>
<span class="sourceLineNo">20137</span> }<a name="line.20137"></a>
<span class="sourceLineNo">20138</span> break;<a name="line.20138"></a>
<span class="sourceLineNo">20139</span> case Dataset.INT16:<a name="line.20139"></a>
<span class="sourceLineNo">20140</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.20140"></a>
<span class="sourceLineNo">20141</span> if (it.isOutputDouble()) {<a name="line.20141"></a>
<span class="sourceLineNo">20142</span> while (it.hasNext()) {<a name="line.20142"></a>
<span class="sourceLineNo">20143</span> final double ix = it.aDouble;<a name="line.20143"></a>
<span class="sourceLineNo">20144</span> short ox;<a name="line.20144"></a>
<span class="sourceLineNo">20145</span> ox = (short) toLong(Math.acos(ix));<a name="line.20145"></a>
<span class="sourceLineNo">20146</span> oi16data[it.oIndex] = ox;<a name="line.20146"></a>
<span class="sourceLineNo">20147</span> }<a name="line.20147"></a>
<span class="sourceLineNo">20148</span> } else {<a name="line.20148"></a>
<span class="sourceLineNo">20149</span> while (it.hasNext()) {<a name="line.20149"></a>
<span class="sourceLineNo">20150</span> final long ix = it.aLong;<a name="line.20150"></a>
<span class="sourceLineNo">20151</span> short ox;<a name="line.20151"></a>
<span class="sourceLineNo">20152</span> ox = (short) toLong(Math.acos(ix));<a name="line.20152"></a>
<span class="sourceLineNo">20153</span> oi16data[it.oIndex] = ox;<a name="line.20153"></a>
<span class="sourceLineNo">20154</span> }<a name="line.20154"></a>
<span class="sourceLineNo">20155</span> }<a name="line.20155"></a>
<span class="sourceLineNo">20156</span> break;<a name="line.20156"></a>
<span class="sourceLineNo">20157</span> case Dataset.INT64:<a name="line.20157"></a>
<span class="sourceLineNo">20158</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.20158"></a>
<span class="sourceLineNo">20159</span> if (it.isOutputDouble()) {<a name="line.20159"></a>
<span class="sourceLineNo">20160</span> while (it.hasNext()) {<a name="line.20160"></a>
<span class="sourceLineNo">20161</span> final double ix = it.aDouble;<a name="line.20161"></a>
<span class="sourceLineNo">20162</span> long ox;<a name="line.20162"></a>
<span class="sourceLineNo">20163</span> ox = toLong(Math.acos(ix));<a name="line.20163"></a>
<span class="sourceLineNo">20164</span> oi64data[it.oIndex] = ox;<a name="line.20164"></a>
<span class="sourceLineNo">20165</span> }<a name="line.20165"></a>
<span class="sourceLineNo">20166</span> } else {<a name="line.20166"></a>
<span class="sourceLineNo">20167</span> while (it.hasNext()) {<a name="line.20167"></a>
<span class="sourceLineNo">20168</span> final long ix = it.aLong;<a name="line.20168"></a>
<span class="sourceLineNo">20169</span> long ox;<a name="line.20169"></a>
<span class="sourceLineNo">20170</span> ox = toLong(Math.acos(ix));<a name="line.20170"></a>
<span class="sourceLineNo">20171</span> oi64data[it.oIndex] = ox;<a name="line.20171"></a>
<span class="sourceLineNo">20172</span> }<a name="line.20172"></a>
<span class="sourceLineNo">20173</span> }<a name="line.20173"></a>
<span class="sourceLineNo">20174</span> break;<a name="line.20174"></a>
<span class="sourceLineNo">20175</span> case Dataset.INT32:<a name="line.20175"></a>
<span class="sourceLineNo">20176</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.20176"></a>
<span class="sourceLineNo">20177</span> if (it.isOutputDouble()) {<a name="line.20177"></a>
<span class="sourceLineNo">20178</span> while (it.hasNext()) {<a name="line.20178"></a>
<span class="sourceLineNo">20179</span> final double ix = it.aDouble;<a name="line.20179"></a>
<span class="sourceLineNo">20180</span> int ox;<a name="line.20180"></a>
<span class="sourceLineNo">20181</span> ox = (int) toLong(Math.acos(ix));<a name="line.20181"></a>
<span class="sourceLineNo">20182</span> oi32data[it.oIndex] = ox;<a name="line.20182"></a>
<span class="sourceLineNo">20183</span> }<a name="line.20183"></a>
<span class="sourceLineNo">20184</span> } else {<a name="line.20184"></a>
<span class="sourceLineNo">20185</span> while (it.hasNext()) {<a name="line.20185"></a>
<span class="sourceLineNo">20186</span> final long ix = it.aLong;<a name="line.20186"></a>
<span class="sourceLineNo">20187</span> int ox;<a name="line.20187"></a>
<span class="sourceLineNo">20188</span> ox = (int) toLong(Math.acos(ix));<a name="line.20188"></a>
<span class="sourceLineNo">20189</span> oi32data[it.oIndex] = ox;<a name="line.20189"></a>
<span class="sourceLineNo">20190</span> }<a name="line.20190"></a>
<span class="sourceLineNo">20191</span> }<a name="line.20191"></a>
<span class="sourceLineNo">20192</span> break;<a name="line.20192"></a>
<span class="sourceLineNo">20193</span> case Dataset.ARRAYINT8:<a name="line.20193"></a>
<span class="sourceLineNo">20194</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.20194"></a>
<span class="sourceLineNo">20195</span> if (is == 1) {<a name="line.20195"></a>
<span class="sourceLineNo">20196</span> if (it.isOutputDouble()) {<a name="line.20196"></a>
<span class="sourceLineNo">20197</span> while (it.hasNext()) {<a name="line.20197"></a>
<span class="sourceLineNo">20198</span> final double ix = it.aDouble;<a name="line.20198"></a>
<span class="sourceLineNo">20199</span> byte ox;<a name="line.20199"></a>
<span class="sourceLineNo">20200</span> ox = (byte) toLong(Math.acos(ix));<a name="line.20200"></a>
<span class="sourceLineNo">20201</span> oai8data[it.oIndex] = ox;<a name="line.20201"></a>
<span class="sourceLineNo">20202</span> }<a name="line.20202"></a>
<span class="sourceLineNo">20203</span> } else {<a name="line.20203"></a>
<span class="sourceLineNo">20204</span> while (it.hasNext()) {<a name="line.20204"></a>
<span class="sourceLineNo">20205</span> final long ix = it.aLong;<a name="line.20205"></a>
<span class="sourceLineNo">20206</span> byte ox;<a name="line.20206"></a>
<span class="sourceLineNo">20207</span> ox = (byte) toLong(Math.acos(ix));<a name="line.20207"></a>
<span class="sourceLineNo">20208</span> oai8data[it.oIndex] = ox;<a name="line.20208"></a>
<span class="sourceLineNo">20209</span> }<a name="line.20209"></a>
<span class="sourceLineNo">20210</span> }<a name="line.20210"></a>
<span class="sourceLineNo">20211</span> } else if (as == 1) {<a name="line.20211"></a>
<span class="sourceLineNo">20212</span> if (it.isOutputDouble()) {<a name="line.20212"></a>
<span class="sourceLineNo">20213</span> while (it.hasNext()) {<a name="line.20213"></a>
<span class="sourceLineNo">20214</span> final double ix = it.aDouble;<a name="line.20214"></a>
<span class="sourceLineNo">20215</span> byte ox;<a name="line.20215"></a>
<span class="sourceLineNo">20216</span> ox = (byte) toLong(Math.acos(ix));<a name="line.20216"></a>
<span class="sourceLineNo">20217</span> for (int j = 0; j &lt; is; j++) {<a name="line.20217"></a>
<span class="sourceLineNo">20218</span> oai8data[it.oIndex + j] = ox;<a name="line.20218"></a>
<span class="sourceLineNo">20219</span> }<a name="line.20219"></a>
<span class="sourceLineNo">20220</span> }<a name="line.20220"></a>
<span class="sourceLineNo">20221</span> } else {<a name="line.20221"></a>
<span class="sourceLineNo">20222</span> while (it.hasNext()) {<a name="line.20222"></a>
<span class="sourceLineNo">20223</span> final long ix = it.aLong;<a name="line.20223"></a>
<span class="sourceLineNo">20224</span> byte ox;<a name="line.20224"></a>
<span class="sourceLineNo">20225</span> ox = (byte) toLong(Math.acos(ix));<a name="line.20225"></a>
<span class="sourceLineNo">20226</span> for (int j = 0; j &lt; is; j++) {<a name="line.20226"></a>
<span class="sourceLineNo">20227</span> oai8data[it.oIndex + j] = ox;<a name="line.20227"></a>
<span class="sourceLineNo">20228</span> }<a name="line.20228"></a>
<span class="sourceLineNo">20229</span> }<a name="line.20229"></a>
<span class="sourceLineNo">20230</span> }<a name="line.20230"></a>
<span class="sourceLineNo">20231</span> } else {<a name="line.20231"></a>
<span class="sourceLineNo">20232</span> if (it.isOutputDouble()) {<a name="line.20232"></a>
<span class="sourceLineNo">20233</span> while (it.hasNext()) {<a name="line.20233"></a>
<span class="sourceLineNo">20234</span> for (int j = 0; j &lt; is; j++) {<a name="line.20234"></a>
<span class="sourceLineNo">20235</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.20235"></a>
<span class="sourceLineNo">20236</span> byte ox;<a name="line.20236"></a>
<span class="sourceLineNo">20237</span> ox = (byte) toLong(Math.acos(ix));<a name="line.20237"></a>
<span class="sourceLineNo">20238</span> oai8data[it.oIndex + j] = ox;<a name="line.20238"></a>
<span class="sourceLineNo">20239</span> }<a name="line.20239"></a>
<span class="sourceLineNo">20240</span> }<a name="line.20240"></a>
<span class="sourceLineNo">20241</span> } else {<a name="line.20241"></a>
<span class="sourceLineNo">20242</span> while (it.hasNext()) {<a name="line.20242"></a>
<span class="sourceLineNo">20243</span> for (int j = 0; j &lt; is; j++) {<a name="line.20243"></a>
<span class="sourceLineNo">20244</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.20244"></a>
<span class="sourceLineNo">20245</span> byte ox;<a name="line.20245"></a>
<span class="sourceLineNo">20246</span> ox = (byte) toLong(Math.acos(ix));<a name="line.20246"></a>
<span class="sourceLineNo">20247</span> oai8data[it.oIndex + j] = ox;<a name="line.20247"></a>
<span class="sourceLineNo">20248</span> }<a name="line.20248"></a>
<span class="sourceLineNo">20249</span> }<a name="line.20249"></a>
<span class="sourceLineNo">20250</span> }<a name="line.20250"></a>
<span class="sourceLineNo">20251</span> }<a name="line.20251"></a>
<span class="sourceLineNo">20252</span> break;<a name="line.20252"></a>
<span class="sourceLineNo">20253</span> case Dataset.ARRAYINT16:<a name="line.20253"></a>
<span class="sourceLineNo">20254</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.20254"></a>
<span class="sourceLineNo">20255</span> if (is == 1) {<a name="line.20255"></a>
<span class="sourceLineNo">20256</span> if (it.isOutputDouble()) {<a name="line.20256"></a>
<span class="sourceLineNo">20257</span> while (it.hasNext()) {<a name="line.20257"></a>
<span class="sourceLineNo">20258</span> final double ix = it.aDouble;<a name="line.20258"></a>
<span class="sourceLineNo">20259</span> short ox;<a name="line.20259"></a>
<span class="sourceLineNo">20260</span> ox = (short) toLong(Math.acos(ix));<a name="line.20260"></a>
<span class="sourceLineNo">20261</span> oai16data[it.oIndex] = ox;<a name="line.20261"></a>
<span class="sourceLineNo">20262</span> }<a name="line.20262"></a>
<span class="sourceLineNo">20263</span> } else {<a name="line.20263"></a>
<span class="sourceLineNo">20264</span> while (it.hasNext()) {<a name="line.20264"></a>
<span class="sourceLineNo">20265</span> final long ix = it.aLong;<a name="line.20265"></a>
<span class="sourceLineNo">20266</span> short ox;<a name="line.20266"></a>
<span class="sourceLineNo">20267</span> ox = (short) toLong(Math.acos(ix));<a name="line.20267"></a>
<span class="sourceLineNo">20268</span> oai16data[it.oIndex] = ox;<a name="line.20268"></a>
<span class="sourceLineNo">20269</span> }<a name="line.20269"></a>
<span class="sourceLineNo">20270</span> }<a name="line.20270"></a>
<span class="sourceLineNo">20271</span> } else if (as == 1) {<a name="line.20271"></a>
<span class="sourceLineNo">20272</span> if (it.isOutputDouble()) {<a name="line.20272"></a>
<span class="sourceLineNo">20273</span> while (it.hasNext()) {<a name="line.20273"></a>
<span class="sourceLineNo">20274</span> final double ix = it.aDouble;<a name="line.20274"></a>
<span class="sourceLineNo">20275</span> short ox;<a name="line.20275"></a>
<span class="sourceLineNo">20276</span> ox = (short) toLong(Math.acos(ix));<a name="line.20276"></a>
<span class="sourceLineNo">20277</span> for (int j = 0; j &lt; is; j++) {<a name="line.20277"></a>
<span class="sourceLineNo">20278</span> oai16data[it.oIndex + j] = ox;<a name="line.20278"></a>
<span class="sourceLineNo">20279</span> }<a name="line.20279"></a>
<span class="sourceLineNo">20280</span> }<a name="line.20280"></a>
<span class="sourceLineNo">20281</span> } else {<a name="line.20281"></a>
<span class="sourceLineNo">20282</span> while (it.hasNext()) {<a name="line.20282"></a>
<span class="sourceLineNo">20283</span> final long ix = it.aLong;<a name="line.20283"></a>
<span class="sourceLineNo">20284</span> short ox;<a name="line.20284"></a>
<span class="sourceLineNo">20285</span> ox = (short) toLong(Math.acos(ix));<a name="line.20285"></a>
<span class="sourceLineNo">20286</span> for (int j = 0; j &lt; is; j++) {<a name="line.20286"></a>
<span class="sourceLineNo">20287</span> oai16data[it.oIndex + j] = ox;<a name="line.20287"></a>
<span class="sourceLineNo">20288</span> }<a name="line.20288"></a>
<span class="sourceLineNo">20289</span> }<a name="line.20289"></a>
<span class="sourceLineNo">20290</span> }<a name="line.20290"></a>
<span class="sourceLineNo">20291</span> } else {<a name="line.20291"></a>
<span class="sourceLineNo">20292</span> if (it.isOutputDouble()) {<a name="line.20292"></a>
<span class="sourceLineNo">20293</span> while (it.hasNext()) {<a name="line.20293"></a>
<span class="sourceLineNo">20294</span> for (int j = 0; j &lt; is; j++) {<a name="line.20294"></a>
<span class="sourceLineNo">20295</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.20295"></a>
<span class="sourceLineNo">20296</span> short ox;<a name="line.20296"></a>
<span class="sourceLineNo">20297</span> ox = (short) toLong(Math.acos(ix));<a name="line.20297"></a>
<span class="sourceLineNo">20298</span> oai16data[it.oIndex + j] = ox;<a name="line.20298"></a>
<span class="sourceLineNo">20299</span> }<a name="line.20299"></a>
<span class="sourceLineNo">20300</span> }<a name="line.20300"></a>
<span class="sourceLineNo">20301</span> } else {<a name="line.20301"></a>
<span class="sourceLineNo">20302</span> while (it.hasNext()) {<a name="line.20302"></a>
<span class="sourceLineNo">20303</span> for (int j = 0; j &lt; is; j++) {<a name="line.20303"></a>
<span class="sourceLineNo">20304</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.20304"></a>
<span class="sourceLineNo">20305</span> short ox;<a name="line.20305"></a>
<span class="sourceLineNo">20306</span> ox = (short) toLong(Math.acos(ix));<a name="line.20306"></a>
<span class="sourceLineNo">20307</span> oai16data[it.oIndex + j] = ox;<a name="line.20307"></a>
<span class="sourceLineNo">20308</span> }<a name="line.20308"></a>
<span class="sourceLineNo">20309</span> }<a name="line.20309"></a>
<span class="sourceLineNo">20310</span> }<a name="line.20310"></a>
<span class="sourceLineNo">20311</span> }<a name="line.20311"></a>
<span class="sourceLineNo">20312</span> break;<a name="line.20312"></a>
<span class="sourceLineNo">20313</span> case Dataset.ARRAYINT64:<a name="line.20313"></a>
<span class="sourceLineNo">20314</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.20314"></a>
<span class="sourceLineNo">20315</span> if (is == 1) {<a name="line.20315"></a>
<span class="sourceLineNo">20316</span> if (it.isOutputDouble()) {<a name="line.20316"></a>
<span class="sourceLineNo">20317</span> while (it.hasNext()) {<a name="line.20317"></a>
<span class="sourceLineNo">20318</span> final double ix = it.aDouble;<a name="line.20318"></a>
<span class="sourceLineNo">20319</span> long ox;<a name="line.20319"></a>
<span class="sourceLineNo">20320</span> ox = toLong(Math.acos(ix));<a name="line.20320"></a>
<span class="sourceLineNo">20321</span> oai64data[it.oIndex] = ox;<a name="line.20321"></a>
<span class="sourceLineNo">20322</span> }<a name="line.20322"></a>
<span class="sourceLineNo">20323</span> } else {<a name="line.20323"></a>
<span class="sourceLineNo">20324</span> while (it.hasNext()) {<a name="line.20324"></a>
<span class="sourceLineNo">20325</span> final long ix = it.aLong;<a name="line.20325"></a>
<span class="sourceLineNo">20326</span> long ox;<a name="line.20326"></a>
<span class="sourceLineNo">20327</span> ox = toLong(Math.acos(ix));<a name="line.20327"></a>
<span class="sourceLineNo">20328</span> oai64data[it.oIndex] = ox;<a name="line.20328"></a>
<span class="sourceLineNo">20329</span> }<a name="line.20329"></a>
<span class="sourceLineNo">20330</span> }<a name="line.20330"></a>
<span class="sourceLineNo">20331</span> } else if (as == 1) {<a name="line.20331"></a>
<span class="sourceLineNo">20332</span> if (it.isOutputDouble()) {<a name="line.20332"></a>
<span class="sourceLineNo">20333</span> while (it.hasNext()) {<a name="line.20333"></a>
<span class="sourceLineNo">20334</span> final double ix = it.aDouble;<a name="line.20334"></a>
<span class="sourceLineNo">20335</span> long ox;<a name="line.20335"></a>
<span class="sourceLineNo">20336</span> ox = toLong(Math.acos(ix));<a name="line.20336"></a>
<span class="sourceLineNo">20337</span> for (int j = 0; j &lt; is; j++) {<a name="line.20337"></a>
<span class="sourceLineNo">20338</span> oai64data[it.oIndex + j] = ox;<a name="line.20338"></a>
<span class="sourceLineNo">20339</span> }<a name="line.20339"></a>
<span class="sourceLineNo">20340</span> }<a name="line.20340"></a>
<span class="sourceLineNo">20341</span> } else {<a name="line.20341"></a>
<span class="sourceLineNo">20342</span> while (it.hasNext()) {<a name="line.20342"></a>
<span class="sourceLineNo">20343</span> final long ix = it.aLong;<a name="line.20343"></a>
<span class="sourceLineNo">20344</span> long ox;<a name="line.20344"></a>
<span class="sourceLineNo">20345</span> ox = toLong(Math.acos(ix));<a name="line.20345"></a>
<span class="sourceLineNo">20346</span> for (int j = 0; j &lt; is; j++) {<a name="line.20346"></a>
<span class="sourceLineNo">20347</span> oai64data[it.oIndex + j] = ox;<a name="line.20347"></a>
<span class="sourceLineNo">20348</span> }<a name="line.20348"></a>
<span class="sourceLineNo">20349</span> }<a name="line.20349"></a>
<span class="sourceLineNo">20350</span> }<a name="line.20350"></a>
<span class="sourceLineNo">20351</span> } else {<a name="line.20351"></a>
<span class="sourceLineNo">20352</span> if (it.isOutputDouble()) {<a name="line.20352"></a>
<span class="sourceLineNo">20353</span> while (it.hasNext()) {<a name="line.20353"></a>
<span class="sourceLineNo">20354</span> for (int j = 0; j &lt; is; j++) {<a name="line.20354"></a>
<span class="sourceLineNo">20355</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.20355"></a>
<span class="sourceLineNo">20356</span> long ox;<a name="line.20356"></a>
<span class="sourceLineNo">20357</span> ox = toLong(Math.acos(ix));<a name="line.20357"></a>
<span class="sourceLineNo">20358</span> oai64data[it.oIndex + j] = ox;<a name="line.20358"></a>
<span class="sourceLineNo">20359</span> }<a name="line.20359"></a>
<span class="sourceLineNo">20360</span> }<a name="line.20360"></a>
<span class="sourceLineNo">20361</span> } else {<a name="line.20361"></a>
<span class="sourceLineNo">20362</span> while (it.hasNext()) {<a name="line.20362"></a>
<span class="sourceLineNo">20363</span> for (int j = 0; j &lt; is; j++) {<a name="line.20363"></a>
<span class="sourceLineNo">20364</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.20364"></a>
<span class="sourceLineNo">20365</span> long ox;<a name="line.20365"></a>
<span class="sourceLineNo">20366</span> ox = toLong(Math.acos(ix));<a name="line.20366"></a>
<span class="sourceLineNo">20367</span> oai64data[it.oIndex + j] = ox;<a name="line.20367"></a>
<span class="sourceLineNo">20368</span> }<a name="line.20368"></a>
<span class="sourceLineNo">20369</span> }<a name="line.20369"></a>
<span class="sourceLineNo">20370</span> }<a name="line.20370"></a>
<span class="sourceLineNo">20371</span> }<a name="line.20371"></a>
<span class="sourceLineNo">20372</span> break;<a name="line.20372"></a>
<span class="sourceLineNo">20373</span> case Dataset.ARRAYINT32:<a name="line.20373"></a>
<span class="sourceLineNo">20374</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.20374"></a>
<span class="sourceLineNo">20375</span> if (is == 1) {<a name="line.20375"></a>
<span class="sourceLineNo">20376</span> if (it.isOutputDouble()) {<a name="line.20376"></a>
<span class="sourceLineNo">20377</span> while (it.hasNext()) {<a name="line.20377"></a>
<span class="sourceLineNo">20378</span> final double ix = it.aDouble;<a name="line.20378"></a>
<span class="sourceLineNo">20379</span> int ox;<a name="line.20379"></a>
<span class="sourceLineNo">20380</span> ox = (int) toLong(Math.acos(ix));<a name="line.20380"></a>
<span class="sourceLineNo">20381</span> oai32data[it.oIndex] = ox;<a name="line.20381"></a>
<span class="sourceLineNo">20382</span> }<a name="line.20382"></a>
<span class="sourceLineNo">20383</span> } else {<a name="line.20383"></a>
<span class="sourceLineNo">20384</span> while (it.hasNext()) {<a name="line.20384"></a>
<span class="sourceLineNo">20385</span> final long ix = it.aLong;<a name="line.20385"></a>
<span class="sourceLineNo">20386</span> int ox;<a name="line.20386"></a>
<span class="sourceLineNo">20387</span> ox = (int) toLong(Math.acos(ix));<a name="line.20387"></a>
<span class="sourceLineNo">20388</span> oai32data[it.oIndex] = ox;<a name="line.20388"></a>
<span class="sourceLineNo">20389</span> }<a name="line.20389"></a>
<span class="sourceLineNo">20390</span> }<a name="line.20390"></a>
<span class="sourceLineNo">20391</span> } else if (as == 1) {<a name="line.20391"></a>
<span class="sourceLineNo">20392</span> if (it.isOutputDouble()) {<a name="line.20392"></a>
<span class="sourceLineNo">20393</span> while (it.hasNext()) {<a name="line.20393"></a>
<span class="sourceLineNo">20394</span> final double ix = it.aDouble;<a name="line.20394"></a>
<span class="sourceLineNo">20395</span> int ox;<a name="line.20395"></a>
<span class="sourceLineNo">20396</span> ox = (int) toLong(Math.acos(ix));<a name="line.20396"></a>
<span class="sourceLineNo">20397</span> for (int j = 0; j &lt; is; j++) {<a name="line.20397"></a>
<span class="sourceLineNo">20398</span> oai32data[it.oIndex + j] = ox;<a name="line.20398"></a>
<span class="sourceLineNo">20399</span> }<a name="line.20399"></a>
<span class="sourceLineNo">20400</span> }<a name="line.20400"></a>
<span class="sourceLineNo">20401</span> } else {<a name="line.20401"></a>
<span class="sourceLineNo">20402</span> while (it.hasNext()) {<a name="line.20402"></a>
<span class="sourceLineNo">20403</span> final long ix = it.aLong;<a name="line.20403"></a>
<span class="sourceLineNo">20404</span> int ox;<a name="line.20404"></a>
<span class="sourceLineNo">20405</span> ox = (int) toLong(Math.acos(ix));<a name="line.20405"></a>
<span class="sourceLineNo">20406</span> for (int j = 0; j &lt; is; j++) {<a name="line.20406"></a>
<span class="sourceLineNo">20407</span> oai32data[it.oIndex + j] = ox;<a name="line.20407"></a>
<span class="sourceLineNo">20408</span> }<a name="line.20408"></a>
<span class="sourceLineNo">20409</span> }<a name="line.20409"></a>
<span class="sourceLineNo">20410</span> }<a name="line.20410"></a>
<span class="sourceLineNo">20411</span> } else {<a name="line.20411"></a>
<span class="sourceLineNo">20412</span> if (it.isOutputDouble()) {<a name="line.20412"></a>
<span class="sourceLineNo">20413</span> while (it.hasNext()) {<a name="line.20413"></a>
<span class="sourceLineNo">20414</span> for (int j = 0; j &lt; is; j++) {<a name="line.20414"></a>
<span class="sourceLineNo">20415</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.20415"></a>
<span class="sourceLineNo">20416</span> int ox;<a name="line.20416"></a>
<span class="sourceLineNo">20417</span> ox = (int) toLong(Math.acos(ix));<a name="line.20417"></a>
<span class="sourceLineNo">20418</span> oai32data[it.oIndex + j] = ox;<a name="line.20418"></a>
<span class="sourceLineNo">20419</span> }<a name="line.20419"></a>
<span class="sourceLineNo">20420</span> }<a name="line.20420"></a>
<span class="sourceLineNo">20421</span> } else {<a name="line.20421"></a>
<span class="sourceLineNo">20422</span> while (it.hasNext()) {<a name="line.20422"></a>
<span class="sourceLineNo">20423</span> for (int j = 0; j &lt; is; j++) {<a name="line.20423"></a>
<span class="sourceLineNo">20424</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.20424"></a>
<span class="sourceLineNo">20425</span> int ox;<a name="line.20425"></a>
<span class="sourceLineNo">20426</span> ox = (int) toLong(Math.acos(ix));<a name="line.20426"></a>
<span class="sourceLineNo">20427</span> oai32data[it.oIndex + j] = ox;<a name="line.20427"></a>
<span class="sourceLineNo">20428</span> }<a name="line.20428"></a>
<span class="sourceLineNo">20429</span> }<a name="line.20429"></a>
<span class="sourceLineNo">20430</span> }<a name="line.20430"></a>
<span class="sourceLineNo">20431</span> }<a name="line.20431"></a>
<span class="sourceLineNo">20432</span> break;<a name="line.20432"></a>
<span class="sourceLineNo">20433</span> case Dataset.FLOAT32:<a name="line.20433"></a>
<span class="sourceLineNo">20434</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.20434"></a>
<span class="sourceLineNo">20435</span> if (it.isOutputDouble()) {<a name="line.20435"></a>
<span class="sourceLineNo">20436</span> while (it.hasNext()) {<a name="line.20436"></a>
<span class="sourceLineNo">20437</span> final double ix = it.aDouble;<a name="line.20437"></a>
<span class="sourceLineNo">20438</span> float ox;<a name="line.20438"></a>
<span class="sourceLineNo">20439</span> ox = (float) (Math.acos(ix));<a name="line.20439"></a>
<span class="sourceLineNo">20440</span> of32data[it.oIndex] = ox;<a name="line.20440"></a>
<span class="sourceLineNo">20441</span> }<a name="line.20441"></a>
<span class="sourceLineNo">20442</span> } else {<a name="line.20442"></a>
<span class="sourceLineNo">20443</span> while (it.hasNext()) {<a name="line.20443"></a>
<span class="sourceLineNo">20444</span> final long ix = it.aLong;<a name="line.20444"></a>
<span class="sourceLineNo">20445</span> float ox;<a name="line.20445"></a>
<span class="sourceLineNo">20446</span> ox = (float) (Math.acos(ix));<a name="line.20446"></a>
<span class="sourceLineNo">20447</span> of32data[it.oIndex] = ox;<a name="line.20447"></a>
<span class="sourceLineNo">20448</span> }<a name="line.20448"></a>
<span class="sourceLineNo">20449</span> }<a name="line.20449"></a>
<span class="sourceLineNo">20450</span> break;<a name="line.20450"></a>
<span class="sourceLineNo">20451</span> case Dataset.FLOAT64:<a name="line.20451"></a>
<span class="sourceLineNo">20452</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.20452"></a>
<span class="sourceLineNo">20453</span> if (it.isOutputDouble()) {<a name="line.20453"></a>
<span class="sourceLineNo">20454</span> while (it.hasNext()) {<a name="line.20454"></a>
<span class="sourceLineNo">20455</span> final double ix = it.aDouble;<a name="line.20455"></a>
<span class="sourceLineNo">20456</span> double ox;<a name="line.20456"></a>
<span class="sourceLineNo">20457</span> ox = (Math.acos(ix));<a name="line.20457"></a>
<span class="sourceLineNo">20458</span> of64data[it.oIndex] = ox;<a name="line.20458"></a>
<span class="sourceLineNo">20459</span> }<a name="line.20459"></a>
<span class="sourceLineNo">20460</span> } else {<a name="line.20460"></a>
<span class="sourceLineNo">20461</span> while (it.hasNext()) {<a name="line.20461"></a>
<span class="sourceLineNo">20462</span> final long ix = it.aLong;<a name="line.20462"></a>
<span class="sourceLineNo">20463</span> double ox;<a name="line.20463"></a>
<span class="sourceLineNo">20464</span> ox = (Math.acos(ix));<a name="line.20464"></a>
<span class="sourceLineNo">20465</span> of64data[it.oIndex] = ox;<a name="line.20465"></a>
<span class="sourceLineNo">20466</span> }<a name="line.20466"></a>
<span class="sourceLineNo">20467</span> }<a name="line.20467"></a>
<span class="sourceLineNo">20468</span> break;<a name="line.20468"></a>
<span class="sourceLineNo">20469</span> case Dataset.ARRAYFLOAT32:<a name="line.20469"></a>
<span class="sourceLineNo">20470</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.20470"></a>
<span class="sourceLineNo">20471</span> if (is == 1) {<a name="line.20471"></a>
<span class="sourceLineNo">20472</span> if (it.isOutputDouble()) {<a name="line.20472"></a>
<span class="sourceLineNo">20473</span> while (it.hasNext()) {<a name="line.20473"></a>
<span class="sourceLineNo">20474</span> final double ix = it.aDouble;<a name="line.20474"></a>
<span class="sourceLineNo">20475</span> float ox;<a name="line.20475"></a>
<span class="sourceLineNo">20476</span> ox = (float) (Math.acos(ix));<a name="line.20476"></a>
<span class="sourceLineNo">20477</span> oaf32data[it.oIndex] = ox;<a name="line.20477"></a>
<span class="sourceLineNo">20478</span> }<a name="line.20478"></a>
<span class="sourceLineNo">20479</span> } else {<a name="line.20479"></a>
<span class="sourceLineNo">20480</span> while (it.hasNext()) {<a name="line.20480"></a>
<span class="sourceLineNo">20481</span> final long ix = it.aLong;<a name="line.20481"></a>
<span class="sourceLineNo">20482</span> float ox;<a name="line.20482"></a>
<span class="sourceLineNo">20483</span> ox = (float) (Math.acos(ix));<a name="line.20483"></a>
<span class="sourceLineNo">20484</span> oaf32data[it.oIndex] = ox;<a name="line.20484"></a>
<span class="sourceLineNo">20485</span> }<a name="line.20485"></a>
<span class="sourceLineNo">20486</span> }<a name="line.20486"></a>
<span class="sourceLineNo">20487</span> } else if (as == 1) {<a name="line.20487"></a>
<span class="sourceLineNo">20488</span> if (it.isOutputDouble()) {<a name="line.20488"></a>
<span class="sourceLineNo">20489</span> while (it.hasNext()) {<a name="line.20489"></a>
<span class="sourceLineNo">20490</span> final double ix = it.aDouble;<a name="line.20490"></a>
<span class="sourceLineNo">20491</span> float ox;<a name="line.20491"></a>
<span class="sourceLineNo">20492</span> ox = (float) (Math.acos(ix));<a name="line.20492"></a>
<span class="sourceLineNo">20493</span> for (int j = 0; j &lt; is; j++) {<a name="line.20493"></a>
<span class="sourceLineNo">20494</span> oaf32data[it.oIndex + j] = ox;<a name="line.20494"></a>
<span class="sourceLineNo">20495</span> }<a name="line.20495"></a>
<span class="sourceLineNo">20496</span> }<a name="line.20496"></a>
<span class="sourceLineNo">20497</span> } else {<a name="line.20497"></a>
<span class="sourceLineNo">20498</span> while (it.hasNext()) {<a name="line.20498"></a>
<span class="sourceLineNo">20499</span> final long ix = it.aLong;<a name="line.20499"></a>
<span class="sourceLineNo">20500</span> float ox;<a name="line.20500"></a>
<span class="sourceLineNo">20501</span> ox = (float) (Math.acos(ix));<a name="line.20501"></a>
<span class="sourceLineNo">20502</span> for (int j = 0; j &lt; is; j++) {<a name="line.20502"></a>
<span class="sourceLineNo">20503</span> oaf32data[it.oIndex + j] = ox;<a name="line.20503"></a>
<span class="sourceLineNo">20504</span> }<a name="line.20504"></a>
<span class="sourceLineNo">20505</span> }<a name="line.20505"></a>
<span class="sourceLineNo">20506</span> }<a name="line.20506"></a>
<span class="sourceLineNo">20507</span> } else {<a name="line.20507"></a>
<span class="sourceLineNo">20508</span> if (it.isOutputDouble()) {<a name="line.20508"></a>
<span class="sourceLineNo">20509</span> while (it.hasNext()) {<a name="line.20509"></a>
<span class="sourceLineNo">20510</span> for (int j = 0; j &lt; is; j++) {<a name="line.20510"></a>
<span class="sourceLineNo">20511</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.20511"></a>
<span class="sourceLineNo">20512</span> float ox;<a name="line.20512"></a>
<span class="sourceLineNo">20513</span> ox = (float) (Math.acos(ix));<a name="line.20513"></a>
<span class="sourceLineNo">20514</span> oaf32data[it.oIndex + j] = ox;<a name="line.20514"></a>
<span class="sourceLineNo">20515</span> }<a name="line.20515"></a>
<span class="sourceLineNo">20516</span> }<a name="line.20516"></a>
<span class="sourceLineNo">20517</span> } else {<a name="line.20517"></a>
<span class="sourceLineNo">20518</span> while (it.hasNext()) {<a name="line.20518"></a>
<span class="sourceLineNo">20519</span> for (int j = 0; j &lt; is; j++) {<a name="line.20519"></a>
<span class="sourceLineNo">20520</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.20520"></a>
<span class="sourceLineNo">20521</span> float ox;<a name="line.20521"></a>
<span class="sourceLineNo">20522</span> ox = (float) (Math.acos(ix));<a name="line.20522"></a>
<span class="sourceLineNo">20523</span> oaf32data[it.oIndex + j] = ox;<a name="line.20523"></a>
<span class="sourceLineNo">20524</span> }<a name="line.20524"></a>
<span class="sourceLineNo">20525</span> }<a name="line.20525"></a>
<span class="sourceLineNo">20526</span> }<a name="line.20526"></a>
<span class="sourceLineNo">20527</span> }<a name="line.20527"></a>
<span class="sourceLineNo">20528</span> break;<a name="line.20528"></a>
<span class="sourceLineNo">20529</span> case Dataset.ARRAYFLOAT64:<a name="line.20529"></a>
<span class="sourceLineNo">20530</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.20530"></a>
<span class="sourceLineNo">20531</span> if (is == 1) {<a name="line.20531"></a>
<span class="sourceLineNo">20532</span> if (it.isOutputDouble()) {<a name="line.20532"></a>
<span class="sourceLineNo">20533</span> while (it.hasNext()) {<a name="line.20533"></a>
<span class="sourceLineNo">20534</span> final double ix = it.aDouble;<a name="line.20534"></a>
<span class="sourceLineNo">20535</span> double ox;<a name="line.20535"></a>
<span class="sourceLineNo">20536</span> ox = (Math.acos(ix));<a name="line.20536"></a>
<span class="sourceLineNo">20537</span> oaf64data[it.oIndex] = ox;<a name="line.20537"></a>
<span class="sourceLineNo">20538</span> }<a name="line.20538"></a>
<span class="sourceLineNo">20539</span> } else {<a name="line.20539"></a>
<span class="sourceLineNo">20540</span> while (it.hasNext()) {<a name="line.20540"></a>
<span class="sourceLineNo">20541</span> final long ix = it.aLong;<a name="line.20541"></a>
<span class="sourceLineNo">20542</span> double ox;<a name="line.20542"></a>
<span class="sourceLineNo">20543</span> ox = (Math.acos(ix));<a name="line.20543"></a>
<span class="sourceLineNo">20544</span> oaf64data[it.oIndex] = ox;<a name="line.20544"></a>
<span class="sourceLineNo">20545</span> }<a name="line.20545"></a>
<span class="sourceLineNo">20546</span> }<a name="line.20546"></a>
<span class="sourceLineNo">20547</span> } else if (as == 1) {<a name="line.20547"></a>
<span class="sourceLineNo">20548</span> if (it.isOutputDouble()) {<a name="line.20548"></a>
<span class="sourceLineNo">20549</span> while (it.hasNext()) {<a name="line.20549"></a>
<span class="sourceLineNo">20550</span> final double ix = it.aDouble;<a name="line.20550"></a>
<span class="sourceLineNo">20551</span> double ox;<a name="line.20551"></a>
<span class="sourceLineNo">20552</span> ox = (Math.acos(ix));<a name="line.20552"></a>
<span class="sourceLineNo">20553</span> for (int j = 0; j &lt; is; j++) {<a name="line.20553"></a>
<span class="sourceLineNo">20554</span> oaf64data[it.oIndex + j] = ox;<a name="line.20554"></a>
<span class="sourceLineNo">20555</span> }<a name="line.20555"></a>
<span class="sourceLineNo">20556</span> }<a name="line.20556"></a>
<span class="sourceLineNo">20557</span> } else {<a name="line.20557"></a>
<span class="sourceLineNo">20558</span> while (it.hasNext()) {<a name="line.20558"></a>
<span class="sourceLineNo">20559</span> final long ix = it.aLong;<a name="line.20559"></a>
<span class="sourceLineNo">20560</span> double ox;<a name="line.20560"></a>
<span class="sourceLineNo">20561</span> ox = (Math.acos(ix));<a name="line.20561"></a>
<span class="sourceLineNo">20562</span> for (int j = 0; j &lt; is; j++) {<a name="line.20562"></a>
<span class="sourceLineNo">20563</span> oaf64data[it.oIndex + j] = ox;<a name="line.20563"></a>
<span class="sourceLineNo">20564</span> }<a name="line.20564"></a>
<span class="sourceLineNo">20565</span> }<a name="line.20565"></a>
<span class="sourceLineNo">20566</span> }<a name="line.20566"></a>
<span class="sourceLineNo">20567</span> } else {<a name="line.20567"></a>
<span class="sourceLineNo">20568</span> if (it.isOutputDouble()) {<a name="line.20568"></a>
<span class="sourceLineNo">20569</span> while (it.hasNext()) {<a name="line.20569"></a>
<span class="sourceLineNo">20570</span> for (int j = 0; j &lt; is; j++) {<a name="line.20570"></a>
<span class="sourceLineNo">20571</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.20571"></a>
<span class="sourceLineNo">20572</span> double ox;<a name="line.20572"></a>
<span class="sourceLineNo">20573</span> ox = (Math.acos(ix));<a name="line.20573"></a>
<span class="sourceLineNo">20574</span> oaf64data[it.oIndex + j] = ox;<a name="line.20574"></a>
<span class="sourceLineNo">20575</span> }<a name="line.20575"></a>
<span class="sourceLineNo">20576</span> }<a name="line.20576"></a>
<span class="sourceLineNo">20577</span> } else {<a name="line.20577"></a>
<span class="sourceLineNo">20578</span> while (it.hasNext()) {<a name="line.20578"></a>
<span class="sourceLineNo">20579</span> for (int j = 0; j &lt; is; j++) {<a name="line.20579"></a>
<span class="sourceLineNo">20580</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.20580"></a>
<span class="sourceLineNo">20581</span> double ox;<a name="line.20581"></a>
<span class="sourceLineNo">20582</span> ox = (Math.acos(ix));<a name="line.20582"></a>
<span class="sourceLineNo">20583</span> oaf64data[it.oIndex + j] = ox;<a name="line.20583"></a>
<span class="sourceLineNo">20584</span> }<a name="line.20584"></a>
<span class="sourceLineNo">20585</span> }<a name="line.20585"></a>
<span class="sourceLineNo">20586</span> }<a name="line.20586"></a>
<span class="sourceLineNo">20587</span> }<a name="line.20587"></a>
<span class="sourceLineNo">20588</span> break;<a name="line.20588"></a>
<span class="sourceLineNo">20589</span> case Dataset.COMPLEX64:<a name="line.20589"></a>
<span class="sourceLineNo">20590</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.20590"></a>
<span class="sourceLineNo">20591</span> if (!da.isComplex()) {<a name="line.20591"></a>
<span class="sourceLineNo">20592</span> if (it.isOutputDouble()) {<a name="line.20592"></a>
<span class="sourceLineNo">20593</span> final double iy = 0;<a name="line.20593"></a>
<span class="sourceLineNo">20594</span> while (it.hasNext()) {<a name="line.20594"></a>
<span class="sourceLineNo">20595</span> final double ix = it.aDouble;<a name="line.20595"></a>
<span class="sourceLineNo">20596</span> Complex tz;<a name="line.20596"></a>
<span class="sourceLineNo">20597</span> float ox;<a name="line.20597"></a>
<span class="sourceLineNo">20598</span> float oy;<a name="line.20598"></a>
<span class="sourceLineNo">20599</span> tz = new Complex(ix, iy).acos();<a name="line.20599"></a>
<span class="sourceLineNo">20600</span> ox = (float) (tz.getReal());<a name="line.20600"></a>
<span class="sourceLineNo">20601</span> oy = (float) (tz.getImaginary());<a name="line.20601"></a>
<span class="sourceLineNo">20602</span> oc64data[it.oIndex] = ox;<a name="line.20602"></a>
<span class="sourceLineNo">20603</span> oc64data[it.oIndex + 1] = oy;<a name="line.20603"></a>
<span class="sourceLineNo">20604</span> }<a name="line.20604"></a>
<span class="sourceLineNo">20605</span> } else {<a name="line.20605"></a>
<span class="sourceLineNo">20606</span> final long iy = 0;<a name="line.20606"></a>
<span class="sourceLineNo">20607</span> while (it.hasNext()) {<a name="line.20607"></a>
<span class="sourceLineNo">20608</span> final long ix = it.aLong;<a name="line.20608"></a>
<span class="sourceLineNo">20609</span> Complex tz;<a name="line.20609"></a>
<span class="sourceLineNo">20610</span> float ox;<a name="line.20610"></a>
<span class="sourceLineNo">20611</span> float oy;<a name="line.20611"></a>
<span class="sourceLineNo">20612</span> tz = new Complex(ix, iy).acos();<a name="line.20612"></a>
<span class="sourceLineNo">20613</span> ox = (float) toLong(tz.getReal());<a name="line.20613"></a>
<span class="sourceLineNo">20614</span> oy = (float) toLong(tz.getImaginary());<a name="line.20614"></a>
<span class="sourceLineNo">20615</span> oc64data[it.oIndex] = ox;<a name="line.20615"></a>
<span class="sourceLineNo">20616</span> oc64data[it.oIndex + 1] = oy;<a name="line.20616"></a>
<span class="sourceLineNo">20617</span> }<a name="line.20617"></a>
<span class="sourceLineNo">20618</span> }<a name="line.20618"></a>
<span class="sourceLineNo">20619</span> } else {<a name="line.20619"></a>
<span class="sourceLineNo">20620</span> while (it.hasNext()) {<a name="line.20620"></a>
<span class="sourceLineNo">20621</span> final double ix = it.aDouble;<a name="line.20621"></a>
<span class="sourceLineNo">20622</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.20622"></a>
<span class="sourceLineNo">20623</span> Complex tz;<a name="line.20623"></a>
<span class="sourceLineNo">20624</span> float ox;<a name="line.20624"></a>
<span class="sourceLineNo">20625</span> float oy;<a name="line.20625"></a>
<span class="sourceLineNo">20626</span> tz = new Complex(ix, iy).acos();<a name="line.20626"></a>
<span class="sourceLineNo">20627</span> ox = (float) (tz.getReal());<a name="line.20627"></a>
<span class="sourceLineNo">20628</span> oy = (float) (tz.getImaginary());<a name="line.20628"></a>
<span class="sourceLineNo">20629</span> oc64data[it.oIndex] = ox;<a name="line.20629"></a>
<span class="sourceLineNo">20630</span> oc64data[it.oIndex + 1] = oy;<a name="line.20630"></a>
<span class="sourceLineNo">20631</span> }<a name="line.20631"></a>
<span class="sourceLineNo">20632</span> }<a name="line.20632"></a>
<span class="sourceLineNo">20633</span> break;<a name="line.20633"></a>
<span class="sourceLineNo">20634</span> case Dataset.COMPLEX128:<a name="line.20634"></a>
<span class="sourceLineNo">20635</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.20635"></a>
<span class="sourceLineNo">20636</span> if (!da.isComplex()) {<a name="line.20636"></a>
<span class="sourceLineNo">20637</span> if (it.isOutputDouble()) {<a name="line.20637"></a>
<span class="sourceLineNo">20638</span> final double iy = 0;<a name="line.20638"></a>
<span class="sourceLineNo">20639</span> while (it.hasNext()) {<a name="line.20639"></a>
<span class="sourceLineNo">20640</span> final double ix = it.aDouble;<a name="line.20640"></a>
<span class="sourceLineNo">20641</span> Complex tz;<a name="line.20641"></a>
<span class="sourceLineNo">20642</span> double ox;<a name="line.20642"></a>
<span class="sourceLineNo">20643</span> double oy;<a name="line.20643"></a>
<span class="sourceLineNo">20644</span> tz = new Complex(ix, iy).acos();<a name="line.20644"></a>
<span class="sourceLineNo">20645</span> ox = (tz.getReal());<a name="line.20645"></a>
<span class="sourceLineNo">20646</span> oy = (tz.getImaginary());<a name="line.20646"></a>
<span class="sourceLineNo">20647</span> oc128data[it.oIndex] = ox;<a name="line.20647"></a>
<span class="sourceLineNo">20648</span> oc128data[it.oIndex + 1] = oy;<a name="line.20648"></a>
<span class="sourceLineNo">20649</span> }<a name="line.20649"></a>
<span class="sourceLineNo">20650</span> } else {<a name="line.20650"></a>
<span class="sourceLineNo">20651</span> final long iy = 0;<a name="line.20651"></a>
<span class="sourceLineNo">20652</span> while (it.hasNext()) {<a name="line.20652"></a>
<span class="sourceLineNo">20653</span> final long ix = it.aLong;<a name="line.20653"></a>
<span class="sourceLineNo">20654</span> Complex tz;<a name="line.20654"></a>
<span class="sourceLineNo">20655</span> double ox;<a name="line.20655"></a>
<span class="sourceLineNo">20656</span> double oy;<a name="line.20656"></a>
<span class="sourceLineNo">20657</span> tz = new Complex(ix, iy).acos();<a name="line.20657"></a>
<span class="sourceLineNo">20658</span> ox = (tz.getReal());<a name="line.20658"></a>
<span class="sourceLineNo">20659</span> oy = (tz.getImaginary());<a name="line.20659"></a>
<span class="sourceLineNo">20660</span> oc128data[it.oIndex] = ox;<a name="line.20660"></a>
<span class="sourceLineNo">20661</span> oc128data[it.oIndex + 1] = oy;<a name="line.20661"></a>
<span class="sourceLineNo">20662</span> }<a name="line.20662"></a>
<span class="sourceLineNo">20663</span> }<a name="line.20663"></a>
<span class="sourceLineNo">20664</span> } else {<a name="line.20664"></a>
<span class="sourceLineNo">20665</span> while (it.hasNext()) {<a name="line.20665"></a>
<span class="sourceLineNo">20666</span> final double ix = it.aDouble;<a name="line.20666"></a>
<span class="sourceLineNo">20667</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.20667"></a>
<span class="sourceLineNo">20668</span> Complex tz;<a name="line.20668"></a>
<span class="sourceLineNo">20669</span> double ox;<a name="line.20669"></a>
<span class="sourceLineNo">20670</span> double oy;<a name="line.20670"></a>
<span class="sourceLineNo">20671</span> tz = new Complex(ix, iy).acos();<a name="line.20671"></a>
<span class="sourceLineNo">20672</span> ox = (tz.getReal());<a name="line.20672"></a>
<span class="sourceLineNo">20673</span> oy = (tz.getImaginary());<a name="line.20673"></a>
<span class="sourceLineNo">20674</span> oc128data[it.oIndex] = ox;<a name="line.20674"></a>
<span class="sourceLineNo">20675</span> oc128data[it.oIndex + 1] = oy;<a name="line.20675"></a>
<span class="sourceLineNo">20676</span> }<a name="line.20676"></a>
<span class="sourceLineNo">20677</span> }<a name="line.20677"></a>
<span class="sourceLineNo">20678</span> break;<a name="line.20678"></a>
<span class="sourceLineNo">20679</span> default:<a name="line.20679"></a>
<span class="sourceLineNo">20680</span> throw new IllegalArgumentException("arccos supports integer, compound integer, real, compound real, complex datasets only");<a name="line.20680"></a>
<span class="sourceLineNo">20681</span> }<a name="line.20681"></a>
<span class="sourceLineNo">20682</span><a name="line.20682"></a>
<span class="sourceLineNo">20683</span> addFunctionName(result, "arccos");<a name="line.20683"></a>
<span class="sourceLineNo">20684</span> return result;<a name="line.20684"></a>
<span class="sourceLineNo">20685</span> }<a name="line.20685"></a>
<span class="sourceLineNo">20686</span><a name="line.20686"></a>
<span class="sourceLineNo">20687</span> /**<a name="line.20687"></a>
<span class="sourceLineNo">20688</span> * arctan - evaluate the inverse tangent function on each element of the dataset<a name="line.20688"></a>
<span class="sourceLineNo">20689</span> * @param a<a name="line.20689"></a>
<span class="sourceLineNo">20690</span> * @return dataset<a name="line.20690"></a>
<span class="sourceLineNo">20691</span> */<a name="line.20691"></a>
<span class="sourceLineNo">20692</span> public static Dataset arctan(final Object a) {<a name="line.20692"></a>
<span class="sourceLineNo">20693</span> return arctan(a, null);<a name="line.20693"></a>
<span class="sourceLineNo">20694</span> }<a name="line.20694"></a>
<span class="sourceLineNo">20695</span><a name="line.20695"></a>
<span class="sourceLineNo">20696</span> /**<a name="line.20696"></a>
<span class="sourceLineNo">20697</span> * arctan - evaluate the inverse tangent function on each element of the dataset<a name="line.20697"></a>
<span class="sourceLineNo">20698</span> * @param a<a name="line.20698"></a>
<span class="sourceLineNo">20699</span> * @param o output can be null - in which case, a new dataset is created<a name="line.20699"></a>
<span class="sourceLineNo">20700</span> * @return dataset<a name="line.20700"></a>
<span class="sourceLineNo">20701</span> */<a name="line.20701"></a>
<span class="sourceLineNo">20702</span> public static Dataset arctan(final Object a, final Dataset o) {<a name="line.20702"></a>
<span class="sourceLineNo">20703</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.20703"></a>
<span class="sourceLineNo">20704</span> SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true);<a name="line.20704"></a>
<span class="sourceLineNo">20705</span> final Dataset result = it.getOutput();<a name="line.20705"></a>
<span class="sourceLineNo">20706</span> if (!result.isComplex()) {<a name="line.20706"></a>
<span class="sourceLineNo">20707</span> if (da.isComplex()) {<a name="line.20707"></a>
<span class="sourceLineNo">20708</span> da = da.getRealView();<a name="line.20708"></a>
<span class="sourceLineNo">20709</span> it = new SingleInputBroadcastIterator(da, result, true);<a name="line.20709"></a>
<span class="sourceLineNo">20710</span> }<a name="line.20710"></a>
<span class="sourceLineNo">20711</span> }<a name="line.20711"></a>
<span class="sourceLineNo">20712</span> final int is = result.getElementsPerItem();<a name="line.20712"></a>
<span class="sourceLineNo">20713</span> final int as = da.getElementsPerItem();<a name="line.20713"></a>
<span class="sourceLineNo">20714</span> final int dt = result.getDType();<a name="line.20714"></a>
<span class="sourceLineNo">20715</span><a name="line.20715"></a>
<span class="sourceLineNo">20716</span> switch(dt) {<a name="line.20716"></a>
<span class="sourceLineNo">20717</span> case Dataset.INT8:<a name="line.20717"></a>
<span class="sourceLineNo">20718</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.20718"></a>
<span class="sourceLineNo">20719</span> if (it.isOutputDouble()) {<a name="line.20719"></a>
<span class="sourceLineNo">20720</span> while (it.hasNext()) {<a name="line.20720"></a>
<span class="sourceLineNo">20721</span> final double ix = it.aDouble;<a name="line.20721"></a>
<span class="sourceLineNo">20722</span> byte ox;<a name="line.20722"></a>
<span class="sourceLineNo">20723</span> ox = (byte) toLong(Math.atan(ix));<a name="line.20723"></a>
<span class="sourceLineNo">20724</span> oi8data[it.oIndex] = ox;<a name="line.20724"></a>
<span class="sourceLineNo">20725</span> }<a name="line.20725"></a>
<span class="sourceLineNo">20726</span> } else {<a name="line.20726"></a>
<span class="sourceLineNo">20727</span> while (it.hasNext()) {<a name="line.20727"></a>
<span class="sourceLineNo">20728</span> final long ix = it.aLong;<a name="line.20728"></a>
<span class="sourceLineNo">20729</span> byte ox;<a name="line.20729"></a>
<span class="sourceLineNo">20730</span> ox = (byte) toLong(Math.atan(ix));<a name="line.20730"></a>
<span class="sourceLineNo">20731</span> oi8data[it.oIndex] = ox;<a name="line.20731"></a>
<span class="sourceLineNo">20732</span> }<a name="line.20732"></a>
<span class="sourceLineNo">20733</span> }<a name="line.20733"></a>
<span class="sourceLineNo">20734</span> break;<a name="line.20734"></a>
<span class="sourceLineNo">20735</span> case Dataset.INT16:<a name="line.20735"></a>
<span class="sourceLineNo">20736</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.20736"></a>
<span class="sourceLineNo">20737</span> if (it.isOutputDouble()) {<a name="line.20737"></a>
<span class="sourceLineNo">20738</span> while (it.hasNext()) {<a name="line.20738"></a>
<span class="sourceLineNo">20739</span> final double ix = it.aDouble;<a name="line.20739"></a>
<span class="sourceLineNo">20740</span> short ox;<a name="line.20740"></a>
<span class="sourceLineNo">20741</span> ox = (short) toLong(Math.atan(ix));<a name="line.20741"></a>
<span class="sourceLineNo">20742</span> oi16data[it.oIndex] = ox;<a name="line.20742"></a>
<span class="sourceLineNo">20743</span> }<a name="line.20743"></a>
<span class="sourceLineNo">20744</span> } else {<a name="line.20744"></a>
<span class="sourceLineNo">20745</span> while (it.hasNext()) {<a name="line.20745"></a>
<span class="sourceLineNo">20746</span> final long ix = it.aLong;<a name="line.20746"></a>
<span class="sourceLineNo">20747</span> short ox;<a name="line.20747"></a>
<span class="sourceLineNo">20748</span> ox = (short) toLong(Math.atan(ix));<a name="line.20748"></a>
<span class="sourceLineNo">20749</span> oi16data[it.oIndex] = ox;<a name="line.20749"></a>
<span class="sourceLineNo">20750</span> }<a name="line.20750"></a>
<span class="sourceLineNo">20751</span> }<a name="line.20751"></a>
<span class="sourceLineNo">20752</span> break;<a name="line.20752"></a>
<span class="sourceLineNo">20753</span> case Dataset.INT64:<a name="line.20753"></a>
<span class="sourceLineNo">20754</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.20754"></a>
<span class="sourceLineNo">20755</span> if (it.isOutputDouble()) {<a name="line.20755"></a>
<span class="sourceLineNo">20756</span> while (it.hasNext()) {<a name="line.20756"></a>
<span class="sourceLineNo">20757</span> final double ix = it.aDouble;<a name="line.20757"></a>
<span class="sourceLineNo">20758</span> long ox;<a name="line.20758"></a>
<span class="sourceLineNo">20759</span> ox = toLong(Math.atan(ix));<a name="line.20759"></a>
<span class="sourceLineNo">20760</span> oi64data[it.oIndex] = ox;<a name="line.20760"></a>
<span class="sourceLineNo">20761</span> }<a name="line.20761"></a>
<span class="sourceLineNo">20762</span> } else {<a name="line.20762"></a>
<span class="sourceLineNo">20763</span> while (it.hasNext()) {<a name="line.20763"></a>
<span class="sourceLineNo">20764</span> final long ix = it.aLong;<a name="line.20764"></a>
<span class="sourceLineNo">20765</span> long ox;<a name="line.20765"></a>
<span class="sourceLineNo">20766</span> ox = toLong(Math.atan(ix));<a name="line.20766"></a>
<span class="sourceLineNo">20767</span> oi64data[it.oIndex] = ox;<a name="line.20767"></a>
<span class="sourceLineNo">20768</span> }<a name="line.20768"></a>
<span class="sourceLineNo">20769</span> }<a name="line.20769"></a>
<span class="sourceLineNo">20770</span> break;<a name="line.20770"></a>
<span class="sourceLineNo">20771</span> case Dataset.INT32:<a name="line.20771"></a>
<span class="sourceLineNo">20772</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.20772"></a>
<span class="sourceLineNo">20773</span> if (it.isOutputDouble()) {<a name="line.20773"></a>
<span class="sourceLineNo">20774</span> while (it.hasNext()) {<a name="line.20774"></a>
<span class="sourceLineNo">20775</span> final double ix = it.aDouble;<a name="line.20775"></a>
<span class="sourceLineNo">20776</span> int ox;<a name="line.20776"></a>
<span class="sourceLineNo">20777</span> ox = (int) toLong(Math.atan(ix));<a name="line.20777"></a>
<span class="sourceLineNo">20778</span> oi32data[it.oIndex] = ox;<a name="line.20778"></a>
<span class="sourceLineNo">20779</span> }<a name="line.20779"></a>
<span class="sourceLineNo">20780</span> } else {<a name="line.20780"></a>
<span class="sourceLineNo">20781</span> while (it.hasNext()) {<a name="line.20781"></a>
<span class="sourceLineNo">20782</span> final long ix = it.aLong;<a name="line.20782"></a>
<span class="sourceLineNo">20783</span> int ox;<a name="line.20783"></a>
<span class="sourceLineNo">20784</span> ox = (int) toLong(Math.atan(ix));<a name="line.20784"></a>
<span class="sourceLineNo">20785</span> oi32data[it.oIndex] = ox;<a name="line.20785"></a>
<span class="sourceLineNo">20786</span> }<a name="line.20786"></a>
<span class="sourceLineNo">20787</span> }<a name="line.20787"></a>
<span class="sourceLineNo">20788</span> break;<a name="line.20788"></a>
<span class="sourceLineNo">20789</span> case Dataset.ARRAYINT8:<a name="line.20789"></a>
<span class="sourceLineNo">20790</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.20790"></a>
<span class="sourceLineNo">20791</span> if (is == 1) {<a name="line.20791"></a>
<span class="sourceLineNo">20792</span> if (it.isOutputDouble()) {<a name="line.20792"></a>
<span class="sourceLineNo">20793</span> while (it.hasNext()) {<a name="line.20793"></a>
<span class="sourceLineNo">20794</span> final double ix = it.aDouble;<a name="line.20794"></a>
<span class="sourceLineNo">20795</span> byte ox;<a name="line.20795"></a>
<span class="sourceLineNo">20796</span> ox = (byte) toLong(Math.atan(ix));<a name="line.20796"></a>
<span class="sourceLineNo">20797</span> oai8data[it.oIndex] = ox;<a name="line.20797"></a>
<span class="sourceLineNo">20798</span> }<a name="line.20798"></a>
<span class="sourceLineNo">20799</span> } else {<a name="line.20799"></a>
<span class="sourceLineNo">20800</span> while (it.hasNext()) {<a name="line.20800"></a>
<span class="sourceLineNo">20801</span> final long ix = it.aLong;<a name="line.20801"></a>
<span class="sourceLineNo">20802</span> byte ox;<a name="line.20802"></a>
<span class="sourceLineNo">20803</span> ox = (byte) toLong(Math.atan(ix));<a name="line.20803"></a>
<span class="sourceLineNo">20804</span> oai8data[it.oIndex] = ox;<a name="line.20804"></a>
<span class="sourceLineNo">20805</span> }<a name="line.20805"></a>
<span class="sourceLineNo">20806</span> }<a name="line.20806"></a>
<span class="sourceLineNo">20807</span> } else if (as == 1) {<a name="line.20807"></a>
<span class="sourceLineNo">20808</span> if (it.isOutputDouble()) {<a name="line.20808"></a>
<span class="sourceLineNo">20809</span> while (it.hasNext()) {<a name="line.20809"></a>
<span class="sourceLineNo">20810</span> final double ix = it.aDouble;<a name="line.20810"></a>
<span class="sourceLineNo">20811</span> byte ox;<a name="line.20811"></a>
<span class="sourceLineNo">20812</span> ox = (byte) toLong(Math.atan(ix));<a name="line.20812"></a>
<span class="sourceLineNo">20813</span> for (int j = 0; j &lt; is; j++) {<a name="line.20813"></a>
<span class="sourceLineNo">20814</span> oai8data[it.oIndex + j] = ox;<a name="line.20814"></a>
<span class="sourceLineNo">20815</span> }<a name="line.20815"></a>
<span class="sourceLineNo">20816</span> }<a name="line.20816"></a>
<span class="sourceLineNo">20817</span> } else {<a name="line.20817"></a>
<span class="sourceLineNo">20818</span> while (it.hasNext()) {<a name="line.20818"></a>
<span class="sourceLineNo">20819</span> final long ix = it.aLong;<a name="line.20819"></a>
<span class="sourceLineNo">20820</span> byte ox;<a name="line.20820"></a>
<span class="sourceLineNo">20821</span> ox = (byte) toLong(Math.atan(ix));<a name="line.20821"></a>
<span class="sourceLineNo">20822</span> for (int j = 0; j &lt; is; j++) {<a name="line.20822"></a>
<span class="sourceLineNo">20823</span> oai8data[it.oIndex + j] = ox;<a name="line.20823"></a>
<span class="sourceLineNo">20824</span> }<a name="line.20824"></a>
<span class="sourceLineNo">20825</span> }<a name="line.20825"></a>
<span class="sourceLineNo">20826</span> }<a name="line.20826"></a>
<span class="sourceLineNo">20827</span> } else {<a name="line.20827"></a>
<span class="sourceLineNo">20828</span> if (it.isOutputDouble()) {<a name="line.20828"></a>
<span class="sourceLineNo">20829</span> while (it.hasNext()) {<a name="line.20829"></a>
<span class="sourceLineNo">20830</span> for (int j = 0; j &lt; is; j++) {<a name="line.20830"></a>
<span class="sourceLineNo">20831</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.20831"></a>
<span class="sourceLineNo">20832</span> byte ox;<a name="line.20832"></a>
<span class="sourceLineNo">20833</span> ox = (byte) toLong(Math.atan(ix));<a name="line.20833"></a>
<span class="sourceLineNo">20834</span> oai8data[it.oIndex + j] = ox;<a name="line.20834"></a>
<span class="sourceLineNo">20835</span> }<a name="line.20835"></a>
<span class="sourceLineNo">20836</span> }<a name="line.20836"></a>
<span class="sourceLineNo">20837</span> } else {<a name="line.20837"></a>
<span class="sourceLineNo">20838</span> while (it.hasNext()) {<a name="line.20838"></a>
<span class="sourceLineNo">20839</span> for (int j = 0; j &lt; is; j++) {<a name="line.20839"></a>
<span class="sourceLineNo">20840</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.20840"></a>
<span class="sourceLineNo">20841</span> byte ox;<a name="line.20841"></a>
<span class="sourceLineNo">20842</span> ox = (byte) toLong(Math.atan(ix));<a name="line.20842"></a>
<span class="sourceLineNo">20843</span> oai8data[it.oIndex + j] = ox;<a name="line.20843"></a>
<span class="sourceLineNo">20844</span> }<a name="line.20844"></a>
<span class="sourceLineNo">20845</span> }<a name="line.20845"></a>
<span class="sourceLineNo">20846</span> }<a name="line.20846"></a>
<span class="sourceLineNo">20847</span> }<a name="line.20847"></a>
<span class="sourceLineNo">20848</span> break;<a name="line.20848"></a>
<span class="sourceLineNo">20849</span> case Dataset.ARRAYINT16:<a name="line.20849"></a>
<span class="sourceLineNo">20850</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.20850"></a>
<span class="sourceLineNo">20851</span> if (is == 1) {<a name="line.20851"></a>
<span class="sourceLineNo">20852</span> if (it.isOutputDouble()) {<a name="line.20852"></a>
<span class="sourceLineNo">20853</span> while (it.hasNext()) {<a name="line.20853"></a>
<span class="sourceLineNo">20854</span> final double ix = it.aDouble;<a name="line.20854"></a>
<span class="sourceLineNo">20855</span> short ox;<a name="line.20855"></a>
<span class="sourceLineNo">20856</span> ox = (short) toLong(Math.atan(ix));<a name="line.20856"></a>
<span class="sourceLineNo">20857</span> oai16data[it.oIndex] = ox;<a name="line.20857"></a>
<span class="sourceLineNo">20858</span> }<a name="line.20858"></a>
<span class="sourceLineNo">20859</span> } else {<a name="line.20859"></a>
<span class="sourceLineNo">20860</span> while (it.hasNext()) {<a name="line.20860"></a>
<span class="sourceLineNo">20861</span> final long ix = it.aLong;<a name="line.20861"></a>
<span class="sourceLineNo">20862</span> short ox;<a name="line.20862"></a>
<span class="sourceLineNo">20863</span> ox = (short) toLong(Math.atan(ix));<a name="line.20863"></a>
<span class="sourceLineNo">20864</span> oai16data[it.oIndex] = ox;<a name="line.20864"></a>
<span class="sourceLineNo">20865</span> }<a name="line.20865"></a>
<span class="sourceLineNo">20866</span> }<a name="line.20866"></a>
<span class="sourceLineNo">20867</span> } else if (as == 1) {<a name="line.20867"></a>
<span class="sourceLineNo">20868</span> if (it.isOutputDouble()) {<a name="line.20868"></a>
<span class="sourceLineNo">20869</span> while (it.hasNext()) {<a name="line.20869"></a>
<span class="sourceLineNo">20870</span> final double ix = it.aDouble;<a name="line.20870"></a>
<span class="sourceLineNo">20871</span> short ox;<a name="line.20871"></a>
<span class="sourceLineNo">20872</span> ox = (short) toLong(Math.atan(ix));<a name="line.20872"></a>
<span class="sourceLineNo">20873</span> for (int j = 0; j &lt; is; j++) {<a name="line.20873"></a>
<span class="sourceLineNo">20874</span> oai16data[it.oIndex + j] = ox;<a name="line.20874"></a>
<span class="sourceLineNo">20875</span> }<a name="line.20875"></a>
<span class="sourceLineNo">20876</span> }<a name="line.20876"></a>
<span class="sourceLineNo">20877</span> } else {<a name="line.20877"></a>
<span class="sourceLineNo">20878</span> while (it.hasNext()) {<a name="line.20878"></a>
<span class="sourceLineNo">20879</span> final long ix = it.aLong;<a name="line.20879"></a>
<span class="sourceLineNo">20880</span> short ox;<a name="line.20880"></a>
<span class="sourceLineNo">20881</span> ox = (short) toLong(Math.atan(ix));<a name="line.20881"></a>
<span class="sourceLineNo">20882</span> for (int j = 0; j &lt; is; j++) {<a name="line.20882"></a>
<span class="sourceLineNo">20883</span> oai16data[it.oIndex + j] = ox;<a name="line.20883"></a>
<span class="sourceLineNo">20884</span> }<a name="line.20884"></a>
<span class="sourceLineNo">20885</span> }<a name="line.20885"></a>
<span class="sourceLineNo">20886</span> }<a name="line.20886"></a>
<span class="sourceLineNo">20887</span> } else {<a name="line.20887"></a>
<span class="sourceLineNo">20888</span> if (it.isOutputDouble()) {<a name="line.20888"></a>
<span class="sourceLineNo">20889</span> while (it.hasNext()) {<a name="line.20889"></a>
<span class="sourceLineNo">20890</span> for (int j = 0; j &lt; is; j++) {<a name="line.20890"></a>
<span class="sourceLineNo">20891</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.20891"></a>
<span class="sourceLineNo">20892</span> short ox;<a name="line.20892"></a>
<span class="sourceLineNo">20893</span> ox = (short) toLong(Math.atan(ix));<a name="line.20893"></a>
<span class="sourceLineNo">20894</span> oai16data[it.oIndex + j] = ox;<a name="line.20894"></a>
<span class="sourceLineNo">20895</span> }<a name="line.20895"></a>
<span class="sourceLineNo">20896</span> }<a name="line.20896"></a>
<span class="sourceLineNo">20897</span> } else {<a name="line.20897"></a>
<span class="sourceLineNo">20898</span> while (it.hasNext()) {<a name="line.20898"></a>
<span class="sourceLineNo">20899</span> for (int j = 0; j &lt; is; j++) {<a name="line.20899"></a>
<span class="sourceLineNo">20900</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.20900"></a>
<span class="sourceLineNo">20901</span> short ox;<a name="line.20901"></a>
<span class="sourceLineNo">20902</span> ox = (short) toLong(Math.atan(ix));<a name="line.20902"></a>
<span class="sourceLineNo">20903</span> oai16data[it.oIndex + j] = ox;<a name="line.20903"></a>
<span class="sourceLineNo">20904</span> }<a name="line.20904"></a>
<span class="sourceLineNo">20905</span> }<a name="line.20905"></a>
<span class="sourceLineNo">20906</span> }<a name="line.20906"></a>
<span class="sourceLineNo">20907</span> }<a name="line.20907"></a>
<span class="sourceLineNo">20908</span> break;<a name="line.20908"></a>
<span class="sourceLineNo">20909</span> case Dataset.ARRAYINT64:<a name="line.20909"></a>
<span class="sourceLineNo">20910</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.20910"></a>
<span class="sourceLineNo">20911</span> if (is == 1) {<a name="line.20911"></a>
<span class="sourceLineNo">20912</span> if (it.isOutputDouble()) {<a name="line.20912"></a>
<span class="sourceLineNo">20913</span> while (it.hasNext()) {<a name="line.20913"></a>
<span class="sourceLineNo">20914</span> final double ix = it.aDouble;<a name="line.20914"></a>
<span class="sourceLineNo">20915</span> long ox;<a name="line.20915"></a>
<span class="sourceLineNo">20916</span> ox = toLong(Math.atan(ix));<a name="line.20916"></a>
<span class="sourceLineNo">20917</span> oai64data[it.oIndex] = ox;<a name="line.20917"></a>
<span class="sourceLineNo">20918</span> }<a name="line.20918"></a>
<span class="sourceLineNo">20919</span> } else {<a name="line.20919"></a>
<span class="sourceLineNo">20920</span> while (it.hasNext()) {<a name="line.20920"></a>
<span class="sourceLineNo">20921</span> final long ix = it.aLong;<a name="line.20921"></a>
<span class="sourceLineNo">20922</span> long ox;<a name="line.20922"></a>
<span class="sourceLineNo">20923</span> ox = toLong(Math.atan(ix));<a name="line.20923"></a>
<span class="sourceLineNo">20924</span> oai64data[it.oIndex] = ox;<a name="line.20924"></a>
<span class="sourceLineNo">20925</span> }<a name="line.20925"></a>
<span class="sourceLineNo">20926</span> }<a name="line.20926"></a>
<span class="sourceLineNo">20927</span> } else if (as == 1) {<a name="line.20927"></a>
<span class="sourceLineNo">20928</span> if (it.isOutputDouble()) {<a name="line.20928"></a>
<span class="sourceLineNo">20929</span> while (it.hasNext()) {<a name="line.20929"></a>
<span class="sourceLineNo">20930</span> final double ix = it.aDouble;<a name="line.20930"></a>
<span class="sourceLineNo">20931</span> long ox;<a name="line.20931"></a>
<span class="sourceLineNo">20932</span> ox = toLong(Math.atan(ix));<a name="line.20932"></a>
<span class="sourceLineNo">20933</span> for (int j = 0; j &lt; is; j++) {<a name="line.20933"></a>
<span class="sourceLineNo">20934</span> oai64data[it.oIndex + j] = ox;<a name="line.20934"></a>
<span class="sourceLineNo">20935</span> }<a name="line.20935"></a>
<span class="sourceLineNo">20936</span> }<a name="line.20936"></a>
<span class="sourceLineNo">20937</span> } else {<a name="line.20937"></a>
<span class="sourceLineNo">20938</span> while (it.hasNext()) {<a name="line.20938"></a>
<span class="sourceLineNo">20939</span> final long ix = it.aLong;<a name="line.20939"></a>
<span class="sourceLineNo">20940</span> long ox;<a name="line.20940"></a>
<span class="sourceLineNo">20941</span> ox = toLong(Math.atan(ix));<a name="line.20941"></a>
<span class="sourceLineNo">20942</span> for (int j = 0; j &lt; is; j++) {<a name="line.20942"></a>
<span class="sourceLineNo">20943</span> oai64data[it.oIndex + j] = ox;<a name="line.20943"></a>
<span class="sourceLineNo">20944</span> }<a name="line.20944"></a>
<span class="sourceLineNo">20945</span> }<a name="line.20945"></a>
<span class="sourceLineNo">20946</span> }<a name="line.20946"></a>
<span class="sourceLineNo">20947</span> } else {<a name="line.20947"></a>
<span class="sourceLineNo">20948</span> if (it.isOutputDouble()) {<a name="line.20948"></a>
<span class="sourceLineNo">20949</span> while (it.hasNext()) {<a name="line.20949"></a>
<span class="sourceLineNo">20950</span> for (int j = 0; j &lt; is; j++) {<a name="line.20950"></a>
<span class="sourceLineNo">20951</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.20951"></a>
<span class="sourceLineNo">20952</span> long ox;<a name="line.20952"></a>
<span class="sourceLineNo">20953</span> ox = toLong(Math.atan(ix));<a name="line.20953"></a>
<span class="sourceLineNo">20954</span> oai64data[it.oIndex + j] = ox;<a name="line.20954"></a>
<span class="sourceLineNo">20955</span> }<a name="line.20955"></a>
<span class="sourceLineNo">20956</span> }<a name="line.20956"></a>
<span class="sourceLineNo">20957</span> } else {<a name="line.20957"></a>
<span class="sourceLineNo">20958</span> while (it.hasNext()) {<a name="line.20958"></a>
<span class="sourceLineNo">20959</span> for (int j = 0; j &lt; is; j++) {<a name="line.20959"></a>
<span class="sourceLineNo">20960</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.20960"></a>
<span class="sourceLineNo">20961</span> long ox;<a name="line.20961"></a>
<span class="sourceLineNo">20962</span> ox = toLong(Math.atan(ix));<a name="line.20962"></a>
<span class="sourceLineNo">20963</span> oai64data[it.oIndex + j] = ox;<a name="line.20963"></a>
<span class="sourceLineNo">20964</span> }<a name="line.20964"></a>
<span class="sourceLineNo">20965</span> }<a name="line.20965"></a>
<span class="sourceLineNo">20966</span> }<a name="line.20966"></a>
<span class="sourceLineNo">20967</span> }<a name="line.20967"></a>
<span class="sourceLineNo">20968</span> break;<a name="line.20968"></a>
<span class="sourceLineNo">20969</span> case Dataset.ARRAYINT32:<a name="line.20969"></a>
<span class="sourceLineNo">20970</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.20970"></a>
<span class="sourceLineNo">20971</span> if (is == 1) {<a name="line.20971"></a>
<span class="sourceLineNo">20972</span> if (it.isOutputDouble()) {<a name="line.20972"></a>
<span class="sourceLineNo">20973</span> while (it.hasNext()) {<a name="line.20973"></a>
<span class="sourceLineNo">20974</span> final double ix = it.aDouble;<a name="line.20974"></a>
<span class="sourceLineNo">20975</span> int ox;<a name="line.20975"></a>
<span class="sourceLineNo">20976</span> ox = (int) toLong(Math.atan(ix));<a name="line.20976"></a>
<span class="sourceLineNo">20977</span> oai32data[it.oIndex] = ox;<a name="line.20977"></a>
<span class="sourceLineNo">20978</span> }<a name="line.20978"></a>
<span class="sourceLineNo">20979</span> } else {<a name="line.20979"></a>
<span class="sourceLineNo">20980</span> while (it.hasNext()) {<a name="line.20980"></a>
<span class="sourceLineNo">20981</span> final long ix = it.aLong;<a name="line.20981"></a>
<span class="sourceLineNo">20982</span> int ox;<a name="line.20982"></a>
<span class="sourceLineNo">20983</span> ox = (int) toLong(Math.atan(ix));<a name="line.20983"></a>
<span class="sourceLineNo">20984</span> oai32data[it.oIndex] = ox;<a name="line.20984"></a>
<span class="sourceLineNo">20985</span> }<a name="line.20985"></a>
<span class="sourceLineNo">20986</span> }<a name="line.20986"></a>
<span class="sourceLineNo">20987</span> } else if (as == 1) {<a name="line.20987"></a>
<span class="sourceLineNo">20988</span> if (it.isOutputDouble()) {<a name="line.20988"></a>
<span class="sourceLineNo">20989</span> while (it.hasNext()) {<a name="line.20989"></a>
<span class="sourceLineNo">20990</span> final double ix = it.aDouble;<a name="line.20990"></a>
<span class="sourceLineNo">20991</span> int ox;<a name="line.20991"></a>
<span class="sourceLineNo">20992</span> ox = (int) toLong(Math.atan(ix));<a name="line.20992"></a>
<span class="sourceLineNo">20993</span> for (int j = 0; j &lt; is; j++) {<a name="line.20993"></a>
<span class="sourceLineNo">20994</span> oai32data[it.oIndex + j] = ox;<a name="line.20994"></a>
<span class="sourceLineNo">20995</span> }<a name="line.20995"></a>
<span class="sourceLineNo">20996</span> }<a name="line.20996"></a>
<span class="sourceLineNo">20997</span> } else {<a name="line.20997"></a>
<span class="sourceLineNo">20998</span> while (it.hasNext()) {<a name="line.20998"></a>
<span class="sourceLineNo">20999</span> final long ix = it.aLong;<a name="line.20999"></a>
<span class="sourceLineNo">21000</span> int ox;<a name="line.21000"></a>
<span class="sourceLineNo">21001</span> ox = (int) toLong(Math.atan(ix));<a name="line.21001"></a>
<span class="sourceLineNo">21002</span> for (int j = 0; j &lt; is; j++) {<a name="line.21002"></a>
<span class="sourceLineNo">21003</span> oai32data[it.oIndex + j] = ox;<a name="line.21003"></a>
<span class="sourceLineNo">21004</span> }<a name="line.21004"></a>
<span class="sourceLineNo">21005</span> }<a name="line.21005"></a>
<span class="sourceLineNo">21006</span> }<a name="line.21006"></a>
<span class="sourceLineNo">21007</span> } else {<a name="line.21007"></a>
<span class="sourceLineNo">21008</span> if (it.isOutputDouble()) {<a name="line.21008"></a>
<span class="sourceLineNo">21009</span> while (it.hasNext()) {<a name="line.21009"></a>
<span class="sourceLineNo">21010</span> for (int j = 0; j &lt; is; j++) {<a name="line.21010"></a>
<span class="sourceLineNo">21011</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.21011"></a>
<span class="sourceLineNo">21012</span> int ox;<a name="line.21012"></a>
<span class="sourceLineNo">21013</span> ox = (int) toLong(Math.atan(ix));<a name="line.21013"></a>
<span class="sourceLineNo">21014</span> oai32data[it.oIndex + j] = ox;<a name="line.21014"></a>
<span class="sourceLineNo">21015</span> }<a name="line.21015"></a>
<span class="sourceLineNo">21016</span> }<a name="line.21016"></a>
<span class="sourceLineNo">21017</span> } else {<a name="line.21017"></a>
<span class="sourceLineNo">21018</span> while (it.hasNext()) {<a name="line.21018"></a>
<span class="sourceLineNo">21019</span> for (int j = 0; j &lt; is; j++) {<a name="line.21019"></a>
<span class="sourceLineNo">21020</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.21020"></a>
<span class="sourceLineNo">21021</span> int ox;<a name="line.21021"></a>
<span class="sourceLineNo">21022</span> ox = (int) toLong(Math.atan(ix));<a name="line.21022"></a>
<span class="sourceLineNo">21023</span> oai32data[it.oIndex + j] = ox;<a name="line.21023"></a>
<span class="sourceLineNo">21024</span> }<a name="line.21024"></a>
<span class="sourceLineNo">21025</span> }<a name="line.21025"></a>
<span class="sourceLineNo">21026</span> }<a name="line.21026"></a>
<span class="sourceLineNo">21027</span> }<a name="line.21027"></a>
<span class="sourceLineNo">21028</span> break;<a name="line.21028"></a>
<span class="sourceLineNo">21029</span> case Dataset.FLOAT32:<a name="line.21029"></a>
<span class="sourceLineNo">21030</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.21030"></a>
<span class="sourceLineNo">21031</span> if (it.isOutputDouble()) {<a name="line.21031"></a>
<span class="sourceLineNo">21032</span> while (it.hasNext()) {<a name="line.21032"></a>
<span class="sourceLineNo">21033</span> final double ix = it.aDouble;<a name="line.21033"></a>
<span class="sourceLineNo">21034</span> float ox;<a name="line.21034"></a>
<span class="sourceLineNo">21035</span> ox = (float) (Math.atan(ix));<a name="line.21035"></a>
<span class="sourceLineNo">21036</span> of32data[it.oIndex] = ox;<a name="line.21036"></a>
<span class="sourceLineNo">21037</span> }<a name="line.21037"></a>
<span class="sourceLineNo">21038</span> } else {<a name="line.21038"></a>
<span class="sourceLineNo">21039</span> while (it.hasNext()) {<a name="line.21039"></a>
<span class="sourceLineNo">21040</span> final long ix = it.aLong;<a name="line.21040"></a>
<span class="sourceLineNo">21041</span> float ox;<a name="line.21041"></a>
<span class="sourceLineNo">21042</span> ox = (float) (Math.atan(ix));<a name="line.21042"></a>
<span class="sourceLineNo">21043</span> of32data[it.oIndex] = ox;<a name="line.21043"></a>
<span class="sourceLineNo">21044</span> }<a name="line.21044"></a>
<span class="sourceLineNo">21045</span> }<a name="line.21045"></a>
<span class="sourceLineNo">21046</span> break;<a name="line.21046"></a>
<span class="sourceLineNo">21047</span> case Dataset.FLOAT64:<a name="line.21047"></a>
<span class="sourceLineNo">21048</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.21048"></a>
<span class="sourceLineNo">21049</span> if (it.isOutputDouble()) {<a name="line.21049"></a>
<span class="sourceLineNo">21050</span> while (it.hasNext()) {<a name="line.21050"></a>
<span class="sourceLineNo">21051</span> final double ix = it.aDouble;<a name="line.21051"></a>
<span class="sourceLineNo">21052</span> double ox;<a name="line.21052"></a>
<span class="sourceLineNo">21053</span> ox = (Math.atan(ix));<a name="line.21053"></a>
<span class="sourceLineNo">21054</span> of64data[it.oIndex] = ox;<a name="line.21054"></a>
<span class="sourceLineNo">21055</span> }<a name="line.21055"></a>
<span class="sourceLineNo">21056</span> } else {<a name="line.21056"></a>
<span class="sourceLineNo">21057</span> while (it.hasNext()) {<a name="line.21057"></a>
<span class="sourceLineNo">21058</span> final long ix = it.aLong;<a name="line.21058"></a>
<span class="sourceLineNo">21059</span> double ox;<a name="line.21059"></a>
<span class="sourceLineNo">21060</span> ox = (Math.atan(ix));<a name="line.21060"></a>
<span class="sourceLineNo">21061</span> of64data[it.oIndex] = ox;<a name="line.21061"></a>
<span class="sourceLineNo">21062</span> }<a name="line.21062"></a>
<span class="sourceLineNo">21063</span> }<a name="line.21063"></a>
<span class="sourceLineNo">21064</span> break;<a name="line.21064"></a>
<span class="sourceLineNo">21065</span> case Dataset.ARRAYFLOAT32:<a name="line.21065"></a>
<span class="sourceLineNo">21066</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.21066"></a>
<span class="sourceLineNo">21067</span> if (is == 1) {<a name="line.21067"></a>
<span class="sourceLineNo">21068</span> if (it.isOutputDouble()) {<a name="line.21068"></a>
<span class="sourceLineNo">21069</span> while (it.hasNext()) {<a name="line.21069"></a>
<span class="sourceLineNo">21070</span> final double ix = it.aDouble;<a name="line.21070"></a>
<span class="sourceLineNo">21071</span> float ox;<a name="line.21071"></a>
<span class="sourceLineNo">21072</span> ox = (float) (Math.atan(ix));<a name="line.21072"></a>
<span class="sourceLineNo">21073</span> oaf32data[it.oIndex] = ox;<a name="line.21073"></a>
<span class="sourceLineNo">21074</span> }<a name="line.21074"></a>
<span class="sourceLineNo">21075</span> } else {<a name="line.21075"></a>
<span class="sourceLineNo">21076</span> while (it.hasNext()) {<a name="line.21076"></a>
<span class="sourceLineNo">21077</span> final long ix = it.aLong;<a name="line.21077"></a>
<span class="sourceLineNo">21078</span> float ox;<a name="line.21078"></a>
<span class="sourceLineNo">21079</span> ox = (float) (Math.atan(ix));<a name="line.21079"></a>
<span class="sourceLineNo">21080</span> oaf32data[it.oIndex] = ox;<a name="line.21080"></a>
<span class="sourceLineNo">21081</span> }<a name="line.21081"></a>
<span class="sourceLineNo">21082</span> }<a name="line.21082"></a>
<span class="sourceLineNo">21083</span> } else if (as == 1) {<a name="line.21083"></a>
<span class="sourceLineNo">21084</span> if (it.isOutputDouble()) {<a name="line.21084"></a>
<span class="sourceLineNo">21085</span> while (it.hasNext()) {<a name="line.21085"></a>
<span class="sourceLineNo">21086</span> final double ix = it.aDouble;<a name="line.21086"></a>
<span class="sourceLineNo">21087</span> float ox;<a name="line.21087"></a>
<span class="sourceLineNo">21088</span> ox = (float) (Math.atan(ix));<a name="line.21088"></a>
<span class="sourceLineNo">21089</span> for (int j = 0; j &lt; is; j++) {<a name="line.21089"></a>
<span class="sourceLineNo">21090</span> oaf32data[it.oIndex + j] = ox;<a name="line.21090"></a>
<span class="sourceLineNo">21091</span> }<a name="line.21091"></a>
<span class="sourceLineNo">21092</span> }<a name="line.21092"></a>
<span class="sourceLineNo">21093</span> } else {<a name="line.21093"></a>
<span class="sourceLineNo">21094</span> while (it.hasNext()) {<a name="line.21094"></a>
<span class="sourceLineNo">21095</span> final long ix = it.aLong;<a name="line.21095"></a>
<span class="sourceLineNo">21096</span> float ox;<a name="line.21096"></a>
<span class="sourceLineNo">21097</span> ox = (float) (Math.atan(ix));<a name="line.21097"></a>
<span class="sourceLineNo">21098</span> for (int j = 0; j &lt; is; j++) {<a name="line.21098"></a>
<span class="sourceLineNo">21099</span> oaf32data[it.oIndex + j] = ox;<a name="line.21099"></a>
<span class="sourceLineNo">21100</span> }<a name="line.21100"></a>
<span class="sourceLineNo">21101</span> }<a name="line.21101"></a>
<span class="sourceLineNo">21102</span> }<a name="line.21102"></a>
<span class="sourceLineNo">21103</span> } else {<a name="line.21103"></a>
<span class="sourceLineNo">21104</span> if (it.isOutputDouble()) {<a name="line.21104"></a>
<span class="sourceLineNo">21105</span> while (it.hasNext()) {<a name="line.21105"></a>
<span class="sourceLineNo">21106</span> for (int j = 0; j &lt; is; j++) {<a name="line.21106"></a>
<span class="sourceLineNo">21107</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.21107"></a>
<span class="sourceLineNo">21108</span> float ox;<a name="line.21108"></a>
<span class="sourceLineNo">21109</span> ox = (float) (Math.atan(ix));<a name="line.21109"></a>
<span class="sourceLineNo">21110</span> oaf32data[it.oIndex + j] = ox;<a name="line.21110"></a>
<span class="sourceLineNo">21111</span> }<a name="line.21111"></a>
<span class="sourceLineNo">21112</span> }<a name="line.21112"></a>
<span class="sourceLineNo">21113</span> } else {<a name="line.21113"></a>
<span class="sourceLineNo">21114</span> while (it.hasNext()) {<a name="line.21114"></a>
<span class="sourceLineNo">21115</span> for (int j = 0; j &lt; is; j++) {<a name="line.21115"></a>
<span class="sourceLineNo">21116</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.21116"></a>
<span class="sourceLineNo">21117</span> float ox;<a name="line.21117"></a>
<span class="sourceLineNo">21118</span> ox = (float) (Math.atan(ix));<a name="line.21118"></a>
<span class="sourceLineNo">21119</span> oaf32data[it.oIndex + j] = ox;<a name="line.21119"></a>
<span class="sourceLineNo">21120</span> }<a name="line.21120"></a>
<span class="sourceLineNo">21121</span> }<a name="line.21121"></a>
<span class="sourceLineNo">21122</span> }<a name="line.21122"></a>
<span class="sourceLineNo">21123</span> }<a name="line.21123"></a>
<span class="sourceLineNo">21124</span> break;<a name="line.21124"></a>
<span class="sourceLineNo">21125</span> case Dataset.ARRAYFLOAT64:<a name="line.21125"></a>
<span class="sourceLineNo">21126</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.21126"></a>
<span class="sourceLineNo">21127</span> if (is == 1) {<a name="line.21127"></a>
<span class="sourceLineNo">21128</span> if (it.isOutputDouble()) {<a name="line.21128"></a>
<span class="sourceLineNo">21129</span> while (it.hasNext()) {<a name="line.21129"></a>
<span class="sourceLineNo">21130</span> final double ix = it.aDouble;<a name="line.21130"></a>
<span class="sourceLineNo">21131</span> double ox;<a name="line.21131"></a>
<span class="sourceLineNo">21132</span> ox = (Math.atan(ix));<a name="line.21132"></a>
<span class="sourceLineNo">21133</span> oaf64data[it.oIndex] = ox;<a name="line.21133"></a>
<span class="sourceLineNo">21134</span> }<a name="line.21134"></a>
<span class="sourceLineNo">21135</span> } else {<a name="line.21135"></a>
<span class="sourceLineNo">21136</span> while (it.hasNext()) {<a name="line.21136"></a>
<span class="sourceLineNo">21137</span> final long ix = it.aLong;<a name="line.21137"></a>
<span class="sourceLineNo">21138</span> double ox;<a name="line.21138"></a>
<span class="sourceLineNo">21139</span> ox = (Math.atan(ix));<a name="line.21139"></a>
<span class="sourceLineNo">21140</span> oaf64data[it.oIndex] = ox;<a name="line.21140"></a>
<span class="sourceLineNo">21141</span> }<a name="line.21141"></a>
<span class="sourceLineNo">21142</span> }<a name="line.21142"></a>
<span class="sourceLineNo">21143</span> } else if (as == 1) {<a name="line.21143"></a>
<span class="sourceLineNo">21144</span> if (it.isOutputDouble()) {<a name="line.21144"></a>
<span class="sourceLineNo">21145</span> while (it.hasNext()) {<a name="line.21145"></a>
<span class="sourceLineNo">21146</span> final double ix = it.aDouble;<a name="line.21146"></a>
<span class="sourceLineNo">21147</span> double ox;<a name="line.21147"></a>
<span class="sourceLineNo">21148</span> ox = (Math.atan(ix));<a name="line.21148"></a>
<span class="sourceLineNo">21149</span> for (int j = 0; j &lt; is; j++) {<a name="line.21149"></a>
<span class="sourceLineNo">21150</span> oaf64data[it.oIndex + j] = ox;<a name="line.21150"></a>
<span class="sourceLineNo">21151</span> }<a name="line.21151"></a>
<span class="sourceLineNo">21152</span> }<a name="line.21152"></a>
<span class="sourceLineNo">21153</span> } else {<a name="line.21153"></a>
<span class="sourceLineNo">21154</span> while (it.hasNext()) {<a name="line.21154"></a>
<span class="sourceLineNo">21155</span> final long ix = it.aLong;<a name="line.21155"></a>
<span class="sourceLineNo">21156</span> double ox;<a name="line.21156"></a>
<span class="sourceLineNo">21157</span> ox = (Math.atan(ix));<a name="line.21157"></a>
<span class="sourceLineNo">21158</span> for (int j = 0; j &lt; is; j++) {<a name="line.21158"></a>
<span class="sourceLineNo">21159</span> oaf64data[it.oIndex + j] = ox;<a name="line.21159"></a>
<span class="sourceLineNo">21160</span> }<a name="line.21160"></a>
<span class="sourceLineNo">21161</span> }<a name="line.21161"></a>
<span class="sourceLineNo">21162</span> }<a name="line.21162"></a>
<span class="sourceLineNo">21163</span> } else {<a name="line.21163"></a>
<span class="sourceLineNo">21164</span> if (it.isOutputDouble()) {<a name="line.21164"></a>
<span class="sourceLineNo">21165</span> while (it.hasNext()) {<a name="line.21165"></a>
<span class="sourceLineNo">21166</span> for (int j = 0; j &lt; is; j++) {<a name="line.21166"></a>
<span class="sourceLineNo">21167</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.21167"></a>
<span class="sourceLineNo">21168</span> double ox;<a name="line.21168"></a>
<span class="sourceLineNo">21169</span> ox = (Math.atan(ix));<a name="line.21169"></a>
<span class="sourceLineNo">21170</span> oaf64data[it.oIndex + j] = ox;<a name="line.21170"></a>
<span class="sourceLineNo">21171</span> }<a name="line.21171"></a>
<span class="sourceLineNo">21172</span> }<a name="line.21172"></a>
<span class="sourceLineNo">21173</span> } else {<a name="line.21173"></a>
<span class="sourceLineNo">21174</span> while (it.hasNext()) {<a name="line.21174"></a>
<span class="sourceLineNo">21175</span> for (int j = 0; j &lt; is; j++) {<a name="line.21175"></a>
<span class="sourceLineNo">21176</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.21176"></a>
<span class="sourceLineNo">21177</span> double ox;<a name="line.21177"></a>
<span class="sourceLineNo">21178</span> ox = (Math.atan(ix));<a name="line.21178"></a>
<span class="sourceLineNo">21179</span> oaf64data[it.oIndex + j] = ox;<a name="line.21179"></a>
<span class="sourceLineNo">21180</span> }<a name="line.21180"></a>
<span class="sourceLineNo">21181</span> }<a name="line.21181"></a>
<span class="sourceLineNo">21182</span> }<a name="line.21182"></a>
<span class="sourceLineNo">21183</span> }<a name="line.21183"></a>
<span class="sourceLineNo">21184</span> break;<a name="line.21184"></a>
<span class="sourceLineNo">21185</span> case Dataset.COMPLEX64:<a name="line.21185"></a>
<span class="sourceLineNo">21186</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.21186"></a>
<span class="sourceLineNo">21187</span> if (!da.isComplex()) {<a name="line.21187"></a>
<span class="sourceLineNo">21188</span> if (it.isOutputDouble()) {<a name="line.21188"></a>
<span class="sourceLineNo">21189</span> final double iy = 0;<a name="line.21189"></a>
<span class="sourceLineNo">21190</span> while (it.hasNext()) {<a name="line.21190"></a>
<span class="sourceLineNo">21191</span> final double ix = it.aDouble;<a name="line.21191"></a>
<span class="sourceLineNo">21192</span> Complex tz;<a name="line.21192"></a>
<span class="sourceLineNo">21193</span> float ox;<a name="line.21193"></a>
<span class="sourceLineNo">21194</span> float oy;<a name="line.21194"></a>
<span class="sourceLineNo">21195</span> tz = new Complex(ix, iy).atan();<a name="line.21195"></a>
<span class="sourceLineNo">21196</span> ox = (float) (tz.getReal());<a name="line.21196"></a>
<span class="sourceLineNo">21197</span> oy = (float) (tz.getImaginary());<a name="line.21197"></a>
<span class="sourceLineNo">21198</span> oc64data[it.oIndex] = ox;<a name="line.21198"></a>
<span class="sourceLineNo">21199</span> oc64data[it.oIndex + 1] = oy;<a name="line.21199"></a>
<span class="sourceLineNo">21200</span> }<a name="line.21200"></a>
<span class="sourceLineNo">21201</span> } else {<a name="line.21201"></a>
<span class="sourceLineNo">21202</span> final long iy = 0;<a name="line.21202"></a>
<span class="sourceLineNo">21203</span> while (it.hasNext()) {<a name="line.21203"></a>
<span class="sourceLineNo">21204</span> final long ix = it.aLong;<a name="line.21204"></a>
<span class="sourceLineNo">21205</span> Complex tz;<a name="line.21205"></a>
<span class="sourceLineNo">21206</span> float ox;<a name="line.21206"></a>
<span class="sourceLineNo">21207</span> float oy;<a name="line.21207"></a>
<span class="sourceLineNo">21208</span> tz = new Complex(ix, iy).atan();<a name="line.21208"></a>
<span class="sourceLineNo">21209</span> ox = (float) toLong(tz.getReal());<a name="line.21209"></a>
<span class="sourceLineNo">21210</span> oy = (float) toLong(tz.getImaginary());<a name="line.21210"></a>
<span class="sourceLineNo">21211</span> oc64data[it.oIndex] = ox;<a name="line.21211"></a>
<span class="sourceLineNo">21212</span> oc64data[it.oIndex + 1] = oy;<a name="line.21212"></a>
<span class="sourceLineNo">21213</span> }<a name="line.21213"></a>
<span class="sourceLineNo">21214</span> }<a name="line.21214"></a>
<span class="sourceLineNo">21215</span> } else {<a name="line.21215"></a>
<span class="sourceLineNo">21216</span> while (it.hasNext()) {<a name="line.21216"></a>
<span class="sourceLineNo">21217</span> final double ix = it.aDouble;<a name="line.21217"></a>
<span class="sourceLineNo">21218</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.21218"></a>
<span class="sourceLineNo">21219</span> Complex tz;<a name="line.21219"></a>
<span class="sourceLineNo">21220</span> float ox;<a name="line.21220"></a>
<span class="sourceLineNo">21221</span> float oy;<a name="line.21221"></a>
<span class="sourceLineNo">21222</span> tz = new Complex(ix, iy).atan();<a name="line.21222"></a>
<span class="sourceLineNo">21223</span> ox = (float) (tz.getReal());<a name="line.21223"></a>
<span class="sourceLineNo">21224</span> oy = (float) (tz.getImaginary());<a name="line.21224"></a>
<span class="sourceLineNo">21225</span> oc64data[it.oIndex] = ox;<a name="line.21225"></a>
<span class="sourceLineNo">21226</span> oc64data[it.oIndex + 1] = oy;<a name="line.21226"></a>
<span class="sourceLineNo">21227</span> }<a name="line.21227"></a>
<span class="sourceLineNo">21228</span> }<a name="line.21228"></a>
<span class="sourceLineNo">21229</span> break;<a name="line.21229"></a>
<span class="sourceLineNo">21230</span> case Dataset.COMPLEX128:<a name="line.21230"></a>
<span class="sourceLineNo">21231</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.21231"></a>
<span class="sourceLineNo">21232</span> if (!da.isComplex()) {<a name="line.21232"></a>
<span class="sourceLineNo">21233</span> if (it.isOutputDouble()) {<a name="line.21233"></a>
<span class="sourceLineNo">21234</span> final double iy = 0;<a name="line.21234"></a>
<span class="sourceLineNo">21235</span> while (it.hasNext()) {<a name="line.21235"></a>
<span class="sourceLineNo">21236</span> final double ix = it.aDouble;<a name="line.21236"></a>
<span class="sourceLineNo">21237</span> Complex tz;<a name="line.21237"></a>
<span class="sourceLineNo">21238</span> double ox;<a name="line.21238"></a>
<span class="sourceLineNo">21239</span> double oy;<a name="line.21239"></a>
<span class="sourceLineNo">21240</span> tz = new Complex(ix, iy).atan();<a name="line.21240"></a>
<span class="sourceLineNo">21241</span> ox = (tz.getReal());<a name="line.21241"></a>
<span class="sourceLineNo">21242</span> oy = (tz.getImaginary());<a name="line.21242"></a>
<span class="sourceLineNo">21243</span> oc128data[it.oIndex] = ox;<a name="line.21243"></a>
<span class="sourceLineNo">21244</span> oc128data[it.oIndex + 1] = oy;<a name="line.21244"></a>
<span class="sourceLineNo">21245</span> }<a name="line.21245"></a>
<span class="sourceLineNo">21246</span> } else {<a name="line.21246"></a>
<span class="sourceLineNo">21247</span> final long iy = 0;<a name="line.21247"></a>
<span class="sourceLineNo">21248</span> while (it.hasNext()) {<a name="line.21248"></a>
<span class="sourceLineNo">21249</span> final long ix = it.aLong;<a name="line.21249"></a>
<span class="sourceLineNo">21250</span> Complex tz;<a name="line.21250"></a>
<span class="sourceLineNo">21251</span> double ox;<a name="line.21251"></a>
<span class="sourceLineNo">21252</span> double oy;<a name="line.21252"></a>
<span class="sourceLineNo">21253</span> tz = new Complex(ix, iy).atan();<a name="line.21253"></a>
<span class="sourceLineNo">21254</span> ox = (tz.getReal());<a name="line.21254"></a>
<span class="sourceLineNo">21255</span> oy = (tz.getImaginary());<a name="line.21255"></a>
<span class="sourceLineNo">21256</span> oc128data[it.oIndex] = ox;<a name="line.21256"></a>
<span class="sourceLineNo">21257</span> oc128data[it.oIndex + 1] = oy;<a name="line.21257"></a>
<span class="sourceLineNo">21258</span> }<a name="line.21258"></a>
<span class="sourceLineNo">21259</span> }<a name="line.21259"></a>
<span class="sourceLineNo">21260</span> } else {<a name="line.21260"></a>
<span class="sourceLineNo">21261</span> while (it.hasNext()) {<a name="line.21261"></a>
<span class="sourceLineNo">21262</span> final double ix = it.aDouble;<a name="line.21262"></a>
<span class="sourceLineNo">21263</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.21263"></a>
<span class="sourceLineNo">21264</span> Complex tz;<a name="line.21264"></a>
<span class="sourceLineNo">21265</span> double ox;<a name="line.21265"></a>
<span class="sourceLineNo">21266</span> double oy;<a name="line.21266"></a>
<span class="sourceLineNo">21267</span> tz = new Complex(ix, iy).atan();<a name="line.21267"></a>
<span class="sourceLineNo">21268</span> ox = (tz.getReal());<a name="line.21268"></a>
<span class="sourceLineNo">21269</span> oy = (tz.getImaginary());<a name="line.21269"></a>
<span class="sourceLineNo">21270</span> oc128data[it.oIndex] = ox;<a name="line.21270"></a>
<span class="sourceLineNo">21271</span> oc128data[it.oIndex + 1] = oy;<a name="line.21271"></a>
<span class="sourceLineNo">21272</span> }<a name="line.21272"></a>
<span class="sourceLineNo">21273</span> }<a name="line.21273"></a>
<span class="sourceLineNo">21274</span> break;<a name="line.21274"></a>
<span class="sourceLineNo">21275</span> default:<a name="line.21275"></a>
<span class="sourceLineNo">21276</span> throw new IllegalArgumentException("arctan supports integer, compound integer, real, compound real, complex datasets only");<a name="line.21276"></a>
<span class="sourceLineNo">21277</span> }<a name="line.21277"></a>
<span class="sourceLineNo">21278</span><a name="line.21278"></a>
<span class="sourceLineNo">21279</span> addFunctionName(result, "arctan");<a name="line.21279"></a>
<span class="sourceLineNo">21280</span> return result;<a name="line.21280"></a>
<span class="sourceLineNo">21281</span> }<a name="line.21281"></a>
<span class="sourceLineNo">21282</span><a name="line.21282"></a>
<span class="sourceLineNo">21283</span> /**<a name="line.21283"></a>
<span class="sourceLineNo">21284</span> * sinh - evaluate the hyperbolic sine function on each element of the dataset<a name="line.21284"></a>
<span class="sourceLineNo">21285</span> * @param a<a name="line.21285"></a>
<span class="sourceLineNo">21286</span> * @return dataset<a name="line.21286"></a>
<span class="sourceLineNo">21287</span> */<a name="line.21287"></a>
<span class="sourceLineNo">21288</span> public static Dataset sinh(final Object a) {<a name="line.21288"></a>
<span class="sourceLineNo">21289</span> return sinh(a, null);<a name="line.21289"></a>
<span class="sourceLineNo">21290</span> }<a name="line.21290"></a>
<span class="sourceLineNo">21291</span><a name="line.21291"></a>
<span class="sourceLineNo">21292</span> /**<a name="line.21292"></a>
<span class="sourceLineNo">21293</span> * sinh - evaluate the hyperbolic sine function on each element of the dataset<a name="line.21293"></a>
<span class="sourceLineNo">21294</span> * @param a<a name="line.21294"></a>
<span class="sourceLineNo">21295</span> * @param o output can be null - in which case, a new dataset is created<a name="line.21295"></a>
<span class="sourceLineNo">21296</span> * @return dataset<a name="line.21296"></a>
<span class="sourceLineNo">21297</span> */<a name="line.21297"></a>
<span class="sourceLineNo">21298</span> public static Dataset sinh(final Object a, final Dataset o) {<a name="line.21298"></a>
<span class="sourceLineNo">21299</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.21299"></a>
<span class="sourceLineNo">21300</span> SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true);<a name="line.21300"></a>
<span class="sourceLineNo">21301</span> final Dataset result = it.getOutput();<a name="line.21301"></a>
<span class="sourceLineNo">21302</span> if (!result.isComplex()) {<a name="line.21302"></a>
<span class="sourceLineNo">21303</span> if (da.isComplex()) {<a name="line.21303"></a>
<span class="sourceLineNo">21304</span> da = da.getRealView();<a name="line.21304"></a>
<span class="sourceLineNo">21305</span> it = new SingleInputBroadcastIterator(da, result, true);<a name="line.21305"></a>
<span class="sourceLineNo">21306</span> }<a name="line.21306"></a>
<span class="sourceLineNo">21307</span> }<a name="line.21307"></a>
<span class="sourceLineNo">21308</span> final int is = result.getElementsPerItem();<a name="line.21308"></a>
<span class="sourceLineNo">21309</span> final int as = da.getElementsPerItem();<a name="line.21309"></a>
<span class="sourceLineNo">21310</span> final int dt = result.getDType();<a name="line.21310"></a>
<span class="sourceLineNo">21311</span><a name="line.21311"></a>
<span class="sourceLineNo">21312</span> switch(dt) {<a name="line.21312"></a>
<span class="sourceLineNo">21313</span> case Dataset.INT8:<a name="line.21313"></a>
<span class="sourceLineNo">21314</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.21314"></a>
<span class="sourceLineNo">21315</span> if (it.isOutputDouble()) {<a name="line.21315"></a>
<span class="sourceLineNo">21316</span> while (it.hasNext()) {<a name="line.21316"></a>
<span class="sourceLineNo">21317</span> final double ix = it.aDouble;<a name="line.21317"></a>
<span class="sourceLineNo">21318</span> byte ox;<a name="line.21318"></a>
<span class="sourceLineNo">21319</span> ox = (byte) toLong(Math.sinh(ix));<a name="line.21319"></a>
<span class="sourceLineNo">21320</span> oi8data[it.oIndex] = ox;<a name="line.21320"></a>
<span class="sourceLineNo">21321</span> }<a name="line.21321"></a>
<span class="sourceLineNo">21322</span> } else {<a name="line.21322"></a>
<span class="sourceLineNo">21323</span> while (it.hasNext()) {<a name="line.21323"></a>
<span class="sourceLineNo">21324</span> final long ix = it.aLong;<a name="line.21324"></a>
<span class="sourceLineNo">21325</span> byte ox;<a name="line.21325"></a>
<span class="sourceLineNo">21326</span> ox = (byte) toLong(Math.sinh(ix));<a name="line.21326"></a>
<span class="sourceLineNo">21327</span> oi8data[it.oIndex] = ox;<a name="line.21327"></a>
<span class="sourceLineNo">21328</span> }<a name="line.21328"></a>
<span class="sourceLineNo">21329</span> }<a name="line.21329"></a>
<span class="sourceLineNo">21330</span> break;<a name="line.21330"></a>
<span class="sourceLineNo">21331</span> case Dataset.INT16:<a name="line.21331"></a>
<span class="sourceLineNo">21332</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.21332"></a>
<span class="sourceLineNo">21333</span> if (it.isOutputDouble()) {<a name="line.21333"></a>
<span class="sourceLineNo">21334</span> while (it.hasNext()) {<a name="line.21334"></a>
<span class="sourceLineNo">21335</span> final double ix = it.aDouble;<a name="line.21335"></a>
<span class="sourceLineNo">21336</span> short ox;<a name="line.21336"></a>
<span class="sourceLineNo">21337</span> ox = (short) toLong(Math.sinh(ix));<a name="line.21337"></a>
<span class="sourceLineNo">21338</span> oi16data[it.oIndex] = ox;<a name="line.21338"></a>
<span class="sourceLineNo">21339</span> }<a name="line.21339"></a>
<span class="sourceLineNo">21340</span> } else {<a name="line.21340"></a>
<span class="sourceLineNo">21341</span> while (it.hasNext()) {<a name="line.21341"></a>
<span class="sourceLineNo">21342</span> final long ix = it.aLong;<a name="line.21342"></a>
<span class="sourceLineNo">21343</span> short ox;<a name="line.21343"></a>
<span class="sourceLineNo">21344</span> ox = (short) toLong(Math.sinh(ix));<a name="line.21344"></a>
<span class="sourceLineNo">21345</span> oi16data[it.oIndex] = ox;<a name="line.21345"></a>
<span class="sourceLineNo">21346</span> }<a name="line.21346"></a>
<span class="sourceLineNo">21347</span> }<a name="line.21347"></a>
<span class="sourceLineNo">21348</span> break;<a name="line.21348"></a>
<span class="sourceLineNo">21349</span> case Dataset.INT64:<a name="line.21349"></a>
<span class="sourceLineNo">21350</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.21350"></a>
<span class="sourceLineNo">21351</span> if (it.isOutputDouble()) {<a name="line.21351"></a>
<span class="sourceLineNo">21352</span> while (it.hasNext()) {<a name="line.21352"></a>
<span class="sourceLineNo">21353</span> final double ix = it.aDouble;<a name="line.21353"></a>
<span class="sourceLineNo">21354</span> long ox;<a name="line.21354"></a>
<span class="sourceLineNo">21355</span> ox = toLong(Math.sinh(ix));<a name="line.21355"></a>
<span class="sourceLineNo">21356</span> oi64data[it.oIndex] = ox;<a name="line.21356"></a>
<span class="sourceLineNo">21357</span> }<a name="line.21357"></a>
<span class="sourceLineNo">21358</span> } else {<a name="line.21358"></a>
<span class="sourceLineNo">21359</span> while (it.hasNext()) {<a name="line.21359"></a>
<span class="sourceLineNo">21360</span> final long ix = it.aLong;<a name="line.21360"></a>
<span class="sourceLineNo">21361</span> long ox;<a name="line.21361"></a>
<span class="sourceLineNo">21362</span> ox = toLong(Math.sinh(ix));<a name="line.21362"></a>
<span class="sourceLineNo">21363</span> oi64data[it.oIndex] = ox;<a name="line.21363"></a>
<span class="sourceLineNo">21364</span> }<a name="line.21364"></a>
<span class="sourceLineNo">21365</span> }<a name="line.21365"></a>
<span class="sourceLineNo">21366</span> break;<a name="line.21366"></a>
<span class="sourceLineNo">21367</span> case Dataset.INT32:<a name="line.21367"></a>
<span class="sourceLineNo">21368</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.21368"></a>
<span class="sourceLineNo">21369</span> if (it.isOutputDouble()) {<a name="line.21369"></a>
<span class="sourceLineNo">21370</span> while (it.hasNext()) {<a name="line.21370"></a>
<span class="sourceLineNo">21371</span> final double ix = it.aDouble;<a name="line.21371"></a>
<span class="sourceLineNo">21372</span> int ox;<a name="line.21372"></a>
<span class="sourceLineNo">21373</span> ox = (int) toLong(Math.sinh(ix));<a name="line.21373"></a>
<span class="sourceLineNo">21374</span> oi32data[it.oIndex] = ox;<a name="line.21374"></a>
<span class="sourceLineNo">21375</span> }<a name="line.21375"></a>
<span class="sourceLineNo">21376</span> } else {<a name="line.21376"></a>
<span class="sourceLineNo">21377</span> while (it.hasNext()) {<a name="line.21377"></a>
<span class="sourceLineNo">21378</span> final long ix = it.aLong;<a name="line.21378"></a>
<span class="sourceLineNo">21379</span> int ox;<a name="line.21379"></a>
<span class="sourceLineNo">21380</span> ox = (int) toLong(Math.sinh(ix));<a name="line.21380"></a>
<span class="sourceLineNo">21381</span> oi32data[it.oIndex] = ox;<a name="line.21381"></a>
<span class="sourceLineNo">21382</span> }<a name="line.21382"></a>
<span class="sourceLineNo">21383</span> }<a name="line.21383"></a>
<span class="sourceLineNo">21384</span> break;<a name="line.21384"></a>
<span class="sourceLineNo">21385</span> case Dataset.ARRAYINT8:<a name="line.21385"></a>
<span class="sourceLineNo">21386</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.21386"></a>
<span class="sourceLineNo">21387</span> if (is == 1) {<a name="line.21387"></a>
<span class="sourceLineNo">21388</span> if (it.isOutputDouble()) {<a name="line.21388"></a>
<span class="sourceLineNo">21389</span> while (it.hasNext()) {<a name="line.21389"></a>
<span class="sourceLineNo">21390</span> final double ix = it.aDouble;<a name="line.21390"></a>
<span class="sourceLineNo">21391</span> byte ox;<a name="line.21391"></a>
<span class="sourceLineNo">21392</span> ox = (byte) toLong(Math.sinh(ix));<a name="line.21392"></a>
<span class="sourceLineNo">21393</span> oai8data[it.oIndex] = ox;<a name="line.21393"></a>
<span class="sourceLineNo">21394</span> }<a name="line.21394"></a>
<span class="sourceLineNo">21395</span> } else {<a name="line.21395"></a>
<span class="sourceLineNo">21396</span> while (it.hasNext()) {<a name="line.21396"></a>
<span class="sourceLineNo">21397</span> final long ix = it.aLong;<a name="line.21397"></a>
<span class="sourceLineNo">21398</span> byte ox;<a name="line.21398"></a>
<span class="sourceLineNo">21399</span> ox = (byte) toLong(Math.sinh(ix));<a name="line.21399"></a>
<span class="sourceLineNo">21400</span> oai8data[it.oIndex] = ox;<a name="line.21400"></a>
<span class="sourceLineNo">21401</span> }<a name="line.21401"></a>
<span class="sourceLineNo">21402</span> }<a name="line.21402"></a>
<span class="sourceLineNo">21403</span> } else if (as == 1) {<a name="line.21403"></a>
<span class="sourceLineNo">21404</span> if (it.isOutputDouble()) {<a name="line.21404"></a>
<span class="sourceLineNo">21405</span> while (it.hasNext()) {<a name="line.21405"></a>
<span class="sourceLineNo">21406</span> final double ix = it.aDouble;<a name="line.21406"></a>
<span class="sourceLineNo">21407</span> byte ox;<a name="line.21407"></a>
<span class="sourceLineNo">21408</span> ox = (byte) toLong(Math.sinh(ix));<a name="line.21408"></a>
<span class="sourceLineNo">21409</span> for (int j = 0; j &lt; is; j++) {<a name="line.21409"></a>
<span class="sourceLineNo">21410</span> oai8data[it.oIndex + j] = ox;<a name="line.21410"></a>
<span class="sourceLineNo">21411</span> }<a name="line.21411"></a>
<span class="sourceLineNo">21412</span> }<a name="line.21412"></a>
<span class="sourceLineNo">21413</span> } else {<a name="line.21413"></a>
<span class="sourceLineNo">21414</span> while (it.hasNext()) {<a name="line.21414"></a>
<span class="sourceLineNo">21415</span> final long ix = it.aLong;<a name="line.21415"></a>
<span class="sourceLineNo">21416</span> byte ox;<a name="line.21416"></a>
<span class="sourceLineNo">21417</span> ox = (byte) toLong(Math.sinh(ix));<a name="line.21417"></a>
<span class="sourceLineNo">21418</span> for (int j = 0; j &lt; is; j++) {<a name="line.21418"></a>
<span class="sourceLineNo">21419</span> oai8data[it.oIndex + j] = ox;<a name="line.21419"></a>
<span class="sourceLineNo">21420</span> }<a name="line.21420"></a>
<span class="sourceLineNo">21421</span> }<a name="line.21421"></a>
<span class="sourceLineNo">21422</span> }<a name="line.21422"></a>
<span class="sourceLineNo">21423</span> } else {<a name="line.21423"></a>
<span class="sourceLineNo">21424</span> if (it.isOutputDouble()) {<a name="line.21424"></a>
<span class="sourceLineNo">21425</span> while (it.hasNext()) {<a name="line.21425"></a>
<span class="sourceLineNo">21426</span> for (int j = 0; j &lt; is; j++) {<a name="line.21426"></a>
<span class="sourceLineNo">21427</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.21427"></a>
<span class="sourceLineNo">21428</span> byte ox;<a name="line.21428"></a>
<span class="sourceLineNo">21429</span> ox = (byte) toLong(Math.sinh(ix));<a name="line.21429"></a>
<span class="sourceLineNo">21430</span> oai8data[it.oIndex + j] = ox;<a name="line.21430"></a>
<span class="sourceLineNo">21431</span> }<a name="line.21431"></a>
<span class="sourceLineNo">21432</span> }<a name="line.21432"></a>
<span class="sourceLineNo">21433</span> } else {<a name="line.21433"></a>
<span class="sourceLineNo">21434</span> while (it.hasNext()) {<a name="line.21434"></a>
<span class="sourceLineNo">21435</span> for (int j = 0; j &lt; is; j++) {<a name="line.21435"></a>
<span class="sourceLineNo">21436</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.21436"></a>
<span class="sourceLineNo">21437</span> byte ox;<a name="line.21437"></a>
<span class="sourceLineNo">21438</span> ox = (byte) toLong(Math.sinh(ix));<a name="line.21438"></a>
<span class="sourceLineNo">21439</span> oai8data[it.oIndex + j] = ox;<a name="line.21439"></a>
<span class="sourceLineNo">21440</span> }<a name="line.21440"></a>
<span class="sourceLineNo">21441</span> }<a name="line.21441"></a>
<span class="sourceLineNo">21442</span> }<a name="line.21442"></a>
<span class="sourceLineNo">21443</span> }<a name="line.21443"></a>
<span class="sourceLineNo">21444</span> break;<a name="line.21444"></a>
<span class="sourceLineNo">21445</span> case Dataset.ARRAYINT16:<a name="line.21445"></a>
<span class="sourceLineNo">21446</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.21446"></a>
<span class="sourceLineNo">21447</span> if (is == 1) {<a name="line.21447"></a>
<span class="sourceLineNo">21448</span> if (it.isOutputDouble()) {<a name="line.21448"></a>
<span class="sourceLineNo">21449</span> while (it.hasNext()) {<a name="line.21449"></a>
<span class="sourceLineNo">21450</span> final double ix = it.aDouble;<a name="line.21450"></a>
<span class="sourceLineNo">21451</span> short ox;<a name="line.21451"></a>
<span class="sourceLineNo">21452</span> ox = (short) toLong(Math.sinh(ix));<a name="line.21452"></a>
<span class="sourceLineNo">21453</span> oai16data[it.oIndex] = ox;<a name="line.21453"></a>
<span class="sourceLineNo">21454</span> }<a name="line.21454"></a>
<span class="sourceLineNo">21455</span> } else {<a name="line.21455"></a>
<span class="sourceLineNo">21456</span> while (it.hasNext()) {<a name="line.21456"></a>
<span class="sourceLineNo">21457</span> final long ix = it.aLong;<a name="line.21457"></a>
<span class="sourceLineNo">21458</span> short ox;<a name="line.21458"></a>
<span class="sourceLineNo">21459</span> ox = (short) toLong(Math.sinh(ix));<a name="line.21459"></a>
<span class="sourceLineNo">21460</span> oai16data[it.oIndex] = ox;<a name="line.21460"></a>
<span class="sourceLineNo">21461</span> }<a name="line.21461"></a>
<span class="sourceLineNo">21462</span> }<a name="line.21462"></a>
<span class="sourceLineNo">21463</span> } else if (as == 1) {<a name="line.21463"></a>
<span class="sourceLineNo">21464</span> if (it.isOutputDouble()) {<a name="line.21464"></a>
<span class="sourceLineNo">21465</span> while (it.hasNext()) {<a name="line.21465"></a>
<span class="sourceLineNo">21466</span> final double ix = it.aDouble;<a name="line.21466"></a>
<span class="sourceLineNo">21467</span> short ox;<a name="line.21467"></a>
<span class="sourceLineNo">21468</span> ox = (short) toLong(Math.sinh(ix));<a name="line.21468"></a>
<span class="sourceLineNo">21469</span> for (int j = 0; j &lt; is; j++) {<a name="line.21469"></a>
<span class="sourceLineNo">21470</span> oai16data[it.oIndex + j] = ox;<a name="line.21470"></a>
<span class="sourceLineNo">21471</span> }<a name="line.21471"></a>
<span class="sourceLineNo">21472</span> }<a name="line.21472"></a>
<span class="sourceLineNo">21473</span> } else {<a name="line.21473"></a>
<span class="sourceLineNo">21474</span> while (it.hasNext()) {<a name="line.21474"></a>
<span class="sourceLineNo">21475</span> final long ix = it.aLong;<a name="line.21475"></a>
<span class="sourceLineNo">21476</span> short ox;<a name="line.21476"></a>
<span class="sourceLineNo">21477</span> ox = (short) toLong(Math.sinh(ix));<a name="line.21477"></a>
<span class="sourceLineNo">21478</span> for (int j = 0; j &lt; is; j++) {<a name="line.21478"></a>
<span class="sourceLineNo">21479</span> oai16data[it.oIndex + j] = ox;<a name="line.21479"></a>
<span class="sourceLineNo">21480</span> }<a name="line.21480"></a>
<span class="sourceLineNo">21481</span> }<a name="line.21481"></a>
<span class="sourceLineNo">21482</span> }<a name="line.21482"></a>
<span class="sourceLineNo">21483</span> } else {<a name="line.21483"></a>
<span class="sourceLineNo">21484</span> if (it.isOutputDouble()) {<a name="line.21484"></a>
<span class="sourceLineNo">21485</span> while (it.hasNext()) {<a name="line.21485"></a>
<span class="sourceLineNo">21486</span> for (int j = 0; j &lt; is; j++) {<a name="line.21486"></a>
<span class="sourceLineNo">21487</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.21487"></a>
<span class="sourceLineNo">21488</span> short ox;<a name="line.21488"></a>
<span class="sourceLineNo">21489</span> ox = (short) toLong(Math.sinh(ix));<a name="line.21489"></a>
<span class="sourceLineNo">21490</span> oai16data[it.oIndex + j] = ox;<a name="line.21490"></a>
<span class="sourceLineNo">21491</span> }<a name="line.21491"></a>
<span class="sourceLineNo">21492</span> }<a name="line.21492"></a>
<span class="sourceLineNo">21493</span> } else {<a name="line.21493"></a>
<span class="sourceLineNo">21494</span> while (it.hasNext()) {<a name="line.21494"></a>
<span class="sourceLineNo">21495</span> for (int j = 0; j &lt; is; j++) {<a name="line.21495"></a>
<span class="sourceLineNo">21496</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.21496"></a>
<span class="sourceLineNo">21497</span> short ox;<a name="line.21497"></a>
<span class="sourceLineNo">21498</span> ox = (short) toLong(Math.sinh(ix));<a name="line.21498"></a>
<span class="sourceLineNo">21499</span> oai16data[it.oIndex + j] = ox;<a name="line.21499"></a>
<span class="sourceLineNo">21500</span> }<a name="line.21500"></a>
<span class="sourceLineNo">21501</span> }<a name="line.21501"></a>
<span class="sourceLineNo">21502</span> }<a name="line.21502"></a>
<span class="sourceLineNo">21503</span> }<a name="line.21503"></a>
<span class="sourceLineNo">21504</span> break;<a name="line.21504"></a>
<span class="sourceLineNo">21505</span> case Dataset.ARRAYINT64:<a name="line.21505"></a>
<span class="sourceLineNo">21506</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.21506"></a>
<span class="sourceLineNo">21507</span> if (is == 1) {<a name="line.21507"></a>
<span class="sourceLineNo">21508</span> if (it.isOutputDouble()) {<a name="line.21508"></a>
<span class="sourceLineNo">21509</span> while (it.hasNext()) {<a name="line.21509"></a>
<span class="sourceLineNo">21510</span> final double ix = it.aDouble;<a name="line.21510"></a>
<span class="sourceLineNo">21511</span> long ox;<a name="line.21511"></a>
<span class="sourceLineNo">21512</span> ox = toLong(Math.sinh(ix));<a name="line.21512"></a>
<span class="sourceLineNo">21513</span> oai64data[it.oIndex] = ox;<a name="line.21513"></a>
<span class="sourceLineNo">21514</span> }<a name="line.21514"></a>
<span class="sourceLineNo">21515</span> } else {<a name="line.21515"></a>
<span class="sourceLineNo">21516</span> while (it.hasNext()) {<a name="line.21516"></a>
<span class="sourceLineNo">21517</span> final long ix = it.aLong;<a name="line.21517"></a>
<span class="sourceLineNo">21518</span> long ox;<a name="line.21518"></a>
<span class="sourceLineNo">21519</span> ox = toLong(Math.sinh(ix));<a name="line.21519"></a>
<span class="sourceLineNo">21520</span> oai64data[it.oIndex] = ox;<a name="line.21520"></a>
<span class="sourceLineNo">21521</span> }<a name="line.21521"></a>
<span class="sourceLineNo">21522</span> }<a name="line.21522"></a>
<span class="sourceLineNo">21523</span> } else if (as == 1) {<a name="line.21523"></a>
<span class="sourceLineNo">21524</span> if (it.isOutputDouble()) {<a name="line.21524"></a>
<span class="sourceLineNo">21525</span> while (it.hasNext()) {<a name="line.21525"></a>
<span class="sourceLineNo">21526</span> final double ix = it.aDouble;<a name="line.21526"></a>
<span class="sourceLineNo">21527</span> long ox;<a name="line.21527"></a>
<span class="sourceLineNo">21528</span> ox = toLong(Math.sinh(ix));<a name="line.21528"></a>
<span class="sourceLineNo">21529</span> for (int j = 0; j &lt; is; j++) {<a name="line.21529"></a>
<span class="sourceLineNo">21530</span> oai64data[it.oIndex + j] = ox;<a name="line.21530"></a>
<span class="sourceLineNo">21531</span> }<a name="line.21531"></a>
<span class="sourceLineNo">21532</span> }<a name="line.21532"></a>
<span class="sourceLineNo">21533</span> } else {<a name="line.21533"></a>
<span class="sourceLineNo">21534</span> while (it.hasNext()) {<a name="line.21534"></a>
<span class="sourceLineNo">21535</span> final long ix = it.aLong;<a name="line.21535"></a>
<span class="sourceLineNo">21536</span> long ox;<a name="line.21536"></a>
<span class="sourceLineNo">21537</span> ox = toLong(Math.sinh(ix));<a name="line.21537"></a>
<span class="sourceLineNo">21538</span> for (int j = 0; j &lt; is; j++) {<a name="line.21538"></a>
<span class="sourceLineNo">21539</span> oai64data[it.oIndex + j] = ox;<a name="line.21539"></a>
<span class="sourceLineNo">21540</span> }<a name="line.21540"></a>
<span class="sourceLineNo">21541</span> }<a name="line.21541"></a>
<span class="sourceLineNo">21542</span> }<a name="line.21542"></a>
<span class="sourceLineNo">21543</span> } else {<a name="line.21543"></a>
<span class="sourceLineNo">21544</span> if (it.isOutputDouble()) {<a name="line.21544"></a>
<span class="sourceLineNo">21545</span> while (it.hasNext()) {<a name="line.21545"></a>
<span class="sourceLineNo">21546</span> for (int j = 0; j &lt; is; j++) {<a name="line.21546"></a>
<span class="sourceLineNo">21547</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.21547"></a>
<span class="sourceLineNo">21548</span> long ox;<a name="line.21548"></a>
<span class="sourceLineNo">21549</span> ox = toLong(Math.sinh(ix));<a name="line.21549"></a>
<span class="sourceLineNo">21550</span> oai64data[it.oIndex + j] = ox;<a name="line.21550"></a>
<span class="sourceLineNo">21551</span> }<a name="line.21551"></a>
<span class="sourceLineNo">21552</span> }<a name="line.21552"></a>
<span class="sourceLineNo">21553</span> } else {<a name="line.21553"></a>
<span class="sourceLineNo">21554</span> while (it.hasNext()) {<a name="line.21554"></a>
<span class="sourceLineNo">21555</span> for (int j = 0; j &lt; is; j++) {<a name="line.21555"></a>
<span class="sourceLineNo">21556</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.21556"></a>
<span class="sourceLineNo">21557</span> long ox;<a name="line.21557"></a>
<span class="sourceLineNo">21558</span> ox = toLong(Math.sinh(ix));<a name="line.21558"></a>
<span class="sourceLineNo">21559</span> oai64data[it.oIndex + j] = ox;<a name="line.21559"></a>
<span class="sourceLineNo">21560</span> }<a name="line.21560"></a>
<span class="sourceLineNo">21561</span> }<a name="line.21561"></a>
<span class="sourceLineNo">21562</span> }<a name="line.21562"></a>
<span class="sourceLineNo">21563</span> }<a name="line.21563"></a>
<span class="sourceLineNo">21564</span> break;<a name="line.21564"></a>
<span class="sourceLineNo">21565</span> case Dataset.ARRAYINT32:<a name="line.21565"></a>
<span class="sourceLineNo">21566</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.21566"></a>
<span class="sourceLineNo">21567</span> if (is == 1) {<a name="line.21567"></a>
<span class="sourceLineNo">21568</span> if (it.isOutputDouble()) {<a name="line.21568"></a>
<span class="sourceLineNo">21569</span> while (it.hasNext()) {<a name="line.21569"></a>
<span class="sourceLineNo">21570</span> final double ix = it.aDouble;<a name="line.21570"></a>
<span class="sourceLineNo">21571</span> int ox;<a name="line.21571"></a>
<span class="sourceLineNo">21572</span> ox = (int) toLong(Math.sinh(ix));<a name="line.21572"></a>
<span class="sourceLineNo">21573</span> oai32data[it.oIndex] = ox;<a name="line.21573"></a>
<span class="sourceLineNo">21574</span> }<a name="line.21574"></a>
<span class="sourceLineNo">21575</span> } else {<a name="line.21575"></a>
<span class="sourceLineNo">21576</span> while (it.hasNext()) {<a name="line.21576"></a>
<span class="sourceLineNo">21577</span> final long ix = it.aLong;<a name="line.21577"></a>
<span class="sourceLineNo">21578</span> int ox;<a name="line.21578"></a>
<span class="sourceLineNo">21579</span> ox = (int) toLong(Math.sinh(ix));<a name="line.21579"></a>
<span class="sourceLineNo">21580</span> oai32data[it.oIndex] = ox;<a name="line.21580"></a>
<span class="sourceLineNo">21581</span> }<a name="line.21581"></a>
<span class="sourceLineNo">21582</span> }<a name="line.21582"></a>
<span class="sourceLineNo">21583</span> } else if (as == 1) {<a name="line.21583"></a>
<span class="sourceLineNo">21584</span> if (it.isOutputDouble()) {<a name="line.21584"></a>
<span class="sourceLineNo">21585</span> while (it.hasNext()) {<a name="line.21585"></a>
<span class="sourceLineNo">21586</span> final double ix = it.aDouble;<a name="line.21586"></a>
<span class="sourceLineNo">21587</span> int ox;<a name="line.21587"></a>
<span class="sourceLineNo">21588</span> ox = (int) toLong(Math.sinh(ix));<a name="line.21588"></a>
<span class="sourceLineNo">21589</span> for (int j = 0; j &lt; is; j++) {<a name="line.21589"></a>
<span class="sourceLineNo">21590</span> oai32data[it.oIndex + j] = ox;<a name="line.21590"></a>
<span class="sourceLineNo">21591</span> }<a name="line.21591"></a>
<span class="sourceLineNo">21592</span> }<a name="line.21592"></a>
<span class="sourceLineNo">21593</span> } else {<a name="line.21593"></a>
<span class="sourceLineNo">21594</span> while (it.hasNext()) {<a name="line.21594"></a>
<span class="sourceLineNo">21595</span> final long ix = it.aLong;<a name="line.21595"></a>
<span class="sourceLineNo">21596</span> int ox;<a name="line.21596"></a>
<span class="sourceLineNo">21597</span> ox = (int) toLong(Math.sinh(ix));<a name="line.21597"></a>
<span class="sourceLineNo">21598</span> for (int j = 0; j &lt; is; j++) {<a name="line.21598"></a>
<span class="sourceLineNo">21599</span> oai32data[it.oIndex + j] = ox;<a name="line.21599"></a>
<span class="sourceLineNo">21600</span> }<a name="line.21600"></a>
<span class="sourceLineNo">21601</span> }<a name="line.21601"></a>
<span class="sourceLineNo">21602</span> }<a name="line.21602"></a>
<span class="sourceLineNo">21603</span> } else {<a name="line.21603"></a>
<span class="sourceLineNo">21604</span> if (it.isOutputDouble()) {<a name="line.21604"></a>
<span class="sourceLineNo">21605</span> while (it.hasNext()) {<a name="line.21605"></a>
<span class="sourceLineNo">21606</span> for (int j = 0; j &lt; is; j++) {<a name="line.21606"></a>
<span class="sourceLineNo">21607</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.21607"></a>
<span class="sourceLineNo">21608</span> int ox;<a name="line.21608"></a>
<span class="sourceLineNo">21609</span> ox = (int) toLong(Math.sinh(ix));<a name="line.21609"></a>
<span class="sourceLineNo">21610</span> oai32data[it.oIndex + j] = ox;<a name="line.21610"></a>
<span class="sourceLineNo">21611</span> }<a name="line.21611"></a>
<span class="sourceLineNo">21612</span> }<a name="line.21612"></a>
<span class="sourceLineNo">21613</span> } else {<a name="line.21613"></a>
<span class="sourceLineNo">21614</span> while (it.hasNext()) {<a name="line.21614"></a>
<span class="sourceLineNo">21615</span> for (int j = 0; j &lt; is; j++) {<a name="line.21615"></a>
<span class="sourceLineNo">21616</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.21616"></a>
<span class="sourceLineNo">21617</span> int ox;<a name="line.21617"></a>
<span class="sourceLineNo">21618</span> ox = (int) toLong(Math.sinh(ix));<a name="line.21618"></a>
<span class="sourceLineNo">21619</span> oai32data[it.oIndex + j] = ox;<a name="line.21619"></a>
<span class="sourceLineNo">21620</span> }<a name="line.21620"></a>
<span class="sourceLineNo">21621</span> }<a name="line.21621"></a>
<span class="sourceLineNo">21622</span> }<a name="line.21622"></a>
<span class="sourceLineNo">21623</span> }<a name="line.21623"></a>
<span class="sourceLineNo">21624</span> break;<a name="line.21624"></a>
<span class="sourceLineNo">21625</span> case Dataset.FLOAT32:<a name="line.21625"></a>
<span class="sourceLineNo">21626</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.21626"></a>
<span class="sourceLineNo">21627</span> if (it.isOutputDouble()) {<a name="line.21627"></a>
<span class="sourceLineNo">21628</span> while (it.hasNext()) {<a name="line.21628"></a>
<span class="sourceLineNo">21629</span> final double ix = it.aDouble;<a name="line.21629"></a>
<span class="sourceLineNo">21630</span> float ox;<a name="line.21630"></a>
<span class="sourceLineNo">21631</span> ox = (float) (Math.sinh(ix));<a name="line.21631"></a>
<span class="sourceLineNo">21632</span> of32data[it.oIndex] = ox;<a name="line.21632"></a>
<span class="sourceLineNo">21633</span> }<a name="line.21633"></a>
<span class="sourceLineNo">21634</span> } else {<a name="line.21634"></a>
<span class="sourceLineNo">21635</span> while (it.hasNext()) {<a name="line.21635"></a>
<span class="sourceLineNo">21636</span> final long ix = it.aLong;<a name="line.21636"></a>
<span class="sourceLineNo">21637</span> float ox;<a name="line.21637"></a>
<span class="sourceLineNo">21638</span> ox = (float) (Math.sinh(ix));<a name="line.21638"></a>
<span class="sourceLineNo">21639</span> of32data[it.oIndex] = ox;<a name="line.21639"></a>
<span class="sourceLineNo">21640</span> }<a name="line.21640"></a>
<span class="sourceLineNo">21641</span> }<a name="line.21641"></a>
<span class="sourceLineNo">21642</span> break;<a name="line.21642"></a>
<span class="sourceLineNo">21643</span> case Dataset.FLOAT64:<a name="line.21643"></a>
<span class="sourceLineNo">21644</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.21644"></a>
<span class="sourceLineNo">21645</span> if (it.isOutputDouble()) {<a name="line.21645"></a>
<span class="sourceLineNo">21646</span> while (it.hasNext()) {<a name="line.21646"></a>
<span class="sourceLineNo">21647</span> final double ix = it.aDouble;<a name="line.21647"></a>
<span class="sourceLineNo">21648</span> double ox;<a name="line.21648"></a>
<span class="sourceLineNo">21649</span> ox = (Math.sinh(ix));<a name="line.21649"></a>
<span class="sourceLineNo">21650</span> of64data[it.oIndex] = ox;<a name="line.21650"></a>
<span class="sourceLineNo">21651</span> }<a name="line.21651"></a>
<span class="sourceLineNo">21652</span> } else {<a name="line.21652"></a>
<span class="sourceLineNo">21653</span> while (it.hasNext()) {<a name="line.21653"></a>
<span class="sourceLineNo">21654</span> final long ix = it.aLong;<a name="line.21654"></a>
<span class="sourceLineNo">21655</span> double ox;<a name="line.21655"></a>
<span class="sourceLineNo">21656</span> ox = (Math.sinh(ix));<a name="line.21656"></a>
<span class="sourceLineNo">21657</span> of64data[it.oIndex] = ox;<a name="line.21657"></a>
<span class="sourceLineNo">21658</span> }<a name="line.21658"></a>
<span class="sourceLineNo">21659</span> }<a name="line.21659"></a>
<span class="sourceLineNo">21660</span> break;<a name="line.21660"></a>
<span class="sourceLineNo">21661</span> case Dataset.ARRAYFLOAT32:<a name="line.21661"></a>
<span class="sourceLineNo">21662</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.21662"></a>
<span class="sourceLineNo">21663</span> if (is == 1) {<a name="line.21663"></a>
<span class="sourceLineNo">21664</span> if (it.isOutputDouble()) {<a name="line.21664"></a>
<span class="sourceLineNo">21665</span> while (it.hasNext()) {<a name="line.21665"></a>
<span class="sourceLineNo">21666</span> final double ix = it.aDouble;<a name="line.21666"></a>
<span class="sourceLineNo">21667</span> float ox;<a name="line.21667"></a>
<span class="sourceLineNo">21668</span> ox = (float) (Math.sinh(ix));<a name="line.21668"></a>
<span class="sourceLineNo">21669</span> oaf32data[it.oIndex] = ox;<a name="line.21669"></a>
<span class="sourceLineNo">21670</span> }<a name="line.21670"></a>
<span class="sourceLineNo">21671</span> } else {<a name="line.21671"></a>
<span class="sourceLineNo">21672</span> while (it.hasNext()) {<a name="line.21672"></a>
<span class="sourceLineNo">21673</span> final long ix = it.aLong;<a name="line.21673"></a>
<span class="sourceLineNo">21674</span> float ox;<a name="line.21674"></a>
<span class="sourceLineNo">21675</span> ox = (float) (Math.sinh(ix));<a name="line.21675"></a>
<span class="sourceLineNo">21676</span> oaf32data[it.oIndex] = ox;<a name="line.21676"></a>
<span class="sourceLineNo">21677</span> }<a name="line.21677"></a>
<span class="sourceLineNo">21678</span> }<a name="line.21678"></a>
<span class="sourceLineNo">21679</span> } else if (as == 1) {<a name="line.21679"></a>
<span class="sourceLineNo">21680</span> if (it.isOutputDouble()) {<a name="line.21680"></a>
<span class="sourceLineNo">21681</span> while (it.hasNext()) {<a name="line.21681"></a>
<span class="sourceLineNo">21682</span> final double ix = it.aDouble;<a name="line.21682"></a>
<span class="sourceLineNo">21683</span> float ox;<a name="line.21683"></a>
<span class="sourceLineNo">21684</span> ox = (float) (Math.sinh(ix));<a name="line.21684"></a>
<span class="sourceLineNo">21685</span> for (int j = 0; j &lt; is; j++) {<a name="line.21685"></a>
<span class="sourceLineNo">21686</span> oaf32data[it.oIndex + j] = ox;<a name="line.21686"></a>
<span class="sourceLineNo">21687</span> }<a name="line.21687"></a>
<span class="sourceLineNo">21688</span> }<a name="line.21688"></a>
<span class="sourceLineNo">21689</span> } else {<a name="line.21689"></a>
<span class="sourceLineNo">21690</span> while (it.hasNext()) {<a name="line.21690"></a>
<span class="sourceLineNo">21691</span> final long ix = it.aLong;<a name="line.21691"></a>
<span class="sourceLineNo">21692</span> float ox;<a name="line.21692"></a>
<span class="sourceLineNo">21693</span> ox = (float) (Math.sinh(ix));<a name="line.21693"></a>
<span class="sourceLineNo">21694</span> for (int j = 0; j &lt; is; j++) {<a name="line.21694"></a>
<span class="sourceLineNo">21695</span> oaf32data[it.oIndex + j] = ox;<a name="line.21695"></a>
<span class="sourceLineNo">21696</span> }<a name="line.21696"></a>
<span class="sourceLineNo">21697</span> }<a name="line.21697"></a>
<span class="sourceLineNo">21698</span> }<a name="line.21698"></a>
<span class="sourceLineNo">21699</span> } else {<a name="line.21699"></a>
<span class="sourceLineNo">21700</span> if (it.isOutputDouble()) {<a name="line.21700"></a>
<span class="sourceLineNo">21701</span> while (it.hasNext()) {<a name="line.21701"></a>
<span class="sourceLineNo">21702</span> for (int j = 0; j &lt; is; j++) {<a name="line.21702"></a>
<span class="sourceLineNo">21703</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.21703"></a>
<span class="sourceLineNo">21704</span> float ox;<a name="line.21704"></a>
<span class="sourceLineNo">21705</span> ox = (float) (Math.sinh(ix));<a name="line.21705"></a>
<span class="sourceLineNo">21706</span> oaf32data[it.oIndex + j] = ox;<a name="line.21706"></a>
<span class="sourceLineNo">21707</span> }<a name="line.21707"></a>
<span class="sourceLineNo">21708</span> }<a name="line.21708"></a>
<span class="sourceLineNo">21709</span> } else {<a name="line.21709"></a>
<span class="sourceLineNo">21710</span> while (it.hasNext()) {<a name="line.21710"></a>
<span class="sourceLineNo">21711</span> for (int j = 0; j &lt; is; j++) {<a name="line.21711"></a>
<span class="sourceLineNo">21712</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.21712"></a>
<span class="sourceLineNo">21713</span> float ox;<a name="line.21713"></a>
<span class="sourceLineNo">21714</span> ox = (float) (Math.sinh(ix));<a name="line.21714"></a>
<span class="sourceLineNo">21715</span> oaf32data[it.oIndex + j] = ox;<a name="line.21715"></a>
<span class="sourceLineNo">21716</span> }<a name="line.21716"></a>
<span class="sourceLineNo">21717</span> }<a name="line.21717"></a>
<span class="sourceLineNo">21718</span> }<a name="line.21718"></a>
<span class="sourceLineNo">21719</span> }<a name="line.21719"></a>
<span class="sourceLineNo">21720</span> break;<a name="line.21720"></a>
<span class="sourceLineNo">21721</span> case Dataset.ARRAYFLOAT64:<a name="line.21721"></a>
<span class="sourceLineNo">21722</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.21722"></a>
<span class="sourceLineNo">21723</span> if (is == 1) {<a name="line.21723"></a>
<span class="sourceLineNo">21724</span> if (it.isOutputDouble()) {<a name="line.21724"></a>
<span class="sourceLineNo">21725</span> while (it.hasNext()) {<a name="line.21725"></a>
<span class="sourceLineNo">21726</span> final double ix = it.aDouble;<a name="line.21726"></a>
<span class="sourceLineNo">21727</span> double ox;<a name="line.21727"></a>
<span class="sourceLineNo">21728</span> ox = (Math.sinh(ix));<a name="line.21728"></a>
<span class="sourceLineNo">21729</span> oaf64data[it.oIndex] = ox;<a name="line.21729"></a>
<span class="sourceLineNo">21730</span> }<a name="line.21730"></a>
<span class="sourceLineNo">21731</span> } else {<a name="line.21731"></a>
<span class="sourceLineNo">21732</span> while (it.hasNext()) {<a name="line.21732"></a>
<span class="sourceLineNo">21733</span> final long ix = it.aLong;<a name="line.21733"></a>
<span class="sourceLineNo">21734</span> double ox;<a name="line.21734"></a>
<span class="sourceLineNo">21735</span> ox = (Math.sinh(ix));<a name="line.21735"></a>
<span class="sourceLineNo">21736</span> oaf64data[it.oIndex] = ox;<a name="line.21736"></a>
<span class="sourceLineNo">21737</span> }<a name="line.21737"></a>
<span class="sourceLineNo">21738</span> }<a name="line.21738"></a>
<span class="sourceLineNo">21739</span> } else if (as == 1) {<a name="line.21739"></a>
<span class="sourceLineNo">21740</span> if (it.isOutputDouble()) {<a name="line.21740"></a>
<span class="sourceLineNo">21741</span> while (it.hasNext()) {<a name="line.21741"></a>
<span class="sourceLineNo">21742</span> final double ix = it.aDouble;<a name="line.21742"></a>
<span class="sourceLineNo">21743</span> double ox;<a name="line.21743"></a>
<span class="sourceLineNo">21744</span> ox = (Math.sinh(ix));<a name="line.21744"></a>
<span class="sourceLineNo">21745</span> for (int j = 0; j &lt; is; j++) {<a name="line.21745"></a>
<span class="sourceLineNo">21746</span> oaf64data[it.oIndex + j] = ox;<a name="line.21746"></a>
<span class="sourceLineNo">21747</span> }<a name="line.21747"></a>
<span class="sourceLineNo">21748</span> }<a name="line.21748"></a>
<span class="sourceLineNo">21749</span> } else {<a name="line.21749"></a>
<span class="sourceLineNo">21750</span> while (it.hasNext()) {<a name="line.21750"></a>
<span class="sourceLineNo">21751</span> final long ix = it.aLong;<a name="line.21751"></a>
<span class="sourceLineNo">21752</span> double ox;<a name="line.21752"></a>
<span class="sourceLineNo">21753</span> ox = (Math.sinh(ix));<a name="line.21753"></a>
<span class="sourceLineNo">21754</span> for (int j = 0; j &lt; is; j++) {<a name="line.21754"></a>
<span class="sourceLineNo">21755</span> oaf64data[it.oIndex + j] = ox;<a name="line.21755"></a>
<span class="sourceLineNo">21756</span> }<a name="line.21756"></a>
<span class="sourceLineNo">21757</span> }<a name="line.21757"></a>
<span class="sourceLineNo">21758</span> }<a name="line.21758"></a>
<span class="sourceLineNo">21759</span> } else {<a name="line.21759"></a>
<span class="sourceLineNo">21760</span> if (it.isOutputDouble()) {<a name="line.21760"></a>
<span class="sourceLineNo">21761</span> while (it.hasNext()) {<a name="line.21761"></a>
<span class="sourceLineNo">21762</span> for (int j = 0; j &lt; is; j++) {<a name="line.21762"></a>
<span class="sourceLineNo">21763</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.21763"></a>
<span class="sourceLineNo">21764</span> double ox;<a name="line.21764"></a>
<span class="sourceLineNo">21765</span> ox = (Math.sinh(ix));<a name="line.21765"></a>
<span class="sourceLineNo">21766</span> oaf64data[it.oIndex + j] = ox;<a name="line.21766"></a>
<span class="sourceLineNo">21767</span> }<a name="line.21767"></a>
<span class="sourceLineNo">21768</span> }<a name="line.21768"></a>
<span class="sourceLineNo">21769</span> } else {<a name="line.21769"></a>
<span class="sourceLineNo">21770</span> while (it.hasNext()) {<a name="line.21770"></a>
<span class="sourceLineNo">21771</span> for (int j = 0; j &lt; is; j++) {<a name="line.21771"></a>
<span class="sourceLineNo">21772</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.21772"></a>
<span class="sourceLineNo">21773</span> double ox;<a name="line.21773"></a>
<span class="sourceLineNo">21774</span> ox = (Math.sinh(ix));<a name="line.21774"></a>
<span class="sourceLineNo">21775</span> oaf64data[it.oIndex + j] = ox;<a name="line.21775"></a>
<span class="sourceLineNo">21776</span> }<a name="line.21776"></a>
<span class="sourceLineNo">21777</span> }<a name="line.21777"></a>
<span class="sourceLineNo">21778</span> }<a name="line.21778"></a>
<span class="sourceLineNo">21779</span> }<a name="line.21779"></a>
<span class="sourceLineNo">21780</span> break;<a name="line.21780"></a>
<span class="sourceLineNo">21781</span> case Dataset.COMPLEX64:<a name="line.21781"></a>
<span class="sourceLineNo">21782</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.21782"></a>
<span class="sourceLineNo">21783</span> if (!da.isComplex()) {<a name="line.21783"></a>
<span class="sourceLineNo">21784</span> if (it.isOutputDouble()) {<a name="line.21784"></a>
<span class="sourceLineNo">21785</span> final double iy = 0;<a name="line.21785"></a>
<span class="sourceLineNo">21786</span> while (it.hasNext()) {<a name="line.21786"></a>
<span class="sourceLineNo">21787</span> final double ix = it.aDouble;<a name="line.21787"></a>
<span class="sourceLineNo">21788</span> float ox;<a name="line.21788"></a>
<span class="sourceLineNo">21789</span> float oy;<a name="line.21789"></a>
<span class="sourceLineNo">21790</span> ox = (float) (Math.sinh(ix)*Math.cos(iy));<a name="line.21790"></a>
<span class="sourceLineNo">21791</span> oy = (float) (Math.cosh(ix)*Math.sin(iy));<a name="line.21791"></a>
<span class="sourceLineNo">21792</span> oc64data[it.oIndex] = ox;<a name="line.21792"></a>
<span class="sourceLineNo">21793</span> oc64data[it.oIndex + 1] = oy;<a name="line.21793"></a>
<span class="sourceLineNo">21794</span> }<a name="line.21794"></a>
<span class="sourceLineNo">21795</span> } else {<a name="line.21795"></a>
<span class="sourceLineNo">21796</span> final long iy = 0;<a name="line.21796"></a>
<span class="sourceLineNo">21797</span> while (it.hasNext()) {<a name="line.21797"></a>
<span class="sourceLineNo">21798</span> final long ix = it.aLong;<a name="line.21798"></a>
<span class="sourceLineNo">21799</span> float ox;<a name="line.21799"></a>
<span class="sourceLineNo">21800</span> float oy;<a name="line.21800"></a>
<span class="sourceLineNo">21801</span> ox = (float) toLong(Math.sinh(ix)*Math.cos(iy));<a name="line.21801"></a>
<span class="sourceLineNo">21802</span> oy = (float) toLong(Math.cosh(ix)*Math.sin(iy));<a name="line.21802"></a>
<span class="sourceLineNo">21803</span> oc64data[it.oIndex] = ox;<a name="line.21803"></a>
<span class="sourceLineNo">21804</span> oc64data[it.oIndex + 1] = oy;<a name="line.21804"></a>
<span class="sourceLineNo">21805</span> }<a name="line.21805"></a>
<span class="sourceLineNo">21806</span> }<a name="line.21806"></a>
<span class="sourceLineNo">21807</span> } else {<a name="line.21807"></a>
<span class="sourceLineNo">21808</span> while (it.hasNext()) {<a name="line.21808"></a>
<span class="sourceLineNo">21809</span> final double ix = it.aDouble;<a name="line.21809"></a>
<span class="sourceLineNo">21810</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.21810"></a>
<span class="sourceLineNo">21811</span> float ox;<a name="line.21811"></a>
<span class="sourceLineNo">21812</span> float oy;<a name="line.21812"></a>
<span class="sourceLineNo">21813</span> ox = (float) (Math.sinh(ix)*Math.cos(iy));<a name="line.21813"></a>
<span class="sourceLineNo">21814</span> oy = (float) (Math.cosh(ix)*Math.sin(iy));<a name="line.21814"></a>
<span class="sourceLineNo">21815</span> oc64data[it.oIndex] = ox;<a name="line.21815"></a>
<span class="sourceLineNo">21816</span> oc64data[it.oIndex + 1] = oy;<a name="line.21816"></a>
<span class="sourceLineNo">21817</span> }<a name="line.21817"></a>
<span class="sourceLineNo">21818</span> }<a name="line.21818"></a>
<span class="sourceLineNo">21819</span> break;<a name="line.21819"></a>
<span class="sourceLineNo">21820</span> case Dataset.COMPLEX128:<a name="line.21820"></a>
<span class="sourceLineNo">21821</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.21821"></a>
<span class="sourceLineNo">21822</span> if (!da.isComplex()) {<a name="line.21822"></a>
<span class="sourceLineNo">21823</span> if (it.isOutputDouble()) {<a name="line.21823"></a>
<span class="sourceLineNo">21824</span> final double iy = 0;<a name="line.21824"></a>
<span class="sourceLineNo">21825</span> while (it.hasNext()) {<a name="line.21825"></a>
<span class="sourceLineNo">21826</span> final double ix = it.aDouble;<a name="line.21826"></a>
<span class="sourceLineNo">21827</span> double ox;<a name="line.21827"></a>
<span class="sourceLineNo">21828</span> double oy;<a name="line.21828"></a>
<span class="sourceLineNo">21829</span> ox = (Math.sinh(ix)*Math.cos(iy));<a name="line.21829"></a>
<span class="sourceLineNo">21830</span> oy = (Math.cosh(ix)*Math.sin(iy));<a name="line.21830"></a>
<span class="sourceLineNo">21831</span> oc128data[it.oIndex] = ox;<a name="line.21831"></a>
<span class="sourceLineNo">21832</span> oc128data[it.oIndex + 1] = oy;<a name="line.21832"></a>
<span class="sourceLineNo">21833</span> }<a name="line.21833"></a>
<span class="sourceLineNo">21834</span> } else {<a name="line.21834"></a>
<span class="sourceLineNo">21835</span> final long iy = 0;<a name="line.21835"></a>
<span class="sourceLineNo">21836</span> while (it.hasNext()) {<a name="line.21836"></a>
<span class="sourceLineNo">21837</span> final long ix = it.aLong;<a name="line.21837"></a>
<span class="sourceLineNo">21838</span> double ox;<a name="line.21838"></a>
<span class="sourceLineNo">21839</span> double oy;<a name="line.21839"></a>
<span class="sourceLineNo">21840</span> ox = (double) (Math.sinh(ix)*Math.cos(iy));<a name="line.21840"></a>
<span class="sourceLineNo">21841</span> oy = (double) (Math.cosh(ix)*Math.sin(iy));<a name="line.21841"></a>
<span class="sourceLineNo">21842</span> oc128data[it.oIndex] = ox;<a name="line.21842"></a>
<span class="sourceLineNo">21843</span> oc128data[it.oIndex + 1] = oy;<a name="line.21843"></a>
<span class="sourceLineNo">21844</span> }<a name="line.21844"></a>
<span class="sourceLineNo">21845</span> }<a name="line.21845"></a>
<span class="sourceLineNo">21846</span> } else {<a name="line.21846"></a>
<span class="sourceLineNo">21847</span> while (it.hasNext()) {<a name="line.21847"></a>
<span class="sourceLineNo">21848</span> final double ix = it.aDouble;<a name="line.21848"></a>
<span class="sourceLineNo">21849</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.21849"></a>
<span class="sourceLineNo">21850</span> double ox;<a name="line.21850"></a>
<span class="sourceLineNo">21851</span> double oy;<a name="line.21851"></a>
<span class="sourceLineNo">21852</span> ox = (Math.sinh(ix)*Math.cos(iy));<a name="line.21852"></a>
<span class="sourceLineNo">21853</span> oy = (Math.cosh(ix)*Math.sin(iy));<a name="line.21853"></a>
<span class="sourceLineNo">21854</span> oc128data[it.oIndex] = ox;<a name="line.21854"></a>
<span class="sourceLineNo">21855</span> oc128data[it.oIndex + 1] = oy;<a name="line.21855"></a>
<span class="sourceLineNo">21856</span> }<a name="line.21856"></a>
<span class="sourceLineNo">21857</span> }<a name="line.21857"></a>
<span class="sourceLineNo">21858</span> break;<a name="line.21858"></a>
<span class="sourceLineNo">21859</span> default:<a name="line.21859"></a>
<span class="sourceLineNo">21860</span> throw new IllegalArgumentException("sinh supports integer, compound integer, real, compound real, complex datasets only");<a name="line.21860"></a>
<span class="sourceLineNo">21861</span> }<a name="line.21861"></a>
<span class="sourceLineNo">21862</span><a name="line.21862"></a>
<span class="sourceLineNo">21863</span> addFunctionName(result, "sinh");<a name="line.21863"></a>
<span class="sourceLineNo">21864</span> return result;<a name="line.21864"></a>
<span class="sourceLineNo">21865</span> }<a name="line.21865"></a>
<span class="sourceLineNo">21866</span><a name="line.21866"></a>
<span class="sourceLineNo">21867</span> /**<a name="line.21867"></a>
<span class="sourceLineNo">21868</span> * cosh - evaluate the hyperbolic cosine function on each element of the dataset<a name="line.21868"></a>
<span class="sourceLineNo">21869</span> * @param a<a name="line.21869"></a>
<span class="sourceLineNo">21870</span> * @return dataset<a name="line.21870"></a>
<span class="sourceLineNo">21871</span> */<a name="line.21871"></a>
<span class="sourceLineNo">21872</span> public static Dataset cosh(final Object a) {<a name="line.21872"></a>
<span class="sourceLineNo">21873</span> return cosh(a, null);<a name="line.21873"></a>
<span class="sourceLineNo">21874</span> }<a name="line.21874"></a>
<span class="sourceLineNo">21875</span><a name="line.21875"></a>
<span class="sourceLineNo">21876</span> /**<a name="line.21876"></a>
<span class="sourceLineNo">21877</span> * cosh - evaluate the hyperbolic cosine function on each element of the dataset<a name="line.21877"></a>
<span class="sourceLineNo">21878</span> * @param a<a name="line.21878"></a>
<span class="sourceLineNo">21879</span> * @param o output can be null - in which case, a new dataset is created<a name="line.21879"></a>
<span class="sourceLineNo">21880</span> * @return dataset<a name="line.21880"></a>
<span class="sourceLineNo">21881</span> */<a name="line.21881"></a>
<span class="sourceLineNo">21882</span> public static Dataset cosh(final Object a, final Dataset o) {<a name="line.21882"></a>
<span class="sourceLineNo">21883</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.21883"></a>
<span class="sourceLineNo">21884</span> SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true);<a name="line.21884"></a>
<span class="sourceLineNo">21885</span> final Dataset result = it.getOutput();<a name="line.21885"></a>
<span class="sourceLineNo">21886</span> if (!result.isComplex()) {<a name="line.21886"></a>
<span class="sourceLineNo">21887</span> if (da.isComplex()) {<a name="line.21887"></a>
<span class="sourceLineNo">21888</span> da = da.getRealView();<a name="line.21888"></a>
<span class="sourceLineNo">21889</span> it = new SingleInputBroadcastIterator(da, result, true);<a name="line.21889"></a>
<span class="sourceLineNo">21890</span> }<a name="line.21890"></a>
<span class="sourceLineNo">21891</span> }<a name="line.21891"></a>
<span class="sourceLineNo">21892</span> final int is = result.getElementsPerItem();<a name="line.21892"></a>
<span class="sourceLineNo">21893</span> final int as = da.getElementsPerItem();<a name="line.21893"></a>
<span class="sourceLineNo">21894</span> final int dt = result.getDType();<a name="line.21894"></a>
<span class="sourceLineNo">21895</span><a name="line.21895"></a>
<span class="sourceLineNo">21896</span> switch(dt) {<a name="line.21896"></a>
<span class="sourceLineNo">21897</span> case Dataset.INT8:<a name="line.21897"></a>
<span class="sourceLineNo">21898</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.21898"></a>
<span class="sourceLineNo">21899</span> if (it.isOutputDouble()) {<a name="line.21899"></a>
<span class="sourceLineNo">21900</span> while (it.hasNext()) {<a name="line.21900"></a>
<span class="sourceLineNo">21901</span> final double ix = it.aDouble;<a name="line.21901"></a>
<span class="sourceLineNo">21902</span> byte ox;<a name="line.21902"></a>
<span class="sourceLineNo">21903</span> ox = (byte) toLong(Math.cosh(ix));<a name="line.21903"></a>
<span class="sourceLineNo">21904</span> oi8data[it.oIndex] = ox;<a name="line.21904"></a>
<span class="sourceLineNo">21905</span> }<a name="line.21905"></a>
<span class="sourceLineNo">21906</span> } else {<a name="line.21906"></a>
<span class="sourceLineNo">21907</span> while (it.hasNext()) {<a name="line.21907"></a>
<span class="sourceLineNo">21908</span> final long ix = it.aLong;<a name="line.21908"></a>
<span class="sourceLineNo">21909</span> byte ox;<a name="line.21909"></a>
<span class="sourceLineNo">21910</span> ox = (byte) toLong(Math.cosh(ix));<a name="line.21910"></a>
<span class="sourceLineNo">21911</span> oi8data[it.oIndex] = ox;<a name="line.21911"></a>
<span class="sourceLineNo">21912</span> }<a name="line.21912"></a>
<span class="sourceLineNo">21913</span> }<a name="line.21913"></a>
<span class="sourceLineNo">21914</span> break;<a name="line.21914"></a>
<span class="sourceLineNo">21915</span> case Dataset.INT16:<a name="line.21915"></a>
<span class="sourceLineNo">21916</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.21916"></a>
<span class="sourceLineNo">21917</span> if (it.isOutputDouble()) {<a name="line.21917"></a>
<span class="sourceLineNo">21918</span> while (it.hasNext()) {<a name="line.21918"></a>
<span class="sourceLineNo">21919</span> final double ix = it.aDouble;<a name="line.21919"></a>
<span class="sourceLineNo">21920</span> short ox;<a name="line.21920"></a>
<span class="sourceLineNo">21921</span> ox = (short) toLong(Math.cosh(ix));<a name="line.21921"></a>
<span class="sourceLineNo">21922</span> oi16data[it.oIndex] = ox;<a name="line.21922"></a>
<span class="sourceLineNo">21923</span> }<a name="line.21923"></a>
<span class="sourceLineNo">21924</span> } else {<a name="line.21924"></a>
<span class="sourceLineNo">21925</span> while (it.hasNext()) {<a name="line.21925"></a>
<span class="sourceLineNo">21926</span> final long ix = it.aLong;<a name="line.21926"></a>
<span class="sourceLineNo">21927</span> short ox;<a name="line.21927"></a>
<span class="sourceLineNo">21928</span> ox = (short) toLong(Math.cosh(ix));<a name="line.21928"></a>
<span class="sourceLineNo">21929</span> oi16data[it.oIndex] = ox;<a name="line.21929"></a>
<span class="sourceLineNo">21930</span> }<a name="line.21930"></a>
<span class="sourceLineNo">21931</span> }<a name="line.21931"></a>
<span class="sourceLineNo">21932</span> break;<a name="line.21932"></a>
<span class="sourceLineNo">21933</span> case Dataset.INT64:<a name="line.21933"></a>
<span class="sourceLineNo">21934</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.21934"></a>
<span class="sourceLineNo">21935</span> if (it.isOutputDouble()) {<a name="line.21935"></a>
<span class="sourceLineNo">21936</span> while (it.hasNext()) {<a name="line.21936"></a>
<span class="sourceLineNo">21937</span> final double ix = it.aDouble;<a name="line.21937"></a>
<span class="sourceLineNo">21938</span> long ox;<a name="line.21938"></a>
<span class="sourceLineNo">21939</span> ox = toLong(Math.cosh(ix));<a name="line.21939"></a>
<span class="sourceLineNo">21940</span> oi64data[it.oIndex] = ox;<a name="line.21940"></a>
<span class="sourceLineNo">21941</span> }<a name="line.21941"></a>
<span class="sourceLineNo">21942</span> } else {<a name="line.21942"></a>
<span class="sourceLineNo">21943</span> while (it.hasNext()) {<a name="line.21943"></a>
<span class="sourceLineNo">21944</span> final long ix = it.aLong;<a name="line.21944"></a>
<span class="sourceLineNo">21945</span> long ox;<a name="line.21945"></a>
<span class="sourceLineNo">21946</span> ox = toLong(Math.cosh(ix));<a name="line.21946"></a>
<span class="sourceLineNo">21947</span> oi64data[it.oIndex] = ox;<a name="line.21947"></a>
<span class="sourceLineNo">21948</span> }<a name="line.21948"></a>
<span class="sourceLineNo">21949</span> }<a name="line.21949"></a>
<span class="sourceLineNo">21950</span> break;<a name="line.21950"></a>
<span class="sourceLineNo">21951</span> case Dataset.INT32:<a name="line.21951"></a>
<span class="sourceLineNo">21952</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.21952"></a>
<span class="sourceLineNo">21953</span> if (it.isOutputDouble()) {<a name="line.21953"></a>
<span class="sourceLineNo">21954</span> while (it.hasNext()) {<a name="line.21954"></a>
<span class="sourceLineNo">21955</span> final double ix = it.aDouble;<a name="line.21955"></a>
<span class="sourceLineNo">21956</span> int ox;<a name="line.21956"></a>
<span class="sourceLineNo">21957</span> ox = (int) toLong(Math.cosh(ix));<a name="line.21957"></a>
<span class="sourceLineNo">21958</span> oi32data[it.oIndex] = ox;<a name="line.21958"></a>
<span class="sourceLineNo">21959</span> }<a name="line.21959"></a>
<span class="sourceLineNo">21960</span> } else {<a name="line.21960"></a>
<span class="sourceLineNo">21961</span> while (it.hasNext()) {<a name="line.21961"></a>
<span class="sourceLineNo">21962</span> final long ix = it.aLong;<a name="line.21962"></a>
<span class="sourceLineNo">21963</span> int ox;<a name="line.21963"></a>
<span class="sourceLineNo">21964</span> ox = (int) toLong(Math.cosh(ix));<a name="line.21964"></a>
<span class="sourceLineNo">21965</span> oi32data[it.oIndex] = ox;<a name="line.21965"></a>
<span class="sourceLineNo">21966</span> }<a name="line.21966"></a>
<span class="sourceLineNo">21967</span> }<a name="line.21967"></a>
<span class="sourceLineNo">21968</span> break;<a name="line.21968"></a>
<span class="sourceLineNo">21969</span> case Dataset.ARRAYINT8:<a name="line.21969"></a>
<span class="sourceLineNo">21970</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.21970"></a>
<span class="sourceLineNo">21971</span> if (is == 1) {<a name="line.21971"></a>
<span class="sourceLineNo">21972</span> if (it.isOutputDouble()) {<a name="line.21972"></a>
<span class="sourceLineNo">21973</span> while (it.hasNext()) {<a name="line.21973"></a>
<span class="sourceLineNo">21974</span> final double ix = it.aDouble;<a name="line.21974"></a>
<span class="sourceLineNo">21975</span> byte ox;<a name="line.21975"></a>
<span class="sourceLineNo">21976</span> ox = (byte) toLong(Math.cosh(ix));<a name="line.21976"></a>
<span class="sourceLineNo">21977</span> oai8data[it.oIndex] = ox;<a name="line.21977"></a>
<span class="sourceLineNo">21978</span> }<a name="line.21978"></a>
<span class="sourceLineNo">21979</span> } else {<a name="line.21979"></a>
<span class="sourceLineNo">21980</span> while (it.hasNext()) {<a name="line.21980"></a>
<span class="sourceLineNo">21981</span> final long ix = it.aLong;<a name="line.21981"></a>
<span class="sourceLineNo">21982</span> byte ox;<a name="line.21982"></a>
<span class="sourceLineNo">21983</span> ox = (byte) toLong(Math.cosh(ix));<a name="line.21983"></a>
<span class="sourceLineNo">21984</span> oai8data[it.oIndex] = ox;<a name="line.21984"></a>
<span class="sourceLineNo">21985</span> }<a name="line.21985"></a>
<span class="sourceLineNo">21986</span> }<a name="line.21986"></a>
<span class="sourceLineNo">21987</span> } else if (as == 1) {<a name="line.21987"></a>
<span class="sourceLineNo">21988</span> if (it.isOutputDouble()) {<a name="line.21988"></a>
<span class="sourceLineNo">21989</span> while (it.hasNext()) {<a name="line.21989"></a>
<span class="sourceLineNo">21990</span> final double ix = it.aDouble;<a name="line.21990"></a>
<span class="sourceLineNo">21991</span> byte ox;<a name="line.21991"></a>
<span class="sourceLineNo">21992</span> ox = (byte) toLong(Math.cosh(ix));<a name="line.21992"></a>
<span class="sourceLineNo">21993</span> for (int j = 0; j &lt; is; j++) {<a name="line.21993"></a>
<span class="sourceLineNo">21994</span> oai8data[it.oIndex + j] = ox;<a name="line.21994"></a>
<span class="sourceLineNo">21995</span> }<a name="line.21995"></a>
<span class="sourceLineNo">21996</span> }<a name="line.21996"></a>
<span class="sourceLineNo">21997</span> } else {<a name="line.21997"></a>
<span class="sourceLineNo">21998</span> while (it.hasNext()) {<a name="line.21998"></a>
<span class="sourceLineNo">21999</span> final long ix = it.aLong;<a name="line.21999"></a>
<span class="sourceLineNo">22000</span> byte ox;<a name="line.22000"></a>
<span class="sourceLineNo">22001</span> ox = (byte) toLong(Math.cosh(ix));<a name="line.22001"></a>
<span class="sourceLineNo">22002</span> for (int j = 0; j &lt; is; j++) {<a name="line.22002"></a>
<span class="sourceLineNo">22003</span> oai8data[it.oIndex + j] = ox;<a name="line.22003"></a>
<span class="sourceLineNo">22004</span> }<a name="line.22004"></a>
<span class="sourceLineNo">22005</span> }<a name="line.22005"></a>
<span class="sourceLineNo">22006</span> }<a name="line.22006"></a>
<span class="sourceLineNo">22007</span> } else {<a name="line.22007"></a>
<span class="sourceLineNo">22008</span> if (it.isOutputDouble()) {<a name="line.22008"></a>
<span class="sourceLineNo">22009</span> while (it.hasNext()) {<a name="line.22009"></a>
<span class="sourceLineNo">22010</span> for (int j = 0; j &lt; is; j++) {<a name="line.22010"></a>
<span class="sourceLineNo">22011</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.22011"></a>
<span class="sourceLineNo">22012</span> byte ox;<a name="line.22012"></a>
<span class="sourceLineNo">22013</span> ox = (byte) toLong(Math.cosh(ix));<a name="line.22013"></a>
<span class="sourceLineNo">22014</span> oai8data[it.oIndex + j] = ox;<a name="line.22014"></a>
<span class="sourceLineNo">22015</span> }<a name="line.22015"></a>
<span class="sourceLineNo">22016</span> }<a name="line.22016"></a>
<span class="sourceLineNo">22017</span> } else {<a name="line.22017"></a>
<span class="sourceLineNo">22018</span> while (it.hasNext()) {<a name="line.22018"></a>
<span class="sourceLineNo">22019</span> for (int j = 0; j &lt; is; j++) {<a name="line.22019"></a>
<span class="sourceLineNo">22020</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.22020"></a>
<span class="sourceLineNo">22021</span> byte ox;<a name="line.22021"></a>
<span class="sourceLineNo">22022</span> ox = (byte) toLong(Math.cosh(ix));<a name="line.22022"></a>
<span class="sourceLineNo">22023</span> oai8data[it.oIndex + j] = ox;<a name="line.22023"></a>
<span class="sourceLineNo">22024</span> }<a name="line.22024"></a>
<span class="sourceLineNo">22025</span> }<a name="line.22025"></a>
<span class="sourceLineNo">22026</span> }<a name="line.22026"></a>
<span class="sourceLineNo">22027</span> }<a name="line.22027"></a>
<span class="sourceLineNo">22028</span> break;<a name="line.22028"></a>
<span class="sourceLineNo">22029</span> case Dataset.ARRAYINT16:<a name="line.22029"></a>
<span class="sourceLineNo">22030</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.22030"></a>
<span class="sourceLineNo">22031</span> if (is == 1) {<a name="line.22031"></a>
<span class="sourceLineNo">22032</span> if (it.isOutputDouble()) {<a name="line.22032"></a>
<span class="sourceLineNo">22033</span> while (it.hasNext()) {<a name="line.22033"></a>
<span class="sourceLineNo">22034</span> final double ix = it.aDouble;<a name="line.22034"></a>
<span class="sourceLineNo">22035</span> short ox;<a name="line.22035"></a>
<span class="sourceLineNo">22036</span> ox = (short) toLong(Math.cosh(ix));<a name="line.22036"></a>
<span class="sourceLineNo">22037</span> oai16data[it.oIndex] = ox;<a name="line.22037"></a>
<span class="sourceLineNo">22038</span> }<a name="line.22038"></a>
<span class="sourceLineNo">22039</span> } else {<a name="line.22039"></a>
<span class="sourceLineNo">22040</span> while (it.hasNext()) {<a name="line.22040"></a>
<span class="sourceLineNo">22041</span> final long ix = it.aLong;<a name="line.22041"></a>
<span class="sourceLineNo">22042</span> short ox;<a name="line.22042"></a>
<span class="sourceLineNo">22043</span> ox = (short) toLong(Math.cosh(ix));<a name="line.22043"></a>
<span class="sourceLineNo">22044</span> oai16data[it.oIndex] = ox;<a name="line.22044"></a>
<span class="sourceLineNo">22045</span> }<a name="line.22045"></a>
<span class="sourceLineNo">22046</span> }<a name="line.22046"></a>
<span class="sourceLineNo">22047</span> } else if (as == 1) {<a name="line.22047"></a>
<span class="sourceLineNo">22048</span> if (it.isOutputDouble()) {<a name="line.22048"></a>
<span class="sourceLineNo">22049</span> while (it.hasNext()) {<a name="line.22049"></a>
<span class="sourceLineNo">22050</span> final double ix = it.aDouble;<a name="line.22050"></a>
<span class="sourceLineNo">22051</span> short ox;<a name="line.22051"></a>
<span class="sourceLineNo">22052</span> ox = (short) toLong(Math.cosh(ix));<a name="line.22052"></a>
<span class="sourceLineNo">22053</span> for (int j = 0; j &lt; is; j++) {<a name="line.22053"></a>
<span class="sourceLineNo">22054</span> oai16data[it.oIndex + j] = ox;<a name="line.22054"></a>
<span class="sourceLineNo">22055</span> }<a name="line.22055"></a>
<span class="sourceLineNo">22056</span> }<a name="line.22056"></a>
<span class="sourceLineNo">22057</span> } else {<a name="line.22057"></a>
<span class="sourceLineNo">22058</span> while (it.hasNext()) {<a name="line.22058"></a>
<span class="sourceLineNo">22059</span> final long ix = it.aLong;<a name="line.22059"></a>
<span class="sourceLineNo">22060</span> short ox;<a name="line.22060"></a>
<span class="sourceLineNo">22061</span> ox = (short) toLong(Math.cosh(ix));<a name="line.22061"></a>
<span class="sourceLineNo">22062</span> for (int j = 0; j &lt; is; j++) {<a name="line.22062"></a>
<span class="sourceLineNo">22063</span> oai16data[it.oIndex + j] = ox;<a name="line.22063"></a>
<span class="sourceLineNo">22064</span> }<a name="line.22064"></a>
<span class="sourceLineNo">22065</span> }<a name="line.22065"></a>
<span class="sourceLineNo">22066</span> }<a name="line.22066"></a>
<span class="sourceLineNo">22067</span> } else {<a name="line.22067"></a>
<span class="sourceLineNo">22068</span> if (it.isOutputDouble()) {<a name="line.22068"></a>
<span class="sourceLineNo">22069</span> while (it.hasNext()) {<a name="line.22069"></a>
<span class="sourceLineNo">22070</span> for (int j = 0; j &lt; is; j++) {<a name="line.22070"></a>
<span class="sourceLineNo">22071</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.22071"></a>
<span class="sourceLineNo">22072</span> short ox;<a name="line.22072"></a>
<span class="sourceLineNo">22073</span> ox = (short) toLong(Math.cosh(ix));<a name="line.22073"></a>
<span class="sourceLineNo">22074</span> oai16data[it.oIndex + j] = ox;<a name="line.22074"></a>
<span class="sourceLineNo">22075</span> }<a name="line.22075"></a>
<span class="sourceLineNo">22076</span> }<a name="line.22076"></a>
<span class="sourceLineNo">22077</span> } else {<a name="line.22077"></a>
<span class="sourceLineNo">22078</span> while (it.hasNext()) {<a name="line.22078"></a>
<span class="sourceLineNo">22079</span> for (int j = 0; j &lt; is; j++) {<a name="line.22079"></a>
<span class="sourceLineNo">22080</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.22080"></a>
<span class="sourceLineNo">22081</span> short ox;<a name="line.22081"></a>
<span class="sourceLineNo">22082</span> ox = (short) toLong(Math.cosh(ix));<a name="line.22082"></a>
<span class="sourceLineNo">22083</span> oai16data[it.oIndex + j] = ox;<a name="line.22083"></a>
<span class="sourceLineNo">22084</span> }<a name="line.22084"></a>
<span class="sourceLineNo">22085</span> }<a name="line.22085"></a>
<span class="sourceLineNo">22086</span> }<a name="line.22086"></a>
<span class="sourceLineNo">22087</span> }<a name="line.22087"></a>
<span class="sourceLineNo">22088</span> break;<a name="line.22088"></a>
<span class="sourceLineNo">22089</span> case Dataset.ARRAYINT64:<a name="line.22089"></a>
<span class="sourceLineNo">22090</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.22090"></a>
<span class="sourceLineNo">22091</span> if (is == 1) {<a name="line.22091"></a>
<span class="sourceLineNo">22092</span> if (it.isOutputDouble()) {<a name="line.22092"></a>
<span class="sourceLineNo">22093</span> while (it.hasNext()) {<a name="line.22093"></a>
<span class="sourceLineNo">22094</span> final double ix = it.aDouble;<a name="line.22094"></a>
<span class="sourceLineNo">22095</span> long ox;<a name="line.22095"></a>
<span class="sourceLineNo">22096</span> ox = toLong(Math.cosh(ix));<a name="line.22096"></a>
<span class="sourceLineNo">22097</span> oai64data[it.oIndex] = ox;<a name="line.22097"></a>
<span class="sourceLineNo">22098</span> }<a name="line.22098"></a>
<span class="sourceLineNo">22099</span> } else {<a name="line.22099"></a>
<span class="sourceLineNo">22100</span> while (it.hasNext()) {<a name="line.22100"></a>
<span class="sourceLineNo">22101</span> final long ix = it.aLong;<a name="line.22101"></a>
<span class="sourceLineNo">22102</span> long ox;<a name="line.22102"></a>
<span class="sourceLineNo">22103</span> ox = toLong(Math.cosh(ix));<a name="line.22103"></a>
<span class="sourceLineNo">22104</span> oai64data[it.oIndex] = ox;<a name="line.22104"></a>
<span class="sourceLineNo">22105</span> }<a name="line.22105"></a>
<span class="sourceLineNo">22106</span> }<a name="line.22106"></a>
<span class="sourceLineNo">22107</span> } else if (as == 1) {<a name="line.22107"></a>
<span class="sourceLineNo">22108</span> if (it.isOutputDouble()) {<a name="line.22108"></a>
<span class="sourceLineNo">22109</span> while (it.hasNext()) {<a name="line.22109"></a>
<span class="sourceLineNo">22110</span> final double ix = it.aDouble;<a name="line.22110"></a>
<span class="sourceLineNo">22111</span> long ox;<a name="line.22111"></a>
<span class="sourceLineNo">22112</span> ox = toLong(Math.cosh(ix));<a name="line.22112"></a>
<span class="sourceLineNo">22113</span> for (int j = 0; j &lt; is; j++) {<a name="line.22113"></a>
<span class="sourceLineNo">22114</span> oai64data[it.oIndex + j] = ox;<a name="line.22114"></a>
<span class="sourceLineNo">22115</span> }<a name="line.22115"></a>
<span class="sourceLineNo">22116</span> }<a name="line.22116"></a>
<span class="sourceLineNo">22117</span> } else {<a name="line.22117"></a>
<span class="sourceLineNo">22118</span> while (it.hasNext()) {<a name="line.22118"></a>
<span class="sourceLineNo">22119</span> final long ix = it.aLong;<a name="line.22119"></a>
<span class="sourceLineNo">22120</span> long ox;<a name="line.22120"></a>
<span class="sourceLineNo">22121</span> ox = toLong(Math.cosh(ix));<a name="line.22121"></a>
<span class="sourceLineNo">22122</span> for (int j = 0; j &lt; is; j++) {<a name="line.22122"></a>
<span class="sourceLineNo">22123</span> oai64data[it.oIndex + j] = ox;<a name="line.22123"></a>
<span class="sourceLineNo">22124</span> }<a name="line.22124"></a>
<span class="sourceLineNo">22125</span> }<a name="line.22125"></a>
<span class="sourceLineNo">22126</span> }<a name="line.22126"></a>
<span class="sourceLineNo">22127</span> } else {<a name="line.22127"></a>
<span class="sourceLineNo">22128</span> if (it.isOutputDouble()) {<a name="line.22128"></a>
<span class="sourceLineNo">22129</span> while (it.hasNext()) {<a name="line.22129"></a>
<span class="sourceLineNo">22130</span> for (int j = 0; j &lt; is; j++) {<a name="line.22130"></a>
<span class="sourceLineNo">22131</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.22131"></a>
<span class="sourceLineNo">22132</span> long ox;<a name="line.22132"></a>
<span class="sourceLineNo">22133</span> ox = toLong(Math.cosh(ix));<a name="line.22133"></a>
<span class="sourceLineNo">22134</span> oai64data[it.oIndex + j] = ox;<a name="line.22134"></a>
<span class="sourceLineNo">22135</span> }<a name="line.22135"></a>
<span class="sourceLineNo">22136</span> }<a name="line.22136"></a>
<span class="sourceLineNo">22137</span> } else {<a name="line.22137"></a>
<span class="sourceLineNo">22138</span> while (it.hasNext()) {<a name="line.22138"></a>
<span class="sourceLineNo">22139</span> for (int j = 0; j &lt; is; j++) {<a name="line.22139"></a>
<span class="sourceLineNo">22140</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.22140"></a>
<span class="sourceLineNo">22141</span> long ox;<a name="line.22141"></a>
<span class="sourceLineNo">22142</span> ox = toLong(Math.cosh(ix));<a name="line.22142"></a>
<span class="sourceLineNo">22143</span> oai64data[it.oIndex + j] = ox;<a name="line.22143"></a>
<span class="sourceLineNo">22144</span> }<a name="line.22144"></a>
<span class="sourceLineNo">22145</span> }<a name="line.22145"></a>
<span class="sourceLineNo">22146</span> }<a name="line.22146"></a>
<span class="sourceLineNo">22147</span> }<a name="line.22147"></a>
<span class="sourceLineNo">22148</span> break;<a name="line.22148"></a>
<span class="sourceLineNo">22149</span> case Dataset.ARRAYINT32:<a name="line.22149"></a>
<span class="sourceLineNo">22150</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.22150"></a>
<span class="sourceLineNo">22151</span> if (is == 1) {<a name="line.22151"></a>
<span class="sourceLineNo">22152</span> if (it.isOutputDouble()) {<a name="line.22152"></a>
<span class="sourceLineNo">22153</span> while (it.hasNext()) {<a name="line.22153"></a>
<span class="sourceLineNo">22154</span> final double ix = it.aDouble;<a name="line.22154"></a>
<span class="sourceLineNo">22155</span> int ox;<a name="line.22155"></a>
<span class="sourceLineNo">22156</span> ox = (int) toLong(Math.cosh(ix));<a name="line.22156"></a>
<span class="sourceLineNo">22157</span> oai32data[it.oIndex] = ox;<a name="line.22157"></a>
<span class="sourceLineNo">22158</span> }<a name="line.22158"></a>
<span class="sourceLineNo">22159</span> } else {<a name="line.22159"></a>
<span class="sourceLineNo">22160</span> while (it.hasNext()) {<a name="line.22160"></a>
<span class="sourceLineNo">22161</span> final long ix = it.aLong;<a name="line.22161"></a>
<span class="sourceLineNo">22162</span> int ox;<a name="line.22162"></a>
<span class="sourceLineNo">22163</span> ox = (int) toLong(Math.cosh(ix));<a name="line.22163"></a>
<span class="sourceLineNo">22164</span> oai32data[it.oIndex] = ox;<a name="line.22164"></a>
<span class="sourceLineNo">22165</span> }<a name="line.22165"></a>
<span class="sourceLineNo">22166</span> }<a name="line.22166"></a>
<span class="sourceLineNo">22167</span> } else if (as == 1) {<a name="line.22167"></a>
<span class="sourceLineNo">22168</span> if (it.isOutputDouble()) {<a name="line.22168"></a>
<span class="sourceLineNo">22169</span> while (it.hasNext()) {<a name="line.22169"></a>
<span class="sourceLineNo">22170</span> final double ix = it.aDouble;<a name="line.22170"></a>
<span class="sourceLineNo">22171</span> int ox;<a name="line.22171"></a>
<span class="sourceLineNo">22172</span> ox = (int) toLong(Math.cosh(ix));<a name="line.22172"></a>
<span class="sourceLineNo">22173</span> for (int j = 0; j &lt; is; j++) {<a name="line.22173"></a>
<span class="sourceLineNo">22174</span> oai32data[it.oIndex + j] = ox;<a name="line.22174"></a>
<span class="sourceLineNo">22175</span> }<a name="line.22175"></a>
<span class="sourceLineNo">22176</span> }<a name="line.22176"></a>
<span class="sourceLineNo">22177</span> } else {<a name="line.22177"></a>
<span class="sourceLineNo">22178</span> while (it.hasNext()) {<a name="line.22178"></a>
<span class="sourceLineNo">22179</span> final long ix = it.aLong;<a name="line.22179"></a>
<span class="sourceLineNo">22180</span> int ox;<a name="line.22180"></a>
<span class="sourceLineNo">22181</span> ox = (int) toLong(Math.cosh(ix));<a name="line.22181"></a>
<span class="sourceLineNo">22182</span> for (int j = 0; j &lt; is; j++) {<a name="line.22182"></a>
<span class="sourceLineNo">22183</span> oai32data[it.oIndex + j] = ox;<a name="line.22183"></a>
<span class="sourceLineNo">22184</span> }<a name="line.22184"></a>
<span class="sourceLineNo">22185</span> }<a name="line.22185"></a>
<span class="sourceLineNo">22186</span> }<a name="line.22186"></a>
<span class="sourceLineNo">22187</span> } else {<a name="line.22187"></a>
<span class="sourceLineNo">22188</span> if (it.isOutputDouble()) {<a name="line.22188"></a>
<span class="sourceLineNo">22189</span> while (it.hasNext()) {<a name="line.22189"></a>
<span class="sourceLineNo">22190</span> for (int j = 0; j &lt; is; j++) {<a name="line.22190"></a>
<span class="sourceLineNo">22191</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.22191"></a>
<span class="sourceLineNo">22192</span> int ox;<a name="line.22192"></a>
<span class="sourceLineNo">22193</span> ox = (int) toLong(Math.cosh(ix));<a name="line.22193"></a>
<span class="sourceLineNo">22194</span> oai32data[it.oIndex + j] = ox;<a name="line.22194"></a>
<span class="sourceLineNo">22195</span> }<a name="line.22195"></a>
<span class="sourceLineNo">22196</span> }<a name="line.22196"></a>
<span class="sourceLineNo">22197</span> } else {<a name="line.22197"></a>
<span class="sourceLineNo">22198</span> while (it.hasNext()) {<a name="line.22198"></a>
<span class="sourceLineNo">22199</span> for (int j = 0; j &lt; is; j++) {<a name="line.22199"></a>
<span class="sourceLineNo">22200</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.22200"></a>
<span class="sourceLineNo">22201</span> int ox;<a name="line.22201"></a>
<span class="sourceLineNo">22202</span> ox = (int) toLong(Math.cosh(ix));<a name="line.22202"></a>
<span class="sourceLineNo">22203</span> oai32data[it.oIndex + j] = ox;<a name="line.22203"></a>
<span class="sourceLineNo">22204</span> }<a name="line.22204"></a>
<span class="sourceLineNo">22205</span> }<a name="line.22205"></a>
<span class="sourceLineNo">22206</span> }<a name="line.22206"></a>
<span class="sourceLineNo">22207</span> }<a name="line.22207"></a>
<span class="sourceLineNo">22208</span> break;<a name="line.22208"></a>
<span class="sourceLineNo">22209</span> case Dataset.FLOAT32:<a name="line.22209"></a>
<span class="sourceLineNo">22210</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.22210"></a>
<span class="sourceLineNo">22211</span> if (it.isOutputDouble()) {<a name="line.22211"></a>
<span class="sourceLineNo">22212</span> while (it.hasNext()) {<a name="line.22212"></a>
<span class="sourceLineNo">22213</span> final double ix = it.aDouble;<a name="line.22213"></a>
<span class="sourceLineNo">22214</span> float ox;<a name="line.22214"></a>
<span class="sourceLineNo">22215</span> ox = (float) (Math.cosh(ix));<a name="line.22215"></a>
<span class="sourceLineNo">22216</span> of32data[it.oIndex] = ox;<a name="line.22216"></a>
<span class="sourceLineNo">22217</span> }<a name="line.22217"></a>
<span class="sourceLineNo">22218</span> } else {<a name="line.22218"></a>
<span class="sourceLineNo">22219</span> while (it.hasNext()) {<a name="line.22219"></a>
<span class="sourceLineNo">22220</span> final long ix = it.aLong;<a name="line.22220"></a>
<span class="sourceLineNo">22221</span> float ox;<a name="line.22221"></a>
<span class="sourceLineNo">22222</span> ox = (float) (Math.cosh(ix));<a name="line.22222"></a>
<span class="sourceLineNo">22223</span> of32data[it.oIndex] = ox;<a name="line.22223"></a>
<span class="sourceLineNo">22224</span> }<a name="line.22224"></a>
<span class="sourceLineNo">22225</span> }<a name="line.22225"></a>
<span class="sourceLineNo">22226</span> break;<a name="line.22226"></a>
<span class="sourceLineNo">22227</span> case Dataset.FLOAT64:<a name="line.22227"></a>
<span class="sourceLineNo">22228</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.22228"></a>
<span class="sourceLineNo">22229</span> if (it.isOutputDouble()) {<a name="line.22229"></a>
<span class="sourceLineNo">22230</span> while (it.hasNext()) {<a name="line.22230"></a>
<span class="sourceLineNo">22231</span> final double ix = it.aDouble;<a name="line.22231"></a>
<span class="sourceLineNo">22232</span> double ox;<a name="line.22232"></a>
<span class="sourceLineNo">22233</span> ox = (Math.cosh(ix));<a name="line.22233"></a>
<span class="sourceLineNo">22234</span> of64data[it.oIndex] = ox;<a name="line.22234"></a>
<span class="sourceLineNo">22235</span> }<a name="line.22235"></a>
<span class="sourceLineNo">22236</span> } else {<a name="line.22236"></a>
<span class="sourceLineNo">22237</span> while (it.hasNext()) {<a name="line.22237"></a>
<span class="sourceLineNo">22238</span> final long ix = it.aLong;<a name="line.22238"></a>
<span class="sourceLineNo">22239</span> double ox;<a name="line.22239"></a>
<span class="sourceLineNo">22240</span> ox = (Math.cosh(ix));<a name="line.22240"></a>
<span class="sourceLineNo">22241</span> of64data[it.oIndex] = ox;<a name="line.22241"></a>
<span class="sourceLineNo">22242</span> }<a name="line.22242"></a>
<span class="sourceLineNo">22243</span> }<a name="line.22243"></a>
<span class="sourceLineNo">22244</span> break;<a name="line.22244"></a>
<span class="sourceLineNo">22245</span> case Dataset.ARRAYFLOAT32:<a name="line.22245"></a>
<span class="sourceLineNo">22246</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.22246"></a>
<span class="sourceLineNo">22247</span> if (is == 1) {<a name="line.22247"></a>
<span class="sourceLineNo">22248</span> if (it.isOutputDouble()) {<a name="line.22248"></a>
<span class="sourceLineNo">22249</span> while (it.hasNext()) {<a name="line.22249"></a>
<span class="sourceLineNo">22250</span> final double ix = it.aDouble;<a name="line.22250"></a>
<span class="sourceLineNo">22251</span> float ox;<a name="line.22251"></a>
<span class="sourceLineNo">22252</span> ox = (float) (Math.cosh(ix));<a name="line.22252"></a>
<span class="sourceLineNo">22253</span> oaf32data[it.oIndex] = ox;<a name="line.22253"></a>
<span class="sourceLineNo">22254</span> }<a name="line.22254"></a>
<span class="sourceLineNo">22255</span> } else {<a name="line.22255"></a>
<span class="sourceLineNo">22256</span> while (it.hasNext()) {<a name="line.22256"></a>
<span class="sourceLineNo">22257</span> final long ix = it.aLong;<a name="line.22257"></a>
<span class="sourceLineNo">22258</span> float ox;<a name="line.22258"></a>
<span class="sourceLineNo">22259</span> ox = (float) (Math.cosh(ix));<a name="line.22259"></a>
<span class="sourceLineNo">22260</span> oaf32data[it.oIndex] = ox;<a name="line.22260"></a>
<span class="sourceLineNo">22261</span> }<a name="line.22261"></a>
<span class="sourceLineNo">22262</span> }<a name="line.22262"></a>
<span class="sourceLineNo">22263</span> } else if (as == 1) {<a name="line.22263"></a>
<span class="sourceLineNo">22264</span> if (it.isOutputDouble()) {<a name="line.22264"></a>
<span class="sourceLineNo">22265</span> while (it.hasNext()) {<a name="line.22265"></a>
<span class="sourceLineNo">22266</span> final double ix = it.aDouble;<a name="line.22266"></a>
<span class="sourceLineNo">22267</span> float ox;<a name="line.22267"></a>
<span class="sourceLineNo">22268</span> ox = (float) (Math.cosh(ix));<a name="line.22268"></a>
<span class="sourceLineNo">22269</span> for (int j = 0; j &lt; is; j++) {<a name="line.22269"></a>
<span class="sourceLineNo">22270</span> oaf32data[it.oIndex + j] = ox;<a name="line.22270"></a>
<span class="sourceLineNo">22271</span> }<a name="line.22271"></a>
<span class="sourceLineNo">22272</span> }<a name="line.22272"></a>
<span class="sourceLineNo">22273</span> } else {<a name="line.22273"></a>
<span class="sourceLineNo">22274</span> while (it.hasNext()) {<a name="line.22274"></a>
<span class="sourceLineNo">22275</span> final long ix = it.aLong;<a name="line.22275"></a>
<span class="sourceLineNo">22276</span> float ox;<a name="line.22276"></a>
<span class="sourceLineNo">22277</span> ox = (float) (Math.cosh(ix));<a name="line.22277"></a>
<span class="sourceLineNo">22278</span> for (int j = 0; j &lt; is; j++) {<a name="line.22278"></a>
<span class="sourceLineNo">22279</span> oaf32data[it.oIndex + j] = ox;<a name="line.22279"></a>
<span class="sourceLineNo">22280</span> }<a name="line.22280"></a>
<span class="sourceLineNo">22281</span> }<a name="line.22281"></a>
<span class="sourceLineNo">22282</span> }<a name="line.22282"></a>
<span class="sourceLineNo">22283</span> } else {<a name="line.22283"></a>
<span class="sourceLineNo">22284</span> if (it.isOutputDouble()) {<a name="line.22284"></a>
<span class="sourceLineNo">22285</span> while (it.hasNext()) {<a name="line.22285"></a>
<span class="sourceLineNo">22286</span> for (int j = 0; j &lt; is; j++) {<a name="line.22286"></a>
<span class="sourceLineNo">22287</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.22287"></a>
<span class="sourceLineNo">22288</span> float ox;<a name="line.22288"></a>
<span class="sourceLineNo">22289</span> ox = (float) (Math.cosh(ix));<a name="line.22289"></a>
<span class="sourceLineNo">22290</span> oaf32data[it.oIndex + j] = ox;<a name="line.22290"></a>
<span class="sourceLineNo">22291</span> }<a name="line.22291"></a>
<span class="sourceLineNo">22292</span> }<a name="line.22292"></a>
<span class="sourceLineNo">22293</span> } else {<a name="line.22293"></a>
<span class="sourceLineNo">22294</span> while (it.hasNext()) {<a name="line.22294"></a>
<span class="sourceLineNo">22295</span> for (int j = 0; j &lt; is; j++) {<a name="line.22295"></a>
<span class="sourceLineNo">22296</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.22296"></a>
<span class="sourceLineNo">22297</span> float ox;<a name="line.22297"></a>
<span class="sourceLineNo">22298</span> ox = (float) (Math.cosh(ix));<a name="line.22298"></a>
<span class="sourceLineNo">22299</span> oaf32data[it.oIndex + j] = ox;<a name="line.22299"></a>
<span class="sourceLineNo">22300</span> }<a name="line.22300"></a>
<span class="sourceLineNo">22301</span> }<a name="line.22301"></a>
<span class="sourceLineNo">22302</span> }<a name="line.22302"></a>
<span class="sourceLineNo">22303</span> }<a name="line.22303"></a>
<span class="sourceLineNo">22304</span> break;<a name="line.22304"></a>
<span class="sourceLineNo">22305</span> case Dataset.ARRAYFLOAT64:<a name="line.22305"></a>
<span class="sourceLineNo">22306</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.22306"></a>
<span class="sourceLineNo">22307</span> if (is == 1) {<a name="line.22307"></a>
<span class="sourceLineNo">22308</span> if (it.isOutputDouble()) {<a name="line.22308"></a>
<span class="sourceLineNo">22309</span> while (it.hasNext()) {<a name="line.22309"></a>
<span class="sourceLineNo">22310</span> final double ix = it.aDouble;<a name="line.22310"></a>
<span class="sourceLineNo">22311</span> double ox;<a name="line.22311"></a>
<span class="sourceLineNo">22312</span> ox = (Math.cosh(ix));<a name="line.22312"></a>
<span class="sourceLineNo">22313</span> oaf64data[it.oIndex] = ox;<a name="line.22313"></a>
<span class="sourceLineNo">22314</span> }<a name="line.22314"></a>
<span class="sourceLineNo">22315</span> } else {<a name="line.22315"></a>
<span class="sourceLineNo">22316</span> while (it.hasNext()) {<a name="line.22316"></a>
<span class="sourceLineNo">22317</span> final long ix = it.aLong;<a name="line.22317"></a>
<span class="sourceLineNo">22318</span> double ox;<a name="line.22318"></a>
<span class="sourceLineNo">22319</span> ox = (Math.cosh(ix));<a name="line.22319"></a>
<span class="sourceLineNo">22320</span> oaf64data[it.oIndex] = ox;<a name="line.22320"></a>
<span class="sourceLineNo">22321</span> }<a name="line.22321"></a>
<span class="sourceLineNo">22322</span> }<a name="line.22322"></a>
<span class="sourceLineNo">22323</span> } else if (as == 1) {<a name="line.22323"></a>
<span class="sourceLineNo">22324</span> if (it.isOutputDouble()) {<a name="line.22324"></a>
<span class="sourceLineNo">22325</span> while (it.hasNext()) {<a name="line.22325"></a>
<span class="sourceLineNo">22326</span> final double ix = it.aDouble;<a name="line.22326"></a>
<span class="sourceLineNo">22327</span> double ox;<a name="line.22327"></a>
<span class="sourceLineNo">22328</span> ox = (Math.cosh(ix));<a name="line.22328"></a>
<span class="sourceLineNo">22329</span> for (int j = 0; j &lt; is; j++) {<a name="line.22329"></a>
<span class="sourceLineNo">22330</span> oaf64data[it.oIndex + j] = ox;<a name="line.22330"></a>
<span class="sourceLineNo">22331</span> }<a name="line.22331"></a>
<span class="sourceLineNo">22332</span> }<a name="line.22332"></a>
<span class="sourceLineNo">22333</span> } else {<a name="line.22333"></a>
<span class="sourceLineNo">22334</span> while (it.hasNext()) {<a name="line.22334"></a>
<span class="sourceLineNo">22335</span> final long ix = it.aLong;<a name="line.22335"></a>
<span class="sourceLineNo">22336</span> double ox;<a name="line.22336"></a>
<span class="sourceLineNo">22337</span> ox = (Math.cosh(ix));<a name="line.22337"></a>
<span class="sourceLineNo">22338</span> for (int j = 0; j &lt; is; j++) {<a name="line.22338"></a>
<span class="sourceLineNo">22339</span> oaf64data[it.oIndex + j] = ox;<a name="line.22339"></a>
<span class="sourceLineNo">22340</span> }<a name="line.22340"></a>
<span class="sourceLineNo">22341</span> }<a name="line.22341"></a>
<span class="sourceLineNo">22342</span> }<a name="line.22342"></a>
<span class="sourceLineNo">22343</span> } else {<a name="line.22343"></a>
<span class="sourceLineNo">22344</span> if (it.isOutputDouble()) {<a name="line.22344"></a>
<span class="sourceLineNo">22345</span> while (it.hasNext()) {<a name="line.22345"></a>
<span class="sourceLineNo">22346</span> for (int j = 0; j &lt; is; j++) {<a name="line.22346"></a>
<span class="sourceLineNo">22347</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.22347"></a>
<span class="sourceLineNo">22348</span> double ox;<a name="line.22348"></a>
<span class="sourceLineNo">22349</span> ox = (Math.cosh(ix));<a name="line.22349"></a>
<span class="sourceLineNo">22350</span> oaf64data[it.oIndex + j] = ox;<a name="line.22350"></a>
<span class="sourceLineNo">22351</span> }<a name="line.22351"></a>
<span class="sourceLineNo">22352</span> }<a name="line.22352"></a>
<span class="sourceLineNo">22353</span> } else {<a name="line.22353"></a>
<span class="sourceLineNo">22354</span> while (it.hasNext()) {<a name="line.22354"></a>
<span class="sourceLineNo">22355</span> for (int j = 0; j &lt; is; j++) {<a name="line.22355"></a>
<span class="sourceLineNo">22356</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.22356"></a>
<span class="sourceLineNo">22357</span> double ox;<a name="line.22357"></a>
<span class="sourceLineNo">22358</span> ox = (Math.cosh(ix));<a name="line.22358"></a>
<span class="sourceLineNo">22359</span> oaf64data[it.oIndex + j] = ox;<a name="line.22359"></a>
<span class="sourceLineNo">22360</span> }<a name="line.22360"></a>
<span class="sourceLineNo">22361</span> }<a name="line.22361"></a>
<span class="sourceLineNo">22362</span> }<a name="line.22362"></a>
<span class="sourceLineNo">22363</span> }<a name="line.22363"></a>
<span class="sourceLineNo">22364</span> break;<a name="line.22364"></a>
<span class="sourceLineNo">22365</span> case Dataset.COMPLEX64:<a name="line.22365"></a>
<span class="sourceLineNo">22366</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.22366"></a>
<span class="sourceLineNo">22367</span> if (!da.isComplex()) {<a name="line.22367"></a>
<span class="sourceLineNo">22368</span> if (it.isOutputDouble()) {<a name="line.22368"></a>
<span class="sourceLineNo">22369</span> final double iy = 0;<a name="line.22369"></a>
<span class="sourceLineNo">22370</span> while (it.hasNext()) {<a name="line.22370"></a>
<span class="sourceLineNo">22371</span> final double ix = it.aDouble;<a name="line.22371"></a>
<span class="sourceLineNo">22372</span> float ox;<a name="line.22372"></a>
<span class="sourceLineNo">22373</span> float oy;<a name="line.22373"></a>
<span class="sourceLineNo">22374</span> ox = (float) (Math.cosh(ix)*Math.cos(iy));<a name="line.22374"></a>
<span class="sourceLineNo">22375</span> oy = (float) (Math.sinh(ix)*Math.sin(iy));<a name="line.22375"></a>
<span class="sourceLineNo">22376</span> oc64data[it.oIndex] = ox;<a name="line.22376"></a>
<span class="sourceLineNo">22377</span> oc64data[it.oIndex + 1] = oy;<a name="line.22377"></a>
<span class="sourceLineNo">22378</span> }<a name="line.22378"></a>
<span class="sourceLineNo">22379</span> } else {<a name="line.22379"></a>
<span class="sourceLineNo">22380</span> final long iy = 0;<a name="line.22380"></a>
<span class="sourceLineNo">22381</span> while (it.hasNext()) {<a name="line.22381"></a>
<span class="sourceLineNo">22382</span> final long ix = it.aLong;<a name="line.22382"></a>
<span class="sourceLineNo">22383</span> float ox;<a name="line.22383"></a>
<span class="sourceLineNo">22384</span> float oy;<a name="line.22384"></a>
<span class="sourceLineNo">22385</span> ox = (float) toLong(Math.cosh(ix)*Math.cos(iy));<a name="line.22385"></a>
<span class="sourceLineNo">22386</span> oy = (float) toLong(Math.sinh(ix)*Math.sin(iy));<a name="line.22386"></a>
<span class="sourceLineNo">22387</span> oc64data[it.oIndex] = ox;<a name="line.22387"></a>
<span class="sourceLineNo">22388</span> oc64data[it.oIndex + 1] = oy;<a name="line.22388"></a>
<span class="sourceLineNo">22389</span> }<a name="line.22389"></a>
<span class="sourceLineNo">22390</span> }<a name="line.22390"></a>
<span class="sourceLineNo">22391</span> } else {<a name="line.22391"></a>
<span class="sourceLineNo">22392</span> while (it.hasNext()) {<a name="line.22392"></a>
<span class="sourceLineNo">22393</span> final double ix = it.aDouble;<a name="line.22393"></a>
<span class="sourceLineNo">22394</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.22394"></a>
<span class="sourceLineNo">22395</span> float ox;<a name="line.22395"></a>
<span class="sourceLineNo">22396</span> float oy;<a name="line.22396"></a>
<span class="sourceLineNo">22397</span> ox = (float) (Math.cosh(ix)*Math.cos(iy));<a name="line.22397"></a>
<span class="sourceLineNo">22398</span> oy = (float) (Math.sinh(ix)*Math.sin(iy));<a name="line.22398"></a>
<span class="sourceLineNo">22399</span> oc64data[it.oIndex] = ox;<a name="line.22399"></a>
<span class="sourceLineNo">22400</span> oc64data[it.oIndex + 1] = oy;<a name="line.22400"></a>
<span class="sourceLineNo">22401</span> }<a name="line.22401"></a>
<span class="sourceLineNo">22402</span> }<a name="line.22402"></a>
<span class="sourceLineNo">22403</span> break;<a name="line.22403"></a>
<span class="sourceLineNo">22404</span> case Dataset.COMPLEX128:<a name="line.22404"></a>
<span class="sourceLineNo">22405</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.22405"></a>
<span class="sourceLineNo">22406</span> if (!da.isComplex()) {<a name="line.22406"></a>
<span class="sourceLineNo">22407</span> if (it.isOutputDouble()) {<a name="line.22407"></a>
<span class="sourceLineNo">22408</span> final double iy = 0;<a name="line.22408"></a>
<span class="sourceLineNo">22409</span> while (it.hasNext()) {<a name="line.22409"></a>
<span class="sourceLineNo">22410</span> final double ix = it.aDouble;<a name="line.22410"></a>
<span class="sourceLineNo">22411</span> double ox;<a name="line.22411"></a>
<span class="sourceLineNo">22412</span> double oy;<a name="line.22412"></a>
<span class="sourceLineNo">22413</span> ox = (Math.cosh(ix)*Math.cos(iy));<a name="line.22413"></a>
<span class="sourceLineNo">22414</span> oy = (Math.sinh(ix)*Math.sin(iy));<a name="line.22414"></a>
<span class="sourceLineNo">22415</span> oc128data[it.oIndex] = ox;<a name="line.22415"></a>
<span class="sourceLineNo">22416</span> oc128data[it.oIndex + 1] = oy;<a name="line.22416"></a>
<span class="sourceLineNo">22417</span> }<a name="line.22417"></a>
<span class="sourceLineNo">22418</span> } else {<a name="line.22418"></a>
<span class="sourceLineNo">22419</span> final long iy = 0;<a name="line.22419"></a>
<span class="sourceLineNo">22420</span> while (it.hasNext()) {<a name="line.22420"></a>
<span class="sourceLineNo">22421</span> final long ix = it.aLong;<a name="line.22421"></a>
<span class="sourceLineNo">22422</span> double ox;<a name="line.22422"></a>
<span class="sourceLineNo">22423</span> double oy;<a name="line.22423"></a>
<span class="sourceLineNo">22424</span> ox = (double) (Math.cosh(ix)*Math.cos(iy));<a name="line.22424"></a>
<span class="sourceLineNo">22425</span> oy = (double) (Math.sinh(ix)*Math.sin(iy));<a name="line.22425"></a>
<span class="sourceLineNo">22426</span> oc128data[it.oIndex] = ox;<a name="line.22426"></a>
<span class="sourceLineNo">22427</span> oc128data[it.oIndex + 1] = oy;<a name="line.22427"></a>
<span class="sourceLineNo">22428</span> }<a name="line.22428"></a>
<span class="sourceLineNo">22429</span> }<a name="line.22429"></a>
<span class="sourceLineNo">22430</span> } else {<a name="line.22430"></a>
<span class="sourceLineNo">22431</span> while (it.hasNext()) {<a name="line.22431"></a>
<span class="sourceLineNo">22432</span> final double ix = it.aDouble;<a name="line.22432"></a>
<span class="sourceLineNo">22433</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.22433"></a>
<span class="sourceLineNo">22434</span> double ox;<a name="line.22434"></a>
<span class="sourceLineNo">22435</span> double oy;<a name="line.22435"></a>
<span class="sourceLineNo">22436</span> ox = (Math.cosh(ix)*Math.cos(iy));<a name="line.22436"></a>
<span class="sourceLineNo">22437</span> oy = (Math.sinh(ix)*Math.sin(iy));<a name="line.22437"></a>
<span class="sourceLineNo">22438</span> oc128data[it.oIndex] = ox;<a name="line.22438"></a>
<span class="sourceLineNo">22439</span> oc128data[it.oIndex + 1] = oy;<a name="line.22439"></a>
<span class="sourceLineNo">22440</span> }<a name="line.22440"></a>
<span class="sourceLineNo">22441</span> }<a name="line.22441"></a>
<span class="sourceLineNo">22442</span> break;<a name="line.22442"></a>
<span class="sourceLineNo">22443</span> default:<a name="line.22443"></a>
<span class="sourceLineNo">22444</span> throw new IllegalArgumentException("cosh supports integer, compound integer, real, compound real, complex datasets only");<a name="line.22444"></a>
<span class="sourceLineNo">22445</span> }<a name="line.22445"></a>
<span class="sourceLineNo">22446</span><a name="line.22446"></a>
<span class="sourceLineNo">22447</span> addFunctionName(result, "cosh");<a name="line.22447"></a>
<span class="sourceLineNo">22448</span> return result;<a name="line.22448"></a>
<span class="sourceLineNo">22449</span> }<a name="line.22449"></a>
<span class="sourceLineNo">22450</span><a name="line.22450"></a>
<span class="sourceLineNo">22451</span> /**<a name="line.22451"></a>
<span class="sourceLineNo">22452</span> * tanh - evaluate the tangent hyperbolic function on each element of the dataset<a name="line.22452"></a>
<span class="sourceLineNo">22453</span> * @param a<a name="line.22453"></a>
<span class="sourceLineNo">22454</span> * @return dataset<a name="line.22454"></a>
<span class="sourceLineNo">22455</span> */<a name="line.22455"></a>
<span class="sourceLineNo">22456</span> public static Dataset tanh(final Object a) {<a name="line.22456"></a>
<span class="sourceLineNo">22457</span> return tanh(a, null);<a name="line.22457"></a>
<span class="sourceLineNo">22458</span> }<a name="line.22458"></a>
<span class="sourceLineNo">22459</span><a name="line.22459"></a>
<span class="sourceLineNo">22460</span> /**<a name="line.22460"></a>
<span class="sourceLineNo">22461</span> * tanh - evaluate the tangent hyperbolic function on each element of the dataset<a name="line.22461"></a>
<span class="sourceLineNo">22462</span> * @param a<a name="line.22462"></a>
<span class="sourceLineNo">22463</span> * @param o output can be null - in which case, a new dataset is created<a name="line.22463"></a>
<span class="sourceLineNo">22464</span> * @return dataset<a name="line.22464"></a>
<span class="sourceLineNo">22465</span> */<a name="line.22465"></a>
<span class="sourceLineNo">22466</span> public static Dataset tanh(final Object a, final Dataset o) {<a name="line.22466"></a>
<span class="sourceLineNo">22467</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.22467"></a>
<span class="sourceLineNo">22468</span> SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true);<a name="line.22468"></a>
<span class="sourceLineNo">22469</span> final Dataset result = it.getOutput();<a name="line.22469"></a>
<span class="sourceLineNo">22470</span> if (!result.isComplex()) {<a name="line.22470"></a>
<span class="sourceLineNo">22471</span> if (da.isComplex()) {<a name="line.22471"></a>
<span class="sourceLineNo">22472</span> da = da.getRealView();<a name="line.22472"></a>
<span class="sourceLineNo">22473</span> it = new SingleInputBroadcastIterator(da, result, true);<a name="line.22473"></a>
<span class="sourceLineNo">22474</span> }<a name="line.22474"></a>
<span class="sourceLineNo">22475</span> }<a name="line.22475"></a>
<span class="sourceLineNo">22476</span> final int is = result.getElementsPerItem();<a name="line.22476"></a>
<span class="sourceLineNo">22477</span> final int as = da.getElementsPerItem();<a name="line.22477"></a>
<span class="sourceLineNo">22478</span> final int dt = result.getDType();<a name="line.22478"></a>
<span class="sourceLineNo">22479</span><a name="line.22479"></a>
<span class="sourceLineNo">22480</span> switch(dt) {<a name="line.22480"></a>
<span class="sourceLineNo">22481</span> case Dataset.INT8:<a name="line.22481"></a>
<span class="sourceLineNo">22482</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.22482"></a>
<span class="sourceLineNo">22483</span> if (it.isOutputDouble()) {<a name="line.22483"></a>
<span class="sourceLineNo">22484</span> while (it.hasNext()) {<a name="line.22484"></a>
<span class="sourceLineNo">22485</span> final double ix = it.aDouble;<a name="line.22485"></a>
<span class="sourceLineNo">22486</span> byte ox;<a name="line.22486"></a>
<span class="sourceLineNo">22487</span> ox = (byte) toLong(Math.tanh(ix));<a name="line.22487"></a>
<span class="sourceLineNo">22488</span> oi8data[it.oIndex] = ox;<a name="line.22488"></a>
<span class="sourceLineNo">22489</span> }<a name="line.22489"></a>
<span class="sourceLineNo">22490</span> } else {<a name="line.22490"></a>
<span class="sourceLineNo">22491</span> while (it.hasNext()) {<a name="line.22491"></a>
<span class="sourceLineNo">22492</span> final long ix = it.aLong;<a name="line.22492"></a>
<span class="sourceLineNo">22493</span> byte ox;<a name="line.22493"></a>
<span class="sourceLineNo">22494</span> ox = (byte) toLong(Math.tanh(ix));<a name="line.22494"></a>
<span class="sourceLineNo">22495</span> oi8data[it.oIndex] = ox;<a name="line.22495"></a>
<span class="sourceLineNo">22496</span> }<a name="line.22496"></a>
<span class="sourceLineNo">22497</span> }<a name="line.22497"></a>
<span class="sourceLineNo">22498</span> break;<a name="line.22498"></a>
<span class="sourceLineNo">22499</span> case Dataset.INT16:<a name="line.22499"></a>
<span class="sourceLineNo">22500</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.22500"></a>
<span class="sourceLineNo">22501</span> if (it.isOutputDouble()) {<a name="line.22501"></a>
<span class="sourceLineNo">22502</span> while (it.hasNext()) {<a name="line.22502"></a>
<span class="sourceLineNo">22503</span> final double ix = it.aDouble;<a name="line.22503"></a>
<span class="sourceLineNo">22504</span> short ox;<a name="line.22504"></a>
<span class="sourceLineNo">22505</span> ox = (short) toLong(Math.tanh(ix));<a name="line.22505"></a>
<span class="sourceLineNo">22506</span> oi16data[it.oIndex] = ox;<a name="line.22506"></a>
<span class="sourceLineNo">22507</span> }<a name="line.22507"></a>
<span class="sourceLineNo">22508</span> } else {<a name="line.22508"></a>
<span class="sourceLineNo">22509</span> while (it.hasNext()) {<a name="line.22509"></a>
<span class="sourceLineNo">22510</span> final long ix = it.aLong;<a name="line.22510"></a>
<span class="sourceLineNo">22511</span> short ox;<a name="line.22511"></a>
<span class="sourceLineNo">22512</span> ox = (short) toLong(Math.tanh(ix));<a name="line.22512"></a>
<span class="sourceLineNo">22513</span> oi16data[it.oIndex] = ox;<a name="line.22513"></a>
<span class="sourceLineNo">22514</span> }<a name="line.22514"></a>
<span class="sourceLineNo">22515</span> }<a name="line.22515"></a>
<span class="sourceLineNo">22516</span> break;<a name="line.22516"></a>
<span class="sourceLineNo">22517</span> case Dataset.INT64:<a name="line.22517"></a>
<span class="sourceLineNo">22518</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.22518"></a>
<span class="sourceLineNo">22519</span> if (it.isOutputDouble()) {<a name="line.22519"></a>
<span class="sourceLineNo">22520</span> while (it.hasNext()) {<a name="line.22520"></a>
<span class="sourceLineNo">22521</span> final double ix = it.aDouble;<a name="line.22521"></a>
<span class="sourceLineNo">22522</span> long ox;<a name="line.22522"></a>
<span class="sourceLineNo">22523</span> ox = toLong(Math.tanh(ix));<a name="line.22523"></a>
<span class="sourceLineNo">22524</span> oi64data[it.oIndex] = ox;<a name="line.22524"></a>
<span class="sourceLineNo">22525</span> }<a name="line.22525"></a>
<span class="sourceLineNo">22526</span> } else {<a name="line.22526"></a>
<span class="sourceLineNo">22527</span> while (it.hasNext()) {<a name="line.22527"></a>
<span class="sourceLineNo">22528</span> final long ix = it.aLong;<a name="line.22528"></a>
<span class="sourceLineNo">22529</span> long ox;<a name="line.22529"></a>
<span class="sourceLineNo">22530</span> ox = toLong(Math.tanh(ix));<a name="line.22530"></a>
<span class="sourceLineNo">22531</span> oi64data[it.oIndex] = ox;<a name="line.22531"></a>
<span class="sourceLineNo">22532</span> }<a name="line.22532"></a>
<span class="sourceLineNo">22533</span> }<a name="line.22533"></a>
<span class="sourceLineNo">22534</span> break;<a name="line.22534"></a>
<span class="sourceLineNo">22535</span> case Dataset.INT32:<a name="line.22535"></a>
<span class="sourceLineNo">22536</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.22536"></a>
<span class="sourceLineNo">22537</span> if (it.isOutputDouble()) {<a name="line.22537"></a>
<span class="sourceLineNo">22538</span> while (it.hasNext()) {<a name="line.22538"></a>
<span class="sourceLineNo">22539</span> final double ix = it.aDouble;<a name="line.22539"></a>
<span class="sourceLineNo">22540</span> int ox;<a name="line.22540"></a>
<span class="sourceLineNo">22541</span> ox = (int) toLong(Math.tanh(ix));<a name="line.22541"></a>
<span class="sourceLineNo">22542</span> oi32data[it.oIndex] = ox;<a name="line.22542"></a>
<span class="sourceLineNo">22543</span> }<a name="line.22543"></a>
<span class="sourceLineNo">22544</span> } else {<a name="line.22544"></a>
<span class="sourceLineNo">22545</span> while (it.hasNext()) {<a name="line.22545"></a>
<span class="sourceLineNo">22546</span> final long ix = it.aLong;<a name="line.22546"></a>
<span class="sourceLineNo">22547</span> int ox;<a name="line.22547"></a>
<span class="sourceLineNo">22548</span> ox = (int) toLong(Math.tanh(ix));<a name="line.22548"></a>
<span class="sourceLineNo">22549</span> oi32data[it.oIndex] = ox;<a name="line.22549"></a>
<span class="sourceLineNo">22550</span> }<a name="line.22550"></a>
<span class="sourceLineNo">22551</span> }<a name="line.22551"></a>
<span class="sourceLineNo">22552</span> break;<a name="line.22552"></a>
<span class="sourceLineNo">22553</span> case Dataset.ARRAYINT8:<a name="line.22553"></a>
<span class="sourceLineNo">22554</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.22554"></a>
<span class="sourceLineNo">22555</span> if (is == 1) {<a name="line.22555"></a>
<span class="sourceLineNo">22556</span> if (it.isOutputDouble()) {<a name="line.22556"></a>
<span class="sourceLineNo">22557</span> while (it.hasNext()) {<a name="line.22557"></a>
<span class="sourceLineNo">22558</span> final double ix = it.aDouble;<a name="line.22558"></a>
<span class="sourceLineNo">22559</span> byte ox;<a name="line.22559"></a>
<span class="sourceLineNo">22560</span> ox = (byte) toLong(Math.tanh(ix));<a name="line.22560"></a>
<span class="sourceLineNo">22561</span> oai8data[it.oIndex] = ox;<a name="line.22561"></a>
<span class="sourceLineNo">22562</span> }<a name="line.22562"></a>
<span class="sourceLineNo">22563</span> } else {<a name="line.22563"></a>
<span class="sourceLineNo">22564</span> while (it.hasNext()) {<a name="line.22564"></a>
<span class="sourceLineNo">22565</span> final long ix = it.aLong;<a name="line.22565"></a>
<span class="sourceLineNo">22566</span> byte ox;<a name="line.22566"></a>
<span class="sourceLineNo">22567</span> ox = (byte) toLong(Math.tanh(ix));<a name="line.22567"></a>
<span class="sourceLineNo">22568</span> oai8data[it.oIndex] = ox;<a name="line.22568"></a>
<span class="sourceLineNo">22569</span> }<a name="line.22569"></a>
<span class="sourceLineNo">22570</span> }<a name="line.22570"></a>
<span class="sourceLineNo">22571</span> } else if (as == 1) {<a name="line.22571"></a>
<span class="sourceLineNo">22572</span> if (it.isOutputDouble()) {<a name="line.22572"></a>
<span class="sourceLineNo">22573</span> while (it.hasNext()) {<a name="line.22573"></a>
<span class="sourceLineNo">22574</span> final double ix = it.aDouble;<a name="line.22574"></a>
<span class="sourceLineNo">22575</span> byte ox;<a name="line.22575"></a>
<span class="sourceLineNo">22576</span> ox = (byte) toLong(Math.tanh(ix));<a name="line.22576"></a>
<span class="sourceLineNo">22577</span> for (int j = 0; j &lt; is; j++) {<a name="line.22577"></a>
<span class="sourceLineNo">22578</span> oai8data[it.oIndex + j] = ox;<a name="line.22578"></a>
<span class="sourceLineNo">22579</span> }<a name="line.22579"></a>
<span class="sourceLineNo">22580</span> }<a name="line.22580"></a>
<span class="sourceLineNo">22581</span> } else {<a name="line.22581"></a>
<span class="sourceLineNo">22582</span> while (it.hasNext()) {<a name="line.22582"></a>
<span class="sourceLineNo">22583</span> final long ix = it.aLong;<a name="line.22583"></a>
<span class="sourceLineNo">22584</span> byte ox;<a name="line.22584"></a>
<span class="sourceLineNo">22585</span> ox = (byte) toLong(Math.tanh(ix));<a name="line.22585"></a>
<span class="sourceLineNo">22586</span> for (int j = 0; j &lt; is; j++) {<a name="line.22586"></a>
<span class="sourceLineNo">22587</span> oai8data[it.oIndex + j] = ox;<a name="line.22587"></a>
<span class="sourceLineNo">22588</span> }<a name="line.22588"></a>
<span class="sourceLineNo">22589</span> }<a name="line.22589"></a>
<span class="sourceLineNo">22590</span> }<a name="line.22590"></a>
<span class="sourceLineNo">22591</span> } else {<a name="line.22591"></a>
<span class="sourceLineNo">22592</span> if (it.isOutputDouble()) {<a name="line.22592"></a>
<span class="sourceLineNo">22593</span> while (it.hasNext()) {<a name="line.22593"></a>
<span class="sourceLineNo">22594</span> for (int j = 0; j &lt; is; j++) {<a name="line.22594"></a>
<span class="sourceLineNo">22595</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.22595"></a>
<span class="sourceLineNo">22596</span> byte ox;<a name="line.22596"></a>
<span class="sourceLineNo">22597</span> ox = (byte) toLong(Math.tanh(ix));<a name="line.22597"></a>
<span class="sourceLineNo">22598</span> oai8data[it.oIndex + j] = ox;<a name="line.22598"></a>
<span class="sourceLineNo">22599</span> }<a name="line.22599"></a>
<span class="sourceLineNo">22600</span> }<a name="line.22600"></a>
<span class="sourceLineNo">22601</span> } else {<a name="line.22601"></a>
<span class="sourceLineNo">22602</span> while (it.hasNext()) {<a name="line.22602"></a>
<span class="sourceLineNo">22603</span> for (int j = 0; j &lt; is; j++) {<a name="line.22603"></a>
<span class="sourceLineNo">22604</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.22604"></a>
<span class="sourceLineNo">22605</span> byte ox;<a name="line.22605"></a>
<span class="sourceLineNo">22606</span> ox = (byte) toLong(Math.tanh(ix));<a name="line.22606"></a>
<span class="sourceLineNo">22607</span> oai8data[it.oIndex + j] = ox;<a name="line.22607"></a>
<span class="sourceLineNo">22608</span> }<a name="line.22608"></a>
<span class="sourceLineNo">22609</span> }<a name="line.22609"></a>
<span class="sourceLineNo">22610</span> }<a name="line.22610"></a>
<span class="sourceLineNo">22611</span> }<a name="line.22611"></a>
<span class="sourceLineNo">22612</span> break;<a name="line.22612"></a>
<span class="sourceLineNo">22613</span> case Dataset.ARRAYINT16:<a name="line.22613"></a>
<span class="sourceLineNo">22614</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.22614"></a>
<span class="sourceLineNo">22615</span> if (is == 1) {<a name="line.22615"></a>
<span class="sourceLineNo">22616</span> if (it.isOutputDouble()) {<a name="line.22616"></a>
<span class="sourceLineNo">22617</span> while (it.hasNext()) {<a name="line.22617"></a>
<span class="sourceLineNo">22618</span> final double ix = it.aDouble;<a name="line.22618"></a>
<span class="sourceLineNo">22619</span> short ox;<a name="line.22619"></a>
<span class="sourceLineNo">22620</span> ox = (short) toLong(Math.tanh(ix));<a name="line.22620"></a>
<span class="sourceLineNo">22621</span> oai16data[it.oIndex] = ox;<a name="line.22621"></a>
<span class="sourceLineNo">22622</span> }<a name="line.22622"></a>
<span class="sourceLineNo">22623</span> } else {<a name="line.22623"></a>
<span class="sourceLineNo">22624</span> while (it.hasNext()) {<a name="line.22624"></a>
<span class="sourceLineNo">22625</span> final long ix = it.aLong;<a name="line.22625"></a>
<span class="sourceLineNo">22626</span> short ox;<a name="line.22626"></a>
<span class="sourceLineNo">22627</span> ox = (short) toLong(Math.tanh(ix));<a name="line.22627"></a>
<span class="sourceLineNo">22628</span> oai16data[it.oIndex] = ox;<a name="line.22628"></a>
<span class="sourceLineNo">22629</span> }<a name="line.22629"></a>
<span class="sourceLineNo">22630</span> }<a name="line.22630"></a>
<span class="sourceLineNo">22631</span> } else if (as == 1) {<a name="line.22631"></a>
<span class="sourceLineNo">22632</span> if (it.isOutputDouble()) {<a name="line.22632"></a>
<span class="sourceLineNo">22633</span> while (it.hasNext()) {<a name="line.22633"></a>
<span class="sourceLineNo">22634</span> final double ix = it.aDouble;<a name="line.22634"></a>
<span class="sourceLineNo">22635</span> short ox;<a name="line.22635"></a>
<span class="sourceLineNo">22636</span> ox = (short) toLong(Math.tanh(ix));<a name="line.22636"></a>
<span class="sourceLineNo">22637</span> for (int j = 0; j &lt; is; j++) {<a name="line.22637"></a>
<span class="sourceLineNo">22638</span> oai16data[it.oIndex + j] = ox;<a name="line.22638"></a>
<span class="sourceLineNo">22639</span> }<a name="line.22639"></a>
<span class="sourceLineNo">22640</span> }<a name="line.22640"></a>
<span class="sourceLineNo">22641</span> } else {<a name="line.22641"></a>
<span class="sourceLineNo">22642</span> while (it.hasNext()) {<a name="line.22642"></a>
<span class="sourceLineNo">22643</span> final long ix = it.aLong;<a name="line.22643"></a>
<span class="sourceLineNo">22644</span> short ox;<a name="line.22644"></a>
<span class="sourceLineNo">22645</span> ox = (short) toLong(Math.tanh(ix));<a name="line.22645"></a>
<span class="sourceLineNo">22646</span> for (int j = 0; j &lt; is; j++) {<a name="line.22646"></a>
<span class="sourceLineNo">22647</span> oai16data[it.oIndex + j] = ox;<a name="line.22647"></a>
<span class="sourceLineNo">22648</span> }<a name="line.22648"></a>
<span class="sourceLineNo">22649</span> }<a name="line.22649"></a>
<span class="sourceLineNo">22650</span> }<a name="line.22650"></a>
<span class="sourceLineNo">22651</span> } else {<a name="line.22651"></a>
<span class="sourceLineNo">22652</span> if (it.isOutputDouble()) {<a name="line.22652"></a>
<span class="sourceLineNo">22653</span> while (it.hasNext()) {<a name="line.22653"></a>
<span class="sourceLineNo">22654</span> for (int j = 0; j &lt; is; j++) {<a name="line.22654"></a>
<span class="sourceLineNo">22655</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.22655"></a>
<span class="sourceLineNo">22656</span> short ox;<a name="line.22656"></a>
<span class="sourceLineNo">22657</span> ox = (short) toLong(Math.tanh(ix));<a name="line.22657"></a>
<span class="sourceLineNo">22658</span> oai16data[it.oIndex + j] = ox;<a name="line.22658"></a>
<span class="sourceLineNo">22659</span> }<a name="line.22659"></a>
<span class="sourceLineNo">22660</span> }<a name="line.22660"></a>
<span class="sourceLineNo">22661</span> } else {<a name="line.22661"></a>
<span class="sourceLineNo">22662</span> while (it.hasNext()) {<a name="line.22662"></a>
<span class="sourceLineNo">22663</span> for (int j = 0; j &lt; is; j++) {<a name="line.22663"></a>
<span class="sourceLineNo">22664</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.22664"></a>
<span class="sourceLineNo">22665</span> short ox;<a name="line.22665"></a>
<span class="sourceLineNo">22666</span> ox = (short) toLong(Math.tanh(ix));<a name="line.22666"></a>
<span class="sourceLineNo">22667</span> oai16data[it.oIndex + j] = ox;<a name="line.22667"></a>
<span class="sourceLineNo">22668</span> }<a name="line.22668"></a>
<span class="sourceLineNo">22669</span> }<a name="line.22669"></a>
<span class="sourceLineNo">22670</span> }<a name="line.22670"></a>
<span class="sourceLineNo">22671</span> }<a name="line.22671"></a>
<span class="sourceLineNo">22672</span> break;<a name="line.22672"></a>
<span class="sourceLineNo">22673</span> case Dataset.ARRAYINT64:<a name="line.22673"></a>
<span class="sourceLineNo">22674</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.22674"></a>
<span class="sourceLineNo">22675</span> if (is == 1) {<a name="line.22675"></a>
<span class="sourceLineNo">22676</span> if (it.isOutputDouble()) {<a name="line.22676"></a>
<span class="sourceLineNo">22677</span> while (it.hasNext()) {<a name="line.22677"></a>
<span class="sourceLineNo">22678</span> final double ix = it.aDouble;<a name="line.22678"></a>
<span class="sourceLineNo">22679</span> long ox;<a name="line.22679"></a>
<span class="sourceLineNo">22680</span> ox = toLong(Math.tanh(ix));<a name="line.22680"></a>
<span class="sourceLineNo">22681</span> oai64data[it.oIndex] = ox;<a name="line.22681"></a>
<span class="sourceLineNo">22682</span> }<a name="line.22682"></a>
<span class="sourceLineNo">22683</span> } else {<a name="line.22683"></a>
<span class="sourceLineNo">22684</span> while (it.hasNext()) {<a name="line.22684"></a>
<span class="sourceLineNo">22685</span> final long ix = it.aLong;<a name="line.22685"></a>
<span class="sourceLineNo">22686</span> long ox;<a name="line.22686"></a>
<span class="sourceLineNo">22687</span> ox = toLong(Math.tanh(ix));<a name="line.22687"></a>
<span class="sourceLineNo">22688</span> oai64data[it.oIndex] = ox;<a name="line.22688"></a>
<span class="sourceLineNo">22689</span> }<a name="line.22689"></a>
<span class="sourceLineNo">22690</span> }<a name="line.22690"></a>
<span class="sourceLineNo">22691</span> } else if (as == 1) {<a name="line.22691"></a>
<span class="sourceLineNo">22692</span> if (it.isOutputDouble()) {<a name="line.22692"></a>
<span class="sourceLineNo">22693</span> while (it.hasNext()) {<a name="line.22693"></a>
<span class="sourceLineNo">22694</span> final double ix = it.aDouble;<a name="line.22694"></a>
<span class="sourceLineNo">22695</span> long ox;<a name="line.22695"></a>
<span class="sourceLineNo">22696</span> ox = toLong(Math.tanh(ix));<a name="line.22696"></a>
<span class="sourceLineNo">22697</span> for (int j = 0; j &lt; is; j++) {<a name="line.22697"></a>
<span class="sourceLineNo">22698</span> oai64data[it.oIndex + j] = ox;<a name="line.22698"></a>
<span class="sourceLineNo">22699</span> }<a name="line.22699"></a>
<span class="sourceLineNo">22700</span> }<a name="line.22700"></a>
<span class="sourceLineNo">22701</span> } else {<a name="line.22701"></a>
<span class="sourceLineNo">22702</span> while (it.hasNext()) {<a name="line.22702"></a>
<span class="sourceLineNo">22703</span> final long ix = it.aLong;<a name="line.22703"></a>
<span class="sourceLineNo">22704</span> long ox;<a name="line.22704"></a>
<span class="sourceLineNo">22705</span> ox = toLong(Math.tanh(ix));<a name="line.22705"></a>
<span class="sourceLineNo">22706</span> for (int j = 0; j &lt; is; j++) {<a name="line.22706"></a>
<span class="sourceLineNo">22707</span> oai64data[it.oIndex + j] = ox;<a name="line.22707"></a>
<span class="sourceLineNo">22708</span> }<a name="line.22708"></a>
<span class="sourceLineNo">22709</span> }<a name="line.22709"></a>
<span class="sourceLineNo">22710</span> }<a name="line.22710"></a>
<span class="sourceLineNo">22711</span> } else {<a name="line.22711"></a>
<span class="sourceLineNo">22712</span> if (it.isOutputDouble()) {<a name="line.22712"></a>
<span class="sourceLineNo">22713</span> while (it.hasNext()) {<a name="line.22713"></a>
<span class="sourceLineNo">22714</span> for (int j = 0; j &lt; is; j++) {<a name="line.22714"></a>
<span class="sourceLineNo">22715</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.22715"></a>
<span class="sourceLineNo">22716</span> long ox;<a name="line.22716"></a>
<span class="sourceLineNo">22717</span> ox = toLong(Math.tanh(ix));<a name="line.22717"></a>
<span class="sourceLineNo">22718</span> oai64data[it.oIndex + j] = ox;<a name="line.22718"></a>
<span class="sourceLineNo">22719</span> }<a name="line.22719"></a>
<span class="sourceLineNo">22720</span> }<a name="line.22720"></a>
<span class="sourceLineNo">22721</span> } else {<a name="line.22721"></a>
<span class="sourceLineNo">22722</span> while (it.hasNext()) {<a name="line.22722"></a>
<span class="sourceLineNo">22723</span> for (int j = 0; j &lt; is; j++) {<a name="line.22723"></a>
<span class="sourceLineNo">22724</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.22724"></a>
<span class="sourceLineNo">22725</span> long ox;<a name="line.22725"></a>
<span class="sourceLineNo">22726</span> ox = toLong(Math.tanh(ix));<a name="line.22726"></a>
<span class="sourceLineNo">22727</span> oai64data[it.oIndex + j] = ox;<a name="line.22727"></a>
<span class="sourceLineNo">22728</span> }<a name="line.22728"></a>
<span class="sourceLineNo">22729</span> }<a name="line.22729"></a>
<span class="sourceLineNo">22730</span> }<a name="line.22730"></a>
<span class="sourceLineNo">22731</span> }<a name="line.22731"></a>
<span class="sourceLineNo">22732</span> break;<a name="line.22732"></a>
<span class="sourceLineNo">22733</span> case Dataset.ARRAYINT32:<a name="line.22733"></a>
<span class="sourceLineNo">22734</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.22734"></a>
<span class="sourceLineNo">22735</span> if (is == 1) {<a name="line.22735"></a>
<span class="sourceLineNo">22736</span> if (it.isOutputDouble()) {<a name="line.22736"></a>
<span class="sourceLineNo">22737</span> while (it.hasNext()) {<a name="line.22737"></a>
<span class="sourceLineNo">22738</span> final double ix = it.aDouble;<a name="line.22738"></a>
<span class="sourceLineNo">22739</span> int ox;<a name="line.22739"></a>
<span class="sourceLineNo">22740</span> ox = (int) toLong(Math.tanh(ix));<a name="line.22740"></a>
<span class="sourceLineNo">22741</span> oai32data[it.oIndex] = ox;<a name="line.22741"></a>
<span class="sourceLineNo">22742</span> }<a name="line.22742"></a>
<span class="sourceLineNo">22743</span> } else {<a name="line.22743"></a>
<span class="sourceLineNo">22744</span> while (it.hasNext()) {<a name="line.22744"></a>
<span class="sourceLineNo">22745</span> final long ix = it.aLong;<a name="line.22745"></a>
<span class="sourceLineNo">22746</span> int ox;<a name="line.22746"></a>
<span class="sourceLineNo">22747</span> ox = (int) toLong(Math.tanh(ix));<a name="line.22747"></a>
<span class="sourceLineNo">22748</span> oai32data[it.oIndex] = ox;<a name="line.22748"></a>
<span class="sourceLineNo">22749</span> }<a name="line.22749"></a>
<span class="sourceLineNo">22750</span> }<a name="line.22750"></a>
<span class="sourceLineNo">22751</span> } else if (as == 1) {<a name="line.22751"></a>
<span class="sourceLineNo">22752</span> if (it.isOutputDouble()) {<a name="line.22752"></a>
<span class="sourceLineNo">22753</span> while (it.hasNext()) {<a name="line.22753"></a>
<span class="sourceLineNo">22754</span> final double ix = it.aDouble;<a name="line.22754"></a>
<span class="sourceLineNo">22755</span> int ox;<a name="line.22755"></a>
<span class="sourceLineNo">22756</span> ox = (int) toLong(Math.tanh(ix));<a name="line.22756"></a>
<span class="sourceLineNo">22757</span> for (int j = 0; j &lt; is; j++) {<a name="line.22757"></a>
<span class="sourceLineNo">22758</span> oai32data[it.oIndex + j] = ox;<a name="line.22758"></a>
<span class="sourceLineNo">22759</span> }<a name="line.22759"></a>
<span class="sourceLineNo">22760</span> }<a name="line.22760"></a>
<span class="sourceLineNo">22761</span> } else {<a name="line.22761"></a>
<span class="sourceLineNo">22762</span> while (it.hasNext()) {<a name="line.22762"></a>
<span class="sourceLineNo">22763</span> final long ix = it.aLong;<a name="line.22763"></a>
<span class="sourceLineNo">22764</span> int ox;<a name="line.22764"></a>
<span class="sourceLineNo">22765</span> ox = (int) toLong(Math.tanh(ix));<a name="line.22765"></a>
<span class="sourceLineNo">22766</span> for (int j = 0; j &lt; is; j++) {<a name="line.22766"></a>
<span class="sourceLineNo">22767</span> oai32data[it.oIndex + j] = ox;<a name="line.22767"></a>
<span class="sourceLineNo">22768</span> }<a name="line.22768"></a>
<span class="sourceLineNo">22769</span> }<a name="line.22769"></a>
<span class="sourceLineNo">22770</span> }<a name="line.22770"></a>
<span class="sourceLineNo">22771</span> } else {<a name="line.22771"></a>
<span class="sourceLineNo">22772</span> if (it.isOutputDouble()) {<a name="line.22772"></a>
<span class="sourceLineNo">22773</span> while (it.hasNext()) {<a name="line.22773"></a>
<span class="sourceLineNo">22774</span> for (int j = 0; j &lt; is; j++) {<a name="line.22774"></a>
<span class="sourceLineNo">22775</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.22775"></a>
<span class="sourceLineNo">22776</span> int ox;<a name="line.22776"></a>
<span class="sourceLineNo">22777</span> ox = (int) toLong(Math.tanh(ix));<a name="line.22777"></a>
<span class="sourceLineNo">22778</span> oai32data[it.oIndex + j] = ox;<a name="line.22778"></a>
<span class="sourceLineNo">22779</span> }<a name="line.22779"></a>
<span class="sourceLineNo">22780</span> }<a name="line.22780"></a>
<span class="sourceLineNo">22781</span> } else {<a name="line.22781"></a>
<span class="sourceLineNo">22782</span> while (it.hasNext()) {<a name="line.22782"></a>
<span class="sourceLineNo">22783</span> for (int j = 0; j &lt; is; j++) {<a name="line.22783"></a>
<span class="sourceLineNo">22784</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.22784"></a>
<span class="sourceLineNo">22785</span> int ox;<a name="line.22785"></a>
<span class="sourceLineNo">22786</span> ox = (int) toLong(Math.tanh(ix));<a name="line.22786"></a>
<span class="sourceLineNo">22787</span> oai32data[it.oIndex + j] = ox;<a name="line.22787"></a>
<span class="sourceLineNo">22788</span> }<a name="line.22788"></a>
<span class="sourceLineNo">22789</span> }<a name="line.22789"></a>
<span class="sourceLineNo">22790</span> }<a name="line.22790"></a>
<span class="sourceLineNo">22791</span> }<a name="line.22791"></a>
<span class="sourceLineNo">22792</span> break;<a name="line.22792"></a>
<span class="sourceLineNo">22793</span> case Dataset.FLOAT32:<a name="line.22793"></a>
<span class="sourceLineNo">22794</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.22794"></a>
<span class="sourceLineNo">22795</span> if (it.isOutputDouble()) {<a name="line.22795"></a>
<span class="sourceLineNo">22796</span> while (it.hasNext()) {<a name="line.22796"></a>
<span class="sourceLineNo">22797</span> final double ix = it.aDouble;<a name="line.22797"></a>
<span class="sourceLineNo">22798</span> float ox;<a name="line.22798"></a>
<span class="sourceLineNo">22799</span> ox = (float) (Math.tanh(ix));<a name="line.22799"></a>
<span class="sourceLineNo">22800</span> of32data[it.oIndex] = ox;<a name="line.22800"></a>
<span class="sourceLineNo">22801</span> }<a name="line.22801"></a>
<span class="sourceLineNo">22802</span> } else {<a name="line.22802"></a>
<span class="sourceLineNo">22803</span> while (it.hasNext()) {<a name="line.22803"></a>
<span class="sourceLineNo">22804</span> final long ix = it.aLong;<a name="line.22804"></a>
<span class="sourceLineNo">22805</span> float ox;<a name="line.22805"></a>
<span class="sourceLineNo">22806</span> ox = (float) (Math.tanh(ix));<a name="line.22806"></a>
<span class="sourceLineNo">22807</span> of32data[it.oIndex] = ox;<a name="line.22807"></a>
<span class="sourceLineNo">22808</span> }<a name="line.22808"></a>
<span class="sourceLineNo">22809</span> }<a name="line.22809"></a>
<span class="sourceLineNo">22810</span> break;<a name="line.22810"></a>
<span class="sourceLineNo">22811</span> case Dataset.FLOAT64:<a name="line.22811"></a>
<span class="sourceLineNo">22812</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.22812"></a>
<span class="sourceLineNo">22813</span> if (it.isOutputDouble()) {<a name="line.22813"></a>
<span class="sourceLineNo">22814</span> while (it.hasNext()) {<a name="line.22814"></a>
<span class="sourceLineNo">22815</span> final double ix = it.aDouble;<a name="line.22815"></a>
<span class="sourceLineNo">22816</span> double ox;<a name="line.22816"></a>
<span class="sourceLineNo">22817</span> ox = (Math.tanh(ix));<a name="line.22817"></a>
<span class="sourceLineNo">22818</span> of64data[it.oIndex] = ox;<a name="line.22818"></a>
<span class="sourceLineNo">22819</span> }<a name="line.22819"></a>
<span class="sourceLineNo">22820</span> } else {<a name="line.22820"></a>
<span class="sourceLineNo">22821</span> while (it.hasNext()) {<a name="line.22821"></a>
<span class="sourceLineNo">22822</span> final long ix = it.aLong;<a name="line.22822"></a>
<span class="sourceLineNo">22823</span> double ox;<a name="line.22823"></a>
<span class="sourceLineNo">22824</span> ox = (Math.tanh(ix));<a name="line.22824"></a>
<span class="sourceLineNo">22825</span> of64data[it.oIndex] = ox;<a name="line.22825"></a>
<span class="sourceLineNo">22826</span> }<a name="line.22826"></a>
<span class="sourceLineNo">22827</span> }<a name="line.22827"></a>
<span class="sourceLineNo">22828</span> break;<a name="line.22828"></a>
<span class="sourceLineNo">22829</span> case Dataset.ARRAYFLOAT32:<a name="line.22829"></a>
<span class="sourceLineNo">22830</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.22830"></a>
<span class="sourceLineNo">22831</span> if (is == 1) {<a name="line.22831"></a>
<span class="sourceLineNo">22832</span> if (it.isOutputDouble()) {<a name="line.22832"></a>
<span class="sourceLineNo">22833</span> while (it.hasNext()) {<a name="line.22833"></a>
<span class="sourceLineNo">22834</span> final double ix = it.aDouble;<a name="line.22834"></a>
<span class="sourceLineNo">22835</span> float ox;<a name="line.22835"></a>
<span class="sourceLineNo">22836</span> ox = (float) (Math.tanh(ix));<a name="line.22836"></a>
<span class="sourceLineNo">22837</span> oaf32data[it.oIndex] = ox;<a name="line.22837"></a>
<span class="sourceLineNo">22838</span> }<a name="line.22838"></a>
<span class="sourceLineNo">22839</span> } else {<a name="line.22839"></a>
<span class="sourceLineNo">22840</span> while (it.hasNext()) {<a name="line.22840"></a>
<span class="sourceLineNo">22841</span> final long ix = it.aLong;<a name="line.22841"></a>
<span class="sourceLineNo">22842</span> float ox;<a name="line.22842"></a>
<span class="sourceLineNo">22843</span> ox = (float) (Math.tanh(ix));<a name="line.22843"></a>
<span class="sourceLineNo">22844</span> oaf32data[it.oIndex] = ox;<a name="line.22844"></a>
<span class="sourceLineNo">22845</span> }<a name="line.22845"></a>
<span class="sourceLineNo">22846</span> }<a name="line.22846"></a>
<span class="sourceLineNo">22847</span> } else if (as == 1) {<a name="line.22847"></a>
<span class="sourceLineNo">22848</span> if (it.isOutputDouble()) {<a name="line.22848"></a>
<span class="sourceLineNo">22849</span> while (it.hasNext()) {<a name="line.22849"></a>
<span class="sourceLineNo">22850</span> final double ix = it.aDouble;<a name="line.22850"></a>
<span class="sourceLineNo">22851</span> float ox;<a name="line.22851"></a>
<span class="sourceLineNo">22852</span> ox = (float) (Math.tanh(ix));<a name="line.22852"></a>
<span class="sourceLineNo">22853</span> for (int j = 0; j &lt; is; j++) {<a name="line.22853"></a>
<span class="sourceLineNo">22854</span> oaf32data[it.oIndex + j] = ox;<a name="line.22854"></a>
<span class="sourceLineNo">22855</span> }<a name="line.22855"></a>
<span class="sourceLineNo">22856</span> }<a name="line.22856"></a>
<span class="sourceLineNo">22857</span> } else {<a name="line.22857"></a>
<span class="sourceLineNo">22858</span> while (it.hasNext()) {<a name="line.22858"></a>
<span class="sourceLineNo">22859</span> final long ix = it.aLong;<a name="line.22859"></a>
<span class="sourceLineNo">22860</span> float ox;<a name="line.22860"></a>
<span class="sourceLineNo">22861</span> ox = (float) (Math.tanh(ix));<a name="line.22861"></a>
<span class="sourceLineNo">22862</span> for (int j = 0; j &lt; is; j++) {<a name="line.22862"></a>
<span class="sourceLineNo">22863</span> oaf32data[it.oIndex + j] = ox;<a name="line.22863"></a>
<span class="sourceLineNo">22864</span> }<a name="line.22864"></a>
<span class="sourceLineNo">22865</span> }<a name="line.22865"></a>
<span class="sourceLineNo">22866</span> }<a name="line.22866"></a>
<span class="sourceLineNo">22867</span> } else {<a name="line.22867"></a>
<span class="sourceLineNo">22868</span> if (it.isOutputDouble()) {<a name="line.22868"></a>
<span class="sourceLineNo">22869</span> while (it.hasNext()) {<a name="line.22869"></a>
<span class="sourceLineNo">22870</span> for (int j = 0; j &lt; is; j++) {<a name="line.22870"></a>
<span class="sourceLineNo">22871</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.22871"></a>
<span class="sourceLineNo">22872</span> float ox;<a name="line.22872"></a>
<span class="sourceLineNo">22873</span> ox = (float) (Math.tanh(ix));<a name="line.22873"></a>
<span class="sourceLineNo">22874</span> oaf32data[it.oIndex + j] = ox;<a name="line.22874"></a>
<span class="sourceLineNo">22875</span> }<a name="line.22875"></a>
<span class="sourceLineNo">22876</span> }<a name="line.22876"></a>
<span class="sourceLineNo">22877</span> } else {<a name="line.22877"></a>
<span class="sourceLineNo">22878</span> while (it.hasNext()) {<a name="line.22878"></a>
<span class="sourceLineNo">22879</span> for (int j = 0; j &lt; is; j++) {<a name="line.22879"></a>
<span class="sourceLineNo">22880</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.22880"></a>
<span class="sourceLineNo">22881</span> float ox;<a name="line.22881"></a>
<span class="sourceLineNo">22882</span> ox = (float) (Math.tanh(ix));<a name="line.22882"></a>
<span class="sourceLineNo">22883</span> oaf32data[it.oIndex + j] = ox;<a name="line.22883"></a>
<span class="sourceLineNo">22884</span> }<a name="line.22884"></a>
<span class="sourceLineNo">22885</span> }<a name="line.22885"></a>
<span class="sourceLineNo">22886</span> }<a name="line.22886"></a>
<span class="sourceLineNo">22887</span> }<a name="line.22887"></a>
<span class="sourceLineNo">22888</span> break;<a name="line.22888"></a>
<span class="sourceLineNo">22889</span> case Dataset.ARRAYFLOAT64:<a name="line.22889"></a>
<span class="sourceLineNo">22890</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.22890"></a>
<span class="sourceLineNo">22891</span> if (is == 1) {<a name="line.22891"></a>
<span class="sourceLineNo">22892</span> if (it.isOutputDouble()) {<a name="line.22892"></a>
<span class="sourceLineNo">22893</span> while (it.hasNext()) {<a name="line.22893"></a>
<span class="sourceLineNo">22894</span> final double ix = it.aDouble;<a name="line.22894"></a>
<span class="sourceLineNo">22895</span> double ox;<a name="line.22895"></a>
<span class="sourceLineNo">22896</span> ox = (Math.tanh(ix));<a name="line.22896"></a>
<span class="sourceLineNo">22897</span> oaf64data[it.oIndex] = ox;<a name="line.22897"></a>
<span class="sourceLineNo">22898</span> }<a name="line.22898"></a>
<span class="sourceLineNo">22899</span> } else {<a name="line.22899"></a>
<span class="sourceLineNo">22900</span> while (it.hasNext()) {<a name="line.22900"></a>
<span class="sourceLineNo">22901</span> final long ix = it.aLong;<a name="line.22901"></a>
<span class="sourceLineNo">22902</span> double ox;<a name="line.22902"></a>
<span class="sourceLineNo">22903</span> ox = (Math.tanh(ix));<a name="line.22903"></a>
<span class="sourceLineNo">22904</span> oaf64data[it.oIndex] = ox;<a name="line.22904"></a>
<span class="sourceLineNo">22905</span> }<a name="line.22905"></a>
<span class="sourceLineNo">22906</span> }<a name="line.22906"></a>
<span class="sourceLineNo">22907</span> } else if (as == 1) {<a name="line.22907"></a>
<span class="sourceLineNo">22908</span> if (it.isOutputDouble()) {<a name="line.22908"></a>
<span class="sourceLineNo">22909</span> while (it.hasNext()) {<a name="line.22909"></a>
<span class="sourceLineNo">22910</span> final double ix = it.aDouble;<a name="line.22910"></a>
<span class="sourceLineNo">22911</span> double ox;<a name="line.22911"></a>
<span class="sourceLineNo">22912</span> ox = (Math.tanh(ix));<a name="line.22912"></a>
<span class="sourceLineNo">22913</span> for (int j = 0; j &lt; is; j++) {<a name="line.22913"></a>
<span class="sourceLineNo">22914</span> oaf64data[it.oIndex + j] = ox;<a name="line.22914"></a>
<span class="sourceLineNo">22915</span> }<a name="line.22915"></a>
<span class="sourceLineNo">22916</span> }<a name="line.22916"></a>
<span class="sourceLineNo">22917</span> } else {<a name="line.22917"></a>
<span class="sourceLineNo">22918</span> while (it.hasNext()) {<a name="line.22918"></a>
<span class="sourceLineNo">22919</span> final long ix = it.aLong;<a name="line.22919"></a>
<span class="sourceLineNo">22920</span> double ox;<a name="line.22920"></a>
<span class="sourceLineNo">22921</span> ox = (Math.tanh(ix));<a name="line.22921"></a>
<span class="sourceLineNo">22922</span> for (int j = 0; j &lt; is; j++) {<a name="line.22922"></a>
<span class="sourceLineNo">22923</span> oaf64data[it.oIndex + j] = ox;<a name="line.22923"></a>
<span class="sourceLineNo">22924</span> }<a name="line.22924"></a>
<span class="sourceLineNo">22925</span> }<a name="line.22925"></a>
<span class="sourceLineNo">22926</span> }<a name="line.22926"></a>
<span class="sourceLineNo">22927</span> } else {<a name="line.22927"></a>
<span class="sourceLineNo">22928</span> if (it.isOutputDouble()) {<a name="line.22928"></a>
<span class="sourceLineNo">22929</span> while (it.hasNext()) {<a name="line.22929"></a>
<span class="sourceLineNo">22930</span> for (int j = 0; j &lt; is; j++) {<a name="line.22930"></a>
<span class="sourceLineNo">22931</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.22931"></a>
<span class="sourceLineNo">22932</span> double ox;<a name="line.22932"></a>
<span class="sourceLineNo">22933</span> ox = (Math.tanh(ix));<a name="line.22933"></a>
<span class="sourceLineNo">22934</span> oaf64data[it.oIndex + j] = ox;<a name="line.22934"></a>
<span class="sourceLineNo">22935</span> }<a name="line.22935"></a>
<span class="sourceLineNo">22936</span> }<a name="line.22936"></a>
<span class="sourceLineNo">22937</span> } else {<a name="line.22937"></a>
<span class="sourceLineNo">22938</span> while (it.hasNext()) {<a name="line.22938"></a>
<span class="sourceLineNo">22939</span> for (int j = 0; j &lt; is; j++) {<a name="line.22939"></a>
<span class="sourceLineNo">22940</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.22940"></a>
<span class="sourceLineNo">22941</span> double ox;<a name="line.22941"></a>
<span class="sourceLineNo">22942</span> ox = (Math.tanh(ix));<a name="line.22942"></a>
<span class="sourceLineNo">22943</span> oaf64data[it.oIndex + j] = ox;<a name="line.22943"></a>
<span class="sourceLineNo">22944</span> }<a name="line.22944"></a>
<span class="sourceLineNo">22945</span> }<a name="line.22945"></a>
<span class="sourceLineNo">22946</span> }<a name="line.22946"></a>
<span class="sourceLineNo">22947</span> }<a name="line.22947"></a>
<span class="sourceLineNo">22948</span> break;<a name="line.22948"></a>
<span class="sourceLineNo">22949</span> case Dataset.COMPLEX64:<a name="line.22949"></a>
<span class="sourceLineNo">22950</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.22950"></a>
<span class="sourceLineNo">22951</span> if (!da.isComplex()) {<a name="line.22951"></a>
<span class="sourceLineNo">22952</span> if (it.isOutputDouble()) {<a name="line.22952"></a>
<span class="sourceLineNo">22953</span> final double iy = 0;<a name="line.22953"></a>
<span class="sourceLineNo">22954</span> while (it.hasNext()) {<a name="line.22954"></a>
<span class="sourceLineNo">22955</span> final double ix = it.aDouble;<a name="line.22955"></a>
<span class="sourceLineNo">22956</span> float tx;<a name="line.22956"></a>
<span class="sourceLineNo">22957</span> float ty;<a name="line.22957"></a>
<span class="sourceLineNo">22958</span> float tf;<a name="line.22958"></a>
<span class="sourceLineNo">22959</span> float ox;<a name="line.22959"></a>
<span class="sourceLineNo">22960</span> float oy;<a name="line.22960"></a>
<span class="sourceLineNo">22961</span> tx = (float) (2.*ix);<a name="line.22961"></a>
<span class="sourceLineNo">22962</span> ty = (float) (2.*iy);<a name="line.22962"></a>
<span class="sourceLineNo">22963</span> tf = (float) (1./(Math.cos(tx)+Math.cosh(ty)));<a name="line.22963"></a>
<span class="sourceLineNo">22964</span> ox = (float) (tf*Math.sinh(tx));<a name="line.22964"></a>
<span class="sourceLineNo">22965</span> oy = (float) (tf*Math.sin(ty));<a name="line.22965"></a>
<span class="sourceLineNo">22966</span> oc64data[it.oIndex] = ox;<a name="line.22966"></a>
<span class="sourceLineNo">22967</span> oc64data[it.oIndex + 1] = oy;<a name="line.22967"></a>
<span class="sourceLineNo">22968</span> }<a name="line.22968"></a>
<span class="sourceLineNo">22969</span> } else {<a name="line.22969"></a>
<span class="sourceLineNo">22970</span> final long iy = 0;<a name="line.22970"></a>
<span class="sourceLineNo">22971</span> while (it.hasNext()) {<a name="line.22971"></a>
<span class="sourceLineNo">22972</span> final long ix = it.aLong;<a name="line.22972"></a>
<span class="sourceLineNo">22973</span> float tx;<a name="line.22973"></a>
<span class="sourceLineNo">22974</span> float ty;<a name="line.22974"></a>
<span class="sourceLineNo">22975</span> float tf;<a name="line.22975"></a>
<span class="sourceLineNo">22976</span> float ox;<a name="line.22976"></a>
<span class="sourceLineNo">22977</span> float oy;<a name="line.22977"></a>
<span class="sourceLineNo">22978</span> tx = (float) toLong(2.*ix);<a name="line.22978"></a>
<span class="sourceLineNo">22979</span> ty = (float) toLong(2.*iy);<a name="line.22979"></a>
<span class="sourceLineNo">22980</span> tf = (float) toLong(1./(Math.cos(tx)+Math.cosh(ty)));<a name="line.22980"></a>
<span class="sourceLineNo">22981</span> ox = (float) toLong(tf*Math.sinh(tx));<a name="line.22981"></a>
<span class="sourceLineNo">22982</span> oy = (float) toLong(tf*Math.sin(ty));<a name="line.22982"></a>
<span class="sourceLineNo">22983</span> oc64data[it.oIndex] = ox;<a name="line.22983"></a>
<span class="sourceLineNo">22984</span> oc64data[it.oIndex + 1] = oy;<a name="line.22984"></a>
<span class="sourceLineNo">22985</span> }<a name="line.22985"></a>
<span class="sourceLineNo">22986</span> }<a name="line.22986"></a>
<span class="sourceLineNo">22987</span> } else {<a name="line.22987"></a>
<span class="sourceLineNo">22988</span> while (it.hasNext()) {<a name="line.22988"></a>
<span class="sourceLineNo">22989</span> final double ix = it.aDouble;<a name="line.22989"></a>
<span class="sourceLineNo">22990</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.22990"></a>
<span class="sourceLineNo">22991</span> float tx;<a name="line.22991"></a>
<span class="sourceLineNo">22992</span> float ty;<a name="line.22992"></a>
<span class="sourceLineNo">22993</span> float tf;<a name="line.22993"></a>
<span class="sourceLineNo">22994</span> float ox;<a name="line.22994"></a>
<span class="sourceLineNo">22995</span> float oy;<a name="line.22995"></a>
<span class="sourceLineNo">22996</span> tx = (float) (2.*ix);<a name="line.22996"></a>
<span class="sourceLineNo">22997</span> ty = (float) (2.*iy);<a name="line.22997"></a>
<span class="sourceLineNo">22998</span> tf = (float) (1./(Math.cos(tx)+Math.cosh(ty)));<a name="line.22998"></a>
<span class="sourceLineNo">22999</span> ox = (float) (tf*Math.sinh(tx));<a name="line.22999"></a>
<span class="sourceLineNo">23000</span> oy = (float) (tf*Math.sin(ty));<a name="line.23000"></a>
<span class="sourceLineNo">23001</span> oc64data[it.oIndex] = ox;<a name="line.23001"></a>
<span class="sourceLineNo">23002</span> oc64data[it.oIndex + 1] = oy;<a name="line.23002"></a>
<span class="sourceLineNo">23003</span> }<a name="line.23003"></a>
<span class="sourceLineNo">23004</span> }<a name="line.23004"></a>
<span class="sourceLineNo">23005</span> break;<a name="line.23005"></a>
<span class="sourceLineNo">23006</span> case Dataset.COMPLEX128:<a name="line.23006"></a>
<span class="sourceLineNo">23007</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.23007"></a>
<span class="sourceLineNo">23008</span> if (!da.isComplex()) {<a name="line.23008"></a>
<span class="sourceLineNo">23009</span> if (it.isOutputDouble()) {<a name="line.23009"></a>
<span class="sourceLineNo">23010</span> final double iy = 0;<a name="line.23010"></a>
<span class="sourceLineNo">23011</span> while (it.hasNext()) {<a name="line.23011"></a>
<span class="sourceLineNo">23012</span> final double ix = it.aDouble;<a name="line.23012"></a>
<span class="sourceLineNo">23013</span> double tx;<a name="line.23013"></a>
<span class="sourceLineNo">23014</span> double ty;<a name="line.23014"></a>
<span class="sourceLineNo">23015</span> double tf;<a name="line.23015"></a>
<span class="sourceLineNo">23016</span> double ox;<a name="line.23016"></a>
<span class="sourceLineNo">23017</span> double oy;<a name="line.23017"></a>
<span class="sourceLineNo">23018</span> tx = (2.*ix);<a name="line.23018"></a>
<span class="sourceLineNo">23019</span> ty = (2.*iy);<a name="line.23019"></a>
<span class="sourceLineNo">23020</span> tf = (1./(Math.cos(tx)+Math.cosh(ty)));<a name="line.23020"></a>
<span class="sourceLineNo">23021</span> ox = (tf*Math.sinh(tx));<a name="line.23021"></a>
<span class="sourceLineNo">23022</span> oy = (tf*Math.sin(ty));<a name="line.23022"></a>
<span class="sourceLineNo">23023</span> oc128data[it.oIndex] = ox;<a name="line.23023"></a>
<span class="sourceLineNo">23024</span> oc128data[it.oIndex + 1] = oy;<a name="line.23024"></a>
<span class="sourceLineNo">23025</span> }<a name="line.23025"></a>
<span class="sourceLineNo">23026</span> } else {<a name="line.23026"></a>
<span class="sourceLineNo">23027</span> final long iy = 0;<a name="line.23027"></a>
<span class="sourceLineNo">23028</span> while (it.hasNext()) {<a name="line.23028"></a>
<span class="sourceLineNo">23029</span> final long ix = it.aLong;<a name="line.23029"></a>
<span class="sourceLineNo">23030</span> double tx;<a name="line.23030"></a>
<span class="sourceLineNo">23031</span> double ty;<a name="line.23031"></a>
<span class="sourceLineNo">23032</span> double tf;<a name="line.23032"></a>
<span class="sourceLineNo">23033</span> double ox;<a name="line.23033"></a>
<span class="sourceLineNo">23034</span> double oy;<a name="line.23034"></a>
<span class="sourceLineNo">23035</span> tx = (2.*ix);<a name="line.23035"></a>
<span class="sourceLineNo">23036</span> ty = (2.*iy);<a name="line.23036"></a>
<span class="sourceLineNo">23037</span> tf = (double) (1./(Math.cos(tx)+Math.cosh(ty)));<a name="line.23037"></a>
<span class="sourceLineNo">23038</span> ox = (double) (tf*Math.sinh(tx));<a name="line.23038"></a>
<span class="sourceLineNo">23039</span> oy = (double) (tf*Math.sin(ty));<a name="line.23039"></a>
<span class="sourceLineNo">23040</span> oc128data[it.oIndex] = ox;<a name="line.23040"></a>
<span class="sourceLineNo">23041</span> oc128data[it.oIndex + 1] = oy;<a name="line.23041"></a>
<span class="sourceLineNo">23042</span> }<a name="line.23042"></a>
<span class="sourceLineNo">23043</span> }<a name="line.23043"></a>
<span class="sourceLineNo">23044</span> } else {<a name="line.23044"></a>
<span class="sourceLineNo">23045</span> while (it.hasNext()) {<a name="line.23045"></a>
<span class="sourceLineNo">23046</span> final double ix = it.aDouble;<a name="line.23046"></a>
<span class="sourceLineNo">23047</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.23047"></a>
<span class="sourceLineNo">23048</span> double tx;<a name="line.23048"></a>
<span class="sourceLineNo">23049</span> double ty;<a name="line.23049"></a>
<span class="sourceLineNo">23050</span> double tf;<a name="line.23050"></a>
<span class="sourceLineNo">23051</span> double ox;<a name="line.23051"></a>
<span class="sourceLineNo">23052</span> double oy;<a name="line.23052"></a>
<span class="sourceLineNo">23053</span> tx = (2.*ix);<a name="line.23053"></a>
<span class="sourceLineNo">23054</span> ty = (2.*iy);<a name="line.23054"></a>
<span class="sourceLineNo">23055</span> tf = (1./(Math.cos(tx)+Math.cosh(ty)));<a name="line.23055"></a>
<span class="sourceLineNo">23056</span> ox = (tf*Math.sinh(tx));<a name="line.23056"></a>
<span class="sourceLineNo">23057</span> oy = (tf*Math.sin(ty));<a name="line.23057"></a>
<span class="sourceLineNo">23058</span> oc128data[it.oIndex] = ox;<a name="line.23058"></a>
<span class="sourceLineNo">23059</span> oc128data[it.oIndex + 1] = oy;<a name="line.23059"></a>
<span class="sourceLineNo">23060</span> }<a name="line.23060"></a>
<span class="sourceLineNo">23061</span> }<a name="line.23061"></a>
<span class="sourceLineNo">23062</span> break;<a name="line.23062"></a>
<span class="sourceLineNo">23063</span> default:<a name="line.23063"></a>
<span class="sourceLineNo">23064</span> throw new IllegalArgumentException("tanh supports integer, compound integer, real, compound real, complex datasets only");<a name="line.23064"></a>
<span class="sourceLineNo">23065</span> }<a name="line.23065"></a>
<span class="sourceLineNo">23066</span><a name="line.23066"></a>
<span class="sourceLineNo">23067</span> addFunctionName(result, "tanh");<a name="line.23067"></a>
<span class="sourceLineNo">23068</span> return result;<a name="line.23068"></a>
<span class="sourceLineNo">23069</span> }<a name="line.23069"></a>
<span class="sourceLineNo">23070</span><a name="line.23070"></a>
<span class="sourceLineNo">23071</span> /**<a name="line.23071"></a>
<span class="sourceLineNo">23072</span> * arcsinh - evaluate the inverse hyperbolic sine function on each element of the dataset<a name="line.23072"></a>
<span class="sourceLineNo">23073</span> * @param a<a name="line.23073"></a>
<span class="sourceLineNo">23074</span> * @return dataset<a name="line.23074"></a>
<span class="sourceLineNo">23075</span> */<a name="line.23075"></a>
<span class="sourceLineNo">23076</span> public static Dataset arcsinh(final Object a) {<a name="line.23076"></a>
<span class="sourceLineNo">23077</span> return arcsinh(a, null);<a name="line.23077"></a>
<span class="sourceLineNo">23078</span> }<a name="line.23078"></a>
<span class="sourceLineNo">23079</span><a name="line.23079"></a>
<span class="sourceLineNo">23080</span> /**<a name="line.23080"></a>
<span class="sourceLineNo">23081</span> * arcsinh - evaluate the inverse hyperbolic sine function on each element of the dataset<a name="line.23081"></a>
<span class="sourceLineNo">23082</span> * @param a<a name="line.23082"></a>
<span class="sourceLineNo">23083</span> * @param o output can be null - in which case, a new dataset is created<a name="line.23083"></a>
<span class="sourceLineNo">23084</span> * @return dataset<a name="line.23084"></a>
<span class="sourceLineNo">23085</span> */<a name="line.23085"></a>
<span class="sourceLineNo">23086</span> public static Dataset arcsinh(final Object a, final Dataset o) {<a name="line.23086"></a>
<span class="sourceLineNo">23087</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.23087"></a>
<span class="sourceLineNo">23088</span> SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true);<a name="line.23088"></a>
<span class="sourceLineNo">23089</span> final Dataset result = it.getOutput();<a name="line.23089"></a>
<span class="sourceLineNo">23090</span> if (!result.isComplex()) {<a name="line.23090"></a>
<span class="sourceLineNo">23091</span> if (da.isComplex()) {<a name="line.23091"></a>
<span class="sourceLineNo">23092</span> da = da.getRealView();<a name="line.23092"></a>
<span class="sourceLineNo">23093</span> it = new SingleInputBroadcastIterator(da, result, true);<a name="line.23093"></a>
<span class="sourceLineNo">23094</span> }<a name="line.23094"></a>
<span class="sourceLineNo">23095</span> }<a name="line.23095"></a>
<span class="sourceLineNo">23096</span> final int is = result.getElementsPerItem();<a name="line.23096"></a>
<span class="sourceLineNo">23097</span> final int as = da.getElementsPerItem();<a name="line.23097"></a>
<span class="sourceLineNo">23098</span> final int dt = result.getDType();<a name="line.23098"></a>
<span class="sourceLineNo">23099</span><a name="line.23099"></a>
<span class="sourceLineNo">23100</span> switch(dt) {<a name="line.23100"></a>
<span class="sourceLineNo">23101</span> case Dataset.INT8:<a name="line.23101"></a>
<span class="sourceLineNo">23102</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.23102"></a>
<span class="sourceLineNo">23103</span> if (it.isOutputDouble()) {<a name="line.23103"></a>
<span class="sourceLineNo">23104</span> while (it.hasNext()) {<a name="line.23104"></a>
<span class="sourceLineNo">23105</span> final double ix = it.aDouble;<a name="line.23105"></a>
<span class="sourceLineNo">23106</span> byte ox;<a name="line.23106"></a>
<span class="sourceLineNo">23107</span> ox = (byte) toLong(Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23107"></a>
<span class="sourceLineNo">23108</span> oi8data[it.oIndex] = ox;<a name="line.23108"></a>
<span class="sourceLineNo">23109</span> }<a name="line.23109"></a>
<span class="sourceLineNo">23110</span> } else {<a name="line.23110"></a>
<span class="sourceLineNo">23111</span> while (it.hasNext()) {<a name="line.23111"></a>
<span class="sourceLineNo">23112</span> final long ix = it.aLong;<a name="line.23112"></a>
<span class="sourceLineNo">23113</span> byte ox;<a name="line.23113"></a>
<span class="sourceLineNo">23114</span> ox = (byte) toLong(Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23114"></a>
<span class="sourceLineNo">23115</span> oi8data[it.oIndex] = ox;<a name="line.23115"></a>
<span class="sourceLineNo">23116</span> }<a name="line.23116"></a>
<span class="sourceLineNo">23117</span> }<a name="line.23117"></a>
<span class="sourceLineNo">23118</span> break;<a name="line.23118"></a>
<span class="sourceLineNo">23119</span> case Dataset.INT16:<a name="line.23119"></a>
<span class="sourceLineNo">23120</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.23120"></a>
<span class="sourceLineNo">23121</span> if (it.isOutputDouble()) {<a name="line.23121"></a>
<span class="sourceLineNo">23122</span> while (it.hasNext()) {<a name="line.23122"></a>
<span class="sourceLineNo">23123</span> final double ix = it.aDouble;<a name="line.23123"></a>
<span class="sourceLineNo">23124</span> short ox;<a name="line.23124"></a>
<span class="sourceLineNo">23125</span> ox = (short) toLong(Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23125"></a>
<span class="sourceLineNo">23126</span> oi16data[it.oIndex] = ox;<a name="line.23126"></a>
<span class="sourceLineNo">23127</span> }<a name="line.23127"></a>
<span class="sourceLineNo">23128</span> } else {<a name="line.23128"></a>
<span class="sourceLineNo">23129</span> while (it.hasNext()) {<a name="line.23129"></a>
<span class="sourceLineNo">23130</span> final long ix = it.aLong;<a name="line.23130"></a>
<span class="sourceLineNo">23131</span> short ox;<a name="line.23131"></a>
<span class="sourceLineNo">23132</span> ox = (short) toLong(Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23132"></a>
<span class="sourceLineNo">23133</span> oi16data[it.oIndex] = ox;<a name="line.23133"></a>
<span class="sourceLineNo">23134</span> }<a name="line.23134"></a>
<span class="sourceLineNo">23135</span> }<a name="line.23135"></a>
<span class="sourceLineNo">23136</span> break;<a name="line.23136"></a>
<span class="sourceLineNo">23137</span> case Dataset.INT64:<a name="line.23137"></a>
<span class="sourceLineNo">23138</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.23138"></a>
<span class="sourceLineNo">23139</span> if (it.isOutputDouble()) {<a name="line.23139"></a>
<span class="sourceLineNo">23140</span> while (it.hasNext()) {<a name="line.23140"></a>
<span class="sourceLineNo">23141</span> final double ix = it.aDouble;<a name="line.23141"></a>
<span class="sourceLineNo">23142</span> long ox;<a name="line.23142"></a>
<span class="sourceLineNo">23143</span> ox = toLong(Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23143"></a>
<span class="sourceLineNo">23144</span> oi64data[it.oIndex] = ox;<a name="line.23144"></a>
<span class="sourceLineNo">23145</span> }<a name="line.23145"></a>
<span class="sourceLineNo">23146</span> } else {<a name="line.23146"></a>
<span class="sourceLineNo">23147</span> while (it.hasNext()) {<a name="line.23147"></a>
<span class="sourceLineNo">23148</span> final long ix = it.aLong;<a name="line.23148"></a>
<span class="sourceLineNo">23149</span> long ox;<a name="line.23149"></a>
<span class="sourceLineNo">23150</span> ox = toLong(Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23150"></a>
<span class="sourceLineNo">23151</span> oi64data[it.oIndex] = ox;<a name="line.23151"></a>
<span class="sourceLineNo">23152</span> }<a name="line.23152"></a>
<span class="sourceLineNo">23153</span> }<a name="line.23153"></a>
<span class="sourceLineNo">23154</span> break;<a name="line.23154"></a>
<span class="sourceLineNo">23155</span> case Dataset.INT32:<a name="line.23155"></a>
<span class="sourceLineNo">23156</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.23156"></a>
<span class="sourceLineNo">23157</span> if (it.isOutputDouble()) {<a name="line.23157"></a>
<span class="sourceLineNo">23158</span> while (it.hasNext()) {<a name="line.23158"></a>
<span class="sourceLineNo">23159</span> final double ix = it.aDouble;<a name="line.23159"></a>
<span class="sourceLineNo">23160</span> int ox;<a name="line.23160"></a>
<span class="sourceLineNo">23161</span> ox = (int) toLong(Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23161"></a>
<span class="sourceLineNo">23162</span> oi32data[it.oIndex] = ox;<a name="line.23162"></a>
<span class="sourceLineNo">23163</span> }<a name="line.23163"></a>
<span class="sourceLineNo">23164</span> } else {<a name="line.23164"></a>
<span class="sourceLineNo">23165</span> while (it.hasNext()) {<a name="line.23165"></a>
<span class="sourceLineNo">23166</span> final long ix = it.aLong;<a name="line.23166"></a>
<span class="sourceLineNo">23167</span> int ox;<a name="line.23167"></a>
<span class="sourceLineNo">23168</span> ox = (int) toLong(Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23168"></a>
<span class="sourceLineNo">23169</span> oi32data[it.oIndex] = ox;<a name="line.23169"></a>
<span class="sourceLineNo">23170</span> }<a name="line.23170"></a>
<span class="sourceLineNo">23171</span> }<a name="line.23171"></a>
<span class="sourceLineNo">23172</span> break;<a name="line.23172"></a>
<span class="sourceLineNo">23173</span> case Dataset.ARRAYINT8:<a name="line.23173"></a>
<span class="sourceLineNo">23174</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.23174"></a>
<span class="sourceLineNo">23175</span> if (is == 1) {<a name="line.23175"></a>
<span class="sourceLineNo">23176</span> if (it.isOutputDouble()) {<a name="line.23176"></a>
<span class="sourceLineNo">23177</span> while (it.hasNext()) {<a name="line.23177"></a>
<span class="sourceLineNo">23178</span> final double ix = it.aDouble;<a name="line.23178"></a>
<span class="sourceLineNo">23179</span> byte ox;<a name="line.23179"></a>
<span class="sourceLineNo">23180</span> ox = (byte) toLong(Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23180"></a>
<span class="sourceLineNo">23181</span> oai8data[it.oIndex] = ox;<a name="line.23181"></a>
<span class="sourceLineNo">23182</span> }<a name="line.23182"></a>
<span class="sourceLineNo">23183</span> } else {<a name="line.23183"></a>
<span class="sourceLineNo">23184</span> while (it.hasNext()) {<a name="line.23184"></a>
<span class="sourceLineNo">23185</span> final long ix = it.aLong;<a name="line.23185"></a>
<span class="sourceLineNo">23186</span> byte ox;<a name="line.23186"></a>
<span class="sourceLineNo">23187</span> ox = (byte) toLong(Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23187"></a>
<span class="sourceLineNo">23188</span> oai8data[it.oIndex] = ox;<a name="line.23188"></a>
<span class="sourceLineNo">23189</span> }<a name="line.23189"></a>
<span class="sourceLineNo">23190</span> }<a name="line.23190"></a>
<span class="sourceLineNo">23191</span> } else if (as == 1) {<a name="line.23191"></a>
<span class="sourceLineNo">23192</span> if (it.isOutputDouble()) {<a name="line.23192"></a>
<span class="sourceLineNo">23193</span> while (it.hasNext()) {<a name="line.23193"></a>
<span class="sourceLineNo">23194</span> final double ix = it.aDouble;<a name="line.23194"></a>
<span class="sourceLineNo">23195</span> byte ox;<a name="line.23195"></a>
<span class="sourceLineNo">23196</span> ox = (byte) toLong(Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23196"></a>
<span class="sourceLineNo">23197</span> for (int j = 0; j &lt; is; j++) {<a name="line.23197"></a>
<span class="sourceLineNo">23198</span> oai8data[it.oIndex + j] = ox;<a name="line.23198"></a>
<span class="sourceLineNo">23199</span> }<a name="line.23199"></a>
<span class="sourceLineNo">23200</span> }<a name="line.23200"></a>
<span class="sourceLineNo">23201</span> } else {<a name="line.23201"></a>
<span class="sourceLineNo">23202</span> while (it.hasNext()) {<a name="line.23202"></a>
<span class="sourceLineNo">23203</span> final long ix = it.aLong;<a name="line.23203"></a>
<span class="sourceLineNo">23204</span> byte ox;<a name="line.23204"></a>
<span class="sourceLineNo">23205</span> ox = (byte) toLong(Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23205"></a>
<span class="sourceLineNo">23206</span> for (int j = 0; j &lt; is; j++) {<a name="line.23206"></a>
<span class="sourceLineNo">23207</span> oai8data[it.oIndex + j] = ox;<a name="line.23207"></a>
<span class="sourceLineNo">23208</span> }<a name="line.23208"></a>
<span class="sourceLineNo">23209</span> }<a name="line.23209"></a>
<span class="sourceLineNo">23210</span> }<a name="line.23210"></a>
<span class="sourceLineNo">23211</span> } else {<a name="line.23211"></a>
<span class="sourceLineNo">23212</span> if (it.isOutputDouble()) {<a name="line.23212"></a>
<span class="sourceLineNo">23213</span> while (it.hasNext()) {<a name="line.23213"></a>
<span class="sourceLineNo">23214</span> for (int j = 0; j &lt; is; j++) {<a name="line.23214"></a>
<span class="sourceLineNo">23215</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.23215"></a>
<span class="sourceLineNo">23216</span> byte ox;<a name="line.23216"></a>
<span class="sourceLineNo">23217</span> ox = (byte) toLong(Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23217"></a>
<span class="sourceLineNo">23218</span> oai8data[it.oIndex + j] = ox;<a name="line.23218"></a>
<span class="sourceLineNo">23219</span> }<a name="line.23219"></a>
<span class="sourceLineNo">23220</span> }<a name="line.23220"></a>
<span class="sourceLineNo">23221</span> } else {<a name="line.23221"></a>
<span class="sourceLineNo">23222</span> while (it.hasNext()) {<a name="line.23222"></a>
<span class="sourceLineNo">23223</span> for (int j = 0; j &lt; is; j++) {<a name="line.23223"></a>
<span class="sourceLineNo">23224</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.23224"></a>
<span class="sourceLineNo">23225</span> byte ox;<a name="line.23225"></a>
<span class="sourceLineNo">23226</span> ox = (byte) toLong(Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23226"></a>
<span class="sourceLineNo">23227</span> oai8data[it.oIndex + j] = ox;<a name="line.23227"></a>
<span class="sourceLineNo">23228</span> }<a name="line.23228"></a>
<span class="sourceLineNo">23229</span> }<a name="line.23229"></a>
<span class="sourceLineNo">23230</span> }<a name="line.23230"></a>
<span class="sourceLineNo">23231</span> }<a name="line.23231"></a>
<span class="sourceLineNo">23232</span> break;<a name="line.23232"></a>
<span class="sourceLineNo">23233</span> case Dataset.ARRAYINT16:<a name="line.23233"></a>
<span class="sourceLineNo">23234</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.23234"></a>
<span class="sourceLineNo">23235</span> if (is == 1) {<a name="line.23235"></a>
<span class="sourceLineNo">23236</span> if (it.isOutputDouble()) {<a name="line.23236"></a>
<span class="sourceLineNo">23237</span> while (it.hasNext()) {<a name="line.23237"></a>
<span class="sourceLineNo">23238</span> final double ix = it.aDouble;<a name="line.23238"></a>
<span class="sourceLineNo">23239</span> short ox;<a name="line.23239"></a>
<span class="sourceLineNo">23240</span> ox = (short) toLong(Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23240"></a>
<span class="sourceLineNo">23241</span> oai16data[it.oIndex] = ox;<a name="line.23241"></a>
<span class="sourceLineNo">23242</span> }<a name="line.23242"></a>
<span class="sourceLineNo">23243</span> } else {<a name="line.23243"></a>
<span class="sourceLineNo">23244</span> while (it.hasNext()) {<a name="line.23244"></a>
<span class="sourceLineNo">23245</span> final long ix = it.aLong;<a name="line.23245"></a>
<span class="sourceLineNo">23246</span> short ox;<a name="line.23246"></a>
<span class="sourceLineNo">23247</span> ox = (short) toLong(Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23247"></a>
<span class="sourceLineNo">23248</span> oai16data[it.oIndex] = ox;<a name="line.23248"></a>
<span class="sourceLineNo">23249</span> }<a name="line.23249"></a>
<span class="sourceLineNo">23250</span> }<a name="line.23250"></a>
<span class="sourceLineNo">23251</span> } else if (as == 1) {<a name="line.23251"></a>
<span class="sourceLineNo">23252</span> if (it.isOutputDouble()) {<a name="line.23252"></a>
<span class="sourceLineNo">23253</span> while (it.hasNext()) {<a name="line.23253"></a>
<span class="sourceLineNo">23254</span> final double ix = it.aDouble;<a name="line.23254"></a>
<span class="sourceLineNo">23255</span> short ox;<a name="line.23255"></a>
<span class="sourceLineNo">23256</span> ox = (short) toLong(Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23256"></a>
<span class="sourceLineNo">23257</span> for (int j = 0; j &lt; is; j++) {<a name="line.23257"></a>
<span class="sourceLineNo">23258</span> oai16data[it.oIndex + j] = ox;<a name="line.23258"></a>
<span class="sourceLineNo">23259</span> }<a name="line.23259"></a>
<span class="sourceLineNo">23260</span> }<a name="line.23260"></a>
<span class="sourceLineNo">23261</span> } else {<a name="line.23261"></a>
<span class="sourceLineNo">23262</span> while (it.hasNext()) {<a name="line.23262"></a>
<span class="sourceLineNo">23263</span> final long ix = it.aLong;<a name="line.23263"></a>
<span class="sourceLineNo">23264</span> short ox;<a name="line.23264"></a>
<span class="sourceLineNo">23265</span> ox = (short) toLong(Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23265"></a>
<span class="sourceLineNo">23266</span> for (int j = 0; j &lt; is; j++) {<a name="line.23266"></a>
<span class="sourceLineNo">23267</span> oai16data[it.oIndex + j] = ox;<a name="line.23267"></a>
<span class="sourceLineNo">23268</span> }<a name="line.23268"></a>
<span class="sourceLineNo">23269</span> }<a name="line.23269"></a>
<span class="sourceLineNo">23270</span> }<a name="line.23270"></a>
<span class="sourceLineNo">23271</span> } else {<a name="line.23271"></a>
<span class="sourceLineNo">23272</span> if (it.isOutputDouble()) {<a name="line.23272"></a>
<span class="sourceLineNo">23273</span> while (it.hasNext()) {<a name="line.23273"></a>
<span class="sourceLineNo">23274</span> for (int j = 0; j &lt; is; j++) {<a name="line.23274"></a>
<span class="sourceLineNo">23275</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.23275"></a>
<span class="sourceLineNo">23276</span> short ox;<a name="line.23276"></a>
<span class="sourceLineNo">23277</span> ox = (short) toLong(Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23277"></a>
<span class="sourceLineNo">23278</span> oai16data[it.oIndex + j] = ox;<a name="line.23278"></a>
<span class="sourceLineNo">23279</span> }<a name="line.23279"></a>
<span class="sourceLineNo">23280</span> }<a name="line.23280"></a>
<span class="sourceLineNo">23281</span> } else {<a name="line.23281"></a>
<span class="sourceLineNo">23282</span> while (it.hasNext()) {<a name="line.23282"></a>
<span class="sourceLineNo">23283</span> for (int j = 0; j &lt; is; j++) {<a name="line.23283"></a>
<span class="sourceLineNo">23284</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.23284"></a>
<span class="sourceLineNo">23285</span> short ox;<a name="line.23285"></a>
<span class="sourceLineNo">23286</span> ox = (short) toLong(Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23286"></a>
<span class="sourceLineNo">23287</span> oai16data[it.oIndex + j] = ox;<a name="line.23287"></a>
<span class="sourceLineNo">23288</span> }<a name="line.23288"></a>
<span class="sourceLineNo">23289</span> }<a name="line.23289"></a>
<span class="sourceLineNo">23290</span> }<a name="line.23290"></a>
<span class="sourceLineNo">23291</span> }<a name="line.23291"></a>
<span class="sourceLineNo">23292</span> break;<a name="line.23292"></a>
<span class="sourceLineNo">23293</span> case Dataset.ARRAYINT64:<a name="line.23293"></a>
<span class="sourceLineNo">23294</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.23294"></a>
<span class="sourceLineNo">23295</span> if (is == 1) {<a name="line.23295"></a>
<span class="sourceLineNo">23296</span> if (it.isOutputDouble()) {<a name="line.23296"></a>
<span class="sourceLineNo">23297</span> while (it.hasNext()) {<a name="line.23297"></a>
<span class="sourceLineNo">23298</span> final double ix = it.aDouble;<a name="line.23298"></a>
<span class="sourceLineNo">23299</span> long ox;<a name="line.23299"></a>
<span class="sourceLineNo">23300</span> ox = toLong(Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23300"></a>
<span class="sourceLineNo">23301</span> oai64data[it.oIndex] = ox;<a name="line.23301"></a>
<span class="sourceLineNo">23302</span> }<a name="line.23302"></a>
<span class="sourceLineNo">23303</span> } else {<a name="line.23303"></a>
<span class="sourceLineNo">23304</span> while (it.hasNext()) {<a name="line.23304"></a>
<span class="sourceLineNo">23305</span> final long ix = it.aLong;<a name="line.23305"></a>
<span class="sourceLineNo">23306</span> long ox;<a name="line.23306"></a>
<span class="sourceLineNo">23307</span> ox = toLong(Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23307"></a>
<span class="sourceLineNo">23308</span> oai64data[it.oIndex] = ox;<a name="line.23308"></a>
<span class="sourceLineNo">23309</span> }<a name="line.23309"></a>
<span class="sourceLineNo">23310</span> }<a name="line.23310"></a>
<span class="sourceLineNo">23311</span> } else if (as == 1) {<a name="line.23311"></a>
<span class="sourceLineNo">23312</span> if (it.isOutputDouble()) {<a name="line.23312"></a>
<span class="sourceLineNo">23313</span> while (it.hasNext()) {<a name="line.23313"></a>
<span class="sourceLineNo">23314</span> final double ix = it.aDouble;<a name="line.23314"></a>
<span class="sourceLineNo">23315</span> long ox;<a name="line.23315"></a>
<span class="sourceLineNo">23316</span> ox = toLong(Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23316"></a>
<span class="sourceLineNo">23317</span> for (int j = 0; j &lt; is; j++) {<a name="line.23317"></a>
<span class="sourceLineNo">23318</span> oai64data[it.oIndex + j] = ox;<a name="line.23318"></a>
<span class="sourceLineNo">23319</span> }<a name="line.23319"></a>
<span class="sourceLineNo">23320</span> }<a name="line.23320"></a>
<span class="sourceLineNo">23321</span> } else {<a name="line.23321"></a>
<span class="sourceLineNo">23322</span> while (it.hasNext()) {<a name="line.23322"></a>
<span class="sourceLineNo">23323</span> final long ix = it.aLong;<a name="line.23323"></a>
<span class="sourceLineNo">23324</span> long ox;<a name="line.23324"></a>
<span class="sourceLineNo">23325</span> ox = toLong(Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23325"></a>
<span class="sourceLineNo">23326</span> for (int j = 0; j &lt; is; j++) {<a name="line.23326"></a>
<span class="sourceLineNo">23327</span> oai64data[it.oIndex + j] = ox;<a name="line.23327"></a>
<span class="sourceLineNo">23328</span> }<a name="line.23328"></a>
<span class="sourceLineNo">23329</span> }<a name="line.23329"></a>
<span class="sourceLineNo">23330</span> }<a name="line.23330"></a>
<span class="sourceLineNo">23331</span> } else {<a name="line.23331"></a>
<span class="sourceLineNo">23332</span> if (it.isOutputDouble()) {<a name="line.23332"></a>
<span class="sourceLineNo">23333</span> while (it.hasNext()) {<a name="line.23333"></a>
<span class="sourceLineNo">23334</span> for (int j = 0; j &lt; is; j++) {<a name="line.23334"></a>
<span class="sourceLineNo">23335</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.23335"></a>
<span class="sourceLineNo">23336</span> long ox;<a name="line.23336"></a>
<span class="sourceLineNo">23337</span> ox = toLong(Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23337"></a>
<span class="sourceLineNo">23338</span> oai64data[it.oIndex + j] = ox;<a name="line.23338"></a>
<span class="sourceLineNo">23339</span> }<a name="line.23339"></a>
<span class="sourceLineNo">23340</span> }<a name="line.23340"></a>
<span class="sourceLineNo">23341</span> } else {<a name="line.23341"></a>
<span class="sourceLineNo">23342</span> while (it.hasNext()) {<a name="line.23342"></a>
<span class="sourceLineNo">23343</span> for (int j = 0; j &lt; is; j++) {<a name="line.23343"></a>
<span class="sourceLineNo">23344</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.23344"></a>
<span class="sourceLineNo">23345</span> long ox;<a name="line.23345"></a>
<span class="sourceLineNo">23346</span> ox = toLong(Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23346"></a>
<span class="sourceLineNo">23347</span> oai64data[it.oIndex + j] = ox;<a name="line.23347"></a>
<span class="sourceLineNo">23348</span> }<a name="line.23348"></a>
<span class="sourceLineNo">23349</span> }<a name="line.23349"></a>
<span class="sourceLineNo">23350</span> }<a name="line.23350"></a>
<span class="sourceLineNo">23351</span> }<a name="line.23351"></a>
<span class="sourceLineNo">23352</span> break;<a name="line.23352"></a>
<span class="sourceLineNo">23353</span> case Dataset.ARRAYINT32:<a name="line.23353"></a>
<span class="sourceLineNo">23354</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.23354"></a>
<span class="sourceLineNo">23355</span> if (is == 1) {<a name="line.23355"></a>
<span class="sourceLineNo">23356</span> if (it.isOutputDouble()) {<a name="line.23356"></a>
<span class="sourceLineNo">23357</span> while (it.hasNext()) {<a name="line.23357"></a>
<span class="sourceLineNo">23358</span> final double ix = it.aDouble;<a name="line.23358"></a>
<span class="sourceLineNo">23359</span> int ox;<a name="line.23359"></a>
<span class="sourceLineNo">23360</span> ox = (int) toLong(Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23360"></a>
<span class="sourceLineNo">23361</span> oai32data[it.oIndex] = ox;<a name="line.23361"></a>
<span class="sourceLineNo">23362</span> }<a name="line.23362"></a>
<span class="sourceLineNo">23363</span> } else {<a name="line.23363"></a>
<span class="sourceLineNo">23364</span> while (it.hasNext()) {<a name="line.23364"></a>
<span class="sourceLineNo">23365</span> final long ix = it.aLong;<a name="line.23365"></a>
<span class="sourceLineNo">23366</span> int ox;<a name="line.23366"></a>
<span class="sourceLineNo">23367</span> ox = (int) toLong(Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23367"></a>
<span class="sourceLineNo">23368</span> oai32data[it.oIndex] = ox;<a name="line.23368"></a>
<span class="sourceLineNo">23369</span> }<a name="line.23369"></a>
<span class="sourceLineNo">23370</span> }<a name="line.23370"></a>
<span class="sourceLineNo">23371</span> } else if (as == 1) {<a name="line.23371"></a>
<span class="sourceLineNo">23372</span> if (it.isOutputDouble()) {<a name="line.23372"></a>
<span class="sourceLineNo">23373</span> while (it.hasNext()) {<a name="line.23373"></a>
<span class="sourceLineNo">23374</span> final double ix = it.aDouble;<a name="line.23374"></a>
<span class="sourceLineNo">23375</span> int ox;<a name="line.23375"></a>
<span class="sourceLineNo">23376</span> ox = (int) toLong(Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23376"></a>
<span class="sourceLineNo">23377</span> for (int j = 0; j &lt; is; j++) {<a name="line.23377"></a>
<span class="sourceLineNo">23378</span> oai32data[it.oIndex + j] = ox;<a name="line.23378"></a>
<span class="sourceLineNo">23379</span> }<a name="line.23379"></a>
<span class="sourceLineNo">23380</span> }<a name="line.23380"></a>
<span class="sourceLineNo">23381</span> } else {<a name="line.23381"></a>
<span class="sourceLineNo">23382</span> while (it.hasNext()) {<a name="line.23382"></a>
<span class="sourceLineNo">23383</span> final long ix = it.aLong;<a name="line.23383"></a>
<span class="sourceLineNo">23384</span> int ox;<a name="line.23384"></a>
<span class="sourceLineNo">23385</span> ox = (int) toLong(Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23385"></a>
<span class="sourceLineNo">23386</span> for (int j = 0; j &lt; is; j++) {<a name="line.23386"></a>
<span class="sourceLineNo">23387</span> oai32data[it.oIndex + j] = ox;<a name="line.23387"></a>
<span class="sourceLineNo">23388</span> }<a name="line.23388"></a>
<span class="sourceLineNo">23389</span> }<a name="line.23389"></a>
<span class="sourceLineNo">23390</span> }<a name="line.23390"></a>
<span class="sourceLineNo">23391</span> } else {<a name="line.23391"></a>
<span class="sourceLineNo">23392</span> if (it.isOutputDouble()) {<a name="line.23392"></a>
<span class="sourceLineNo">23393</span> while (it.hasNext()) {<a name="line.23393"></a>
<span class="sourceLineNo">23394</span> for (int j = 0; j &lt; is; j++) {<a name="line.23394"></a>
<span class="sourceLineNo">23395</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.23395"></a>
<span class="sourceLineNo">23396</span> int ox;<a name="line.23396"></a>
<span class="sourceLineNo">23397</span> ox = (int) toLong(Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23397"></a>
<span class="sourceLineNo">23398</span> oai32data[it.oIndex + j] = ox;<a name="line.23398"></a>
<span class="sourceLineNo">23399</span> }<a name="line.23399"></a>
<span class="sourceLineNo">23400</span> }<a name="line.23400"></a>
<span class="sourceLineNo">23401</span> } else {<a name="line.23401"></a>
<span class="sourceLineNo">23402</span> while (it.hasNext()) {<a name="line.23402"></a>
<span class="sourceLineNo">23403</span> for (int j = 0; j &lt; is; j++) {<a name="line.23403"></a>
<span class="sourceLineNo">23404</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.23404"></a>
<span class="sourceLineNo">23405</span> int ox;<a name="line.23405"></a>
<span class="sourceLineNo">23406</span> ox = (int) toLong(Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23406"></a>
<span class="sourceLineNo">23407</span> oai32data[it.oIndex + j] = ox;<a name="line.23407"></a>
<span class="sourceLineNo">23408</span> }<a name="line.23408"></a>
<span class="sourceLineNo">23409</span> }<a name="line.23409"></a>
<span class="sourceLineNo">23410</span> }<a name="line.23410"></a>
<span class="sourceLineNo">23411</span> }<a name="line.23411"></a>
<span class="sourceLineNo">23412</span> break;<a name="line.23412"></a>
<span class="sourceLineNo">23413</span> case Dataset.FLOAT32:<a name="line.23413"></a>
<span class="sourceLineNo">23414</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.23414"></a>
<span class="sourceLineNo">23415</span> if (it.isOutputDouble()) {<a name="line.23415"></a>
<span class="sourceLineNo">23416</span> while (it.hasNext()) {<a name="line.23416"></a>
<span class="sourceLineNo">23417</span> final double ix = it.aDouble;<a name="line.23417"></a>
<span class="sourceLineNo">23418</span> float ox;<a name="line.23418"></a>
<span class="sourceLineNo">23419</span> ox = (float) (Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23419"></a>
<span class="sourceLineNo">23420</span> of32data[it.oIndex] = ox;<a name="line.23420"></a>
<span class="sourceLineNo">23421</span> }<a name="line.23421"></a>
<span class="sourceLineNo">23422</span> } else {<a name="line.23422"></a>
<span class="sourceLineNo">23423</span> while (it.hasNext()) {<a name="line.23423"></a>
<span class="sourceLineNo">23424</span> final long ix = it.aLong;<a name="line.23424"></a>
<span class="sourceLineNo">23425</span> float ox;<a name="line.23425"></a>
<span class="sourceLineNo">23426</span> ox = (float) (Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23426"></a>
<span class="sourceLineNo">23427</span> of32data[it.oIndex] = ox;<a name="line.23427"></a>
<span class="sourceLineNo">23428</span> }<a name="line.23428"></a>
<span class="sourceLineNo">23429</span> }<a name="line.23429"></a>
<span class="sourceLineNo">23430</span> break;<a name="line.23430"></a>
<span class="sourceLineNo">23431</span> case Dataset.FLOAT64:<a name="line.23431"></a>
<span class="sourceLineNo">23432</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.23432"></a>
<span class="sourceLineNo">23433</span> if (it.isOutputDouble()) {<a name="line.23433"></a>
<span class="sourceLineNo">23434</span> while (it.hasNext()) {<a name="line.23434"></a>
<span class="sourceLineNo">23435</span> final double ix = it.aDouble;<a name="line.23435"></a>
<span class="sourceLineNo">23436</span> double ox;<a name="line.23436"></a>
<span class="sourceLineNo">23437</span> ox = (Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23437"></a>
<span class="sourceLineNo">23438</span> of64data[it.oIndex] = ox;<a name="line.23438"></a>
<span class="sourceLineNo">23439</span> }<a name="line.23439"></a>
<span class="sourceLineNo">23440</span> } else {<a name="line.23440"></a>
<span class="sourceLineNo">23441</span> while (it.hasNext()) {<a name="line.23441"></a>
<span class="sourceLineNo">23442</span> final long ix = it.aLong;<a name="line.23442"></a>
<span class="sourceLineNo">23443</span> double ox;<a name="line.23443"></a>
<span class="sourceLineNo">23444</span> ox = (Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23444"></a>
<span class="sourceLineNo">23445</span> of64data[it.oIndex] = ox;<a name="line.23445"></a>
<span class="sourceLineNo">23446</span> }<a name="line.23446"></a>
<span class="sourceLineNo">23447</span> }<a name="line.23447"></a>
<span class="sourceLineNo">23448</span> break;<a name="line.23448"></a>
<span class="sourceLineNo">23449</span> case Dataset.ARRAYFLOAT32:<a name="line.23449"></a>
<span class="sourceLineNo">23450</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.23450"></a>
<span class="sourceLineNo">23451</span> if (is == 1) {<a name="line.23451"></a>
<span class="sourceLineNo">23452</span> if (it.isOutputDouble()) {<a name="line.23452"></a>
<span class="sourceLineNo">23453</span> while (it.hasNext()) {<a name="line.23453"></a>
<span class="sourceLineNo">23454</span> final double ix = it.aDouble;<a name="line.23454"></a>
<span class="sourceLineNo">23455</span> float ox;<a name="line.23455"></a>
<span class="sourceLineNo">23456</span> ox = (float) (Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23456"></a>
<span class="sourceLineNo">23457</span> oaf32data[it.oIndex] = ox;<a name="line.23457"></a>
<span class="sourceLineNo">23458</span> }<a name="line.23458"></a>
<span class="sourceLineNo">23459</span> } else {<a name="line.23459"></a>
<span class="sourceLineNo">23460</span> while (it.hasNext()) {<a name="line.23460"></a>
<span class="sourceLineNo">23461</span> final long ix = it.aLong;<a name="line.23461"></a>
<span class="sourceLineNo">23462</span> float ox;<a name="line.23462"></a>
<span class="sourceLineNo">23463</span> ox = (float) (Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23463"></a>
<span class="sourceLineNo">23464</span> oaf32data[it.oIndex] = ox;<a name="line.23464"></a>
<span class="sourceLineNo">23465</span> }<a name="line.23465"></a>
<span class="sourceLineNo">23466</span> }<a name="line.23466"></a>
<span class="sourceLineNo">23467</span> } else if (as == 1) {<a name="line.23467"></a>
<span class="sourceLineNo">23468</span> if (it.isOutputDouble()) {<a name="line.23468"></a>
<span class="sourceLineNo">23469</span> while (it.hasNext()) {<a name="line.23469"></a>
<span class="sourceLineNo">23470</span> final double ix = it.aDouble;<a name="line.23470"></a>
<span class="sourceLineNo">23471</span> float ox;<a name="line.23471"></a>
<span class="sourceLineNo">23472</span> ox = (float) (Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23472"></a>
<span class="sourceLineNo">23473</span> for (int j = 0; j &lt; is; j++) {<a name="line.23473"></a>
<span class="sourceLineNo">23474</span> oaf32data[it.oIndex + j] = ox;<a name="line.23474"></a>
<span class="sourceLineNo">23475</span> }<a name="line.23475"></a>
<span class="sourceLineNo">23476</span> }<a name="line.23476"></a>
<span class="sourceLineNo">23477</span> } else {<a name="line.23477"></a>
<span class="sourceLineNo">23478</span> while (it.hasNext()) {<a name="line.23478"></a>
<span class="sourceLineNo">23479</span> final long ix = it.aLong;<a name="line.23479"></a>
<span class="sourceLineNo">23480</span> float ox;<a name="line.23480"></a>
<span class="sourceLineNo">23481</span> ox = (float) (Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23481"></a>
<span class="sourceLineNo">23482</span> for (int j = 0; j &lt; is; j++) {<a name="line.23482"></a>
<span class="sourceLineNo">23483</span> oaf32data[it.oIndex + j] = ox;<a name="line.23483"></a>
<span class="sourceLineNo">23484</span> }<a name="line.23484"></a>
<span class="sourceLineNo">23485</span> }<a name="line.23485"></a>
<span class="sourceLineNo">23486</span> }<a name="line.23486"></a>
<span class="sourceLineNo">23487</span> } else {<a name="line.23487"></a>
<span class="sourceLineNo">23488</span> if (it.isOutputDouble()) {<a name="line.23488"></a>
<span class="sourceLineNo">23489</span> while (it.hasNext()) {<a name="line.23489"></a>
<span class="sourceLineNo">23490</span> for (int j = 0; j &lt; is; j++) {<a name="line.23490"></a>
<span class="sourceLineNo">23491</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.23491"></a>
<span class="sourceLineNo">23492</span> float ox;<a name="line.23492"></a>
<span class="sourceLineNo">23493</span> ox = (float) (Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23493"></a>
<span class="sourceLineNo">23494</span> oaf32data[it.oIndex + j] = ox;<a name="line.23494"></a>
<span class="sourceLineNo">23495</span> }<a name="line.23495"></a>
<span class="sourceLineNo">23496</span> }<a name="line.23496"></a>
<span class="sourceLineNo">23497</span> } else {<a name="line.23497"></a>
<span class="sourceLineNo">23498</span> while (it.hasNext()) {<a name="line.23498"></a>
<span class="sourceLineNo">23499</span> for (int j = 0; j &lt; is; j++) {<a name="line.23499"></a>
<span class="sourceLineNo">23500</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.23500"></a>
<span class="sourceLineNo">23501</span> float ox;<a name="line.23501"></a>
<span class="sourceLineNo">23502</span> ox = (float) (Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23502"></a>
<span class="sourceLineNo">23503</span> oaf32data[it.oIndex + j] = ox;<a name="line.23503"></a>
<span class="sourceLineNo">23504</span> }<a name="line.23504"></a>
<span class="sourceLineNo">23505</span> }<a name="line.23505"></a>
<span class="sourceLineNo">23506</span> }<a name="line.23506"></a>
<span class="sourceLineNo">23507</span> }<a name="line.23507"></a>
<span class="sourceLineNo">23508</span> break;<a name="line.23508"></a>
<span class="sourceLineNo">23509</span> case Dataset.ARRAYFLOAT64:<a name="line.23509"></a>
<span class="sourceLineNo">23510</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.23510"></a>
<span class="sourceLineNo">23511</span> if (is == 1) {<a name="line.23511"></a>
<span class="sourceLineNo">23512</span> if (it.isOutputDouble()) {<a name="line.23512"></a>
<span class="sourceLineNo">23513</span> while (it.hasNext()) {<a name="line.23513"></a>
<span class="sourceLineNo">23514</span> final double ix = it.aDouble;<a name="line.23514"></a>
<span class="sourceLineNo">23515</span> double ox;<a name="line.23515"></a>
<span class="sourceLineNo">23516</span> ox = (Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23516"></a>
<span class="sourceLineNo">23517</span> oaf64data[it.oIndex] = ox;<a name="line.23517"></a>
<span class="sourceLineNo">23518</span> }<a name="line.23518"></a>
<span class="sourceLineNo">23519</span> } else {<a name="line.23519"></a>
<span class="sourceLineNo">23520</span> while (it.hasNext()) {<a name="line.23520"></a>
<span class="sourceLineNo">23521</span> final long ix = it.aLong;<a name="line.23521"></a>
<span class="sourceLineNo">23522</span> double ox;<a name="line.23522"></a>
<span class="sourceLineNo">23523</span> ox = (Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23523"></a>
<span class="sourceLineNo">23524</span> oaf64data[it.oIndex] = ox;<a name="line.23524"></a>
<span class="sourceLineNo">23525</span> }<a name="line.23525"></a>
<span class="sourceLineNo">23526</span> }<a name="line.23526"></a>
<span class="sourceLineNo">23527</span> } else if (as == 1) {<a name="line.23527"></a>
<span class="sourceLineNo">23528</span> if (it.isOutputDouble()) {<a name="line.23528"></a>
<span class="sourceLineNo">23529</span> while (it.hasNext()) {<a name="line.23529"></a>
<span class="sourceLineNo">23530</span> final double ix = it.aDouble;<a name="line.23530"></a>
<span class="sourceLineNo">23531</span> double ox;<a name="line.23531"></a>
<span class="sourceLineNo">23532</span> ox = (Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23532"></a>
<span class="sourceLineNo">23533</span> for (int j = 0; j &lt; is; j++) {<a name="line.23533"></a>
<span class="sourceLineNo">23534</span> oaf64data[it.oIndex + j] = ox;<a name="line.23534"></a>
<span class="sourceLineNo">23535</span> }<a name="line.23535"></a>
<span class="sourceLineNo">23536</span> }<a name="line.23536"></a>
<span class="sourceLineNo">23537</span> } else {<a name="line.23537"></a>
<span class="sourceLineNo">23538</span> while (it.hasNext()) {<a name="line.23538"></a>
<span class="sourceLineNo">23539</span> final long ix = it.aLong;<a name="line.23539"></a>
<span class="sourceLineNo">23540</span> double ox;<a name="line.23540"></a>
<span class="sourceLineNo">23541</span> ox = (Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23541"></a>
<span class="sourceLineNo">23542</span> for (int j = 0; j &lt; is; j++) {<a name="line.23542"></a>
<span class="sourceLineNo">23543</span> oaf64data[it.oIndex + j] = ox;<a name="line.23543"></a>
<span class="sourceLineNo">23544</span> }<a name="line.23544"></a>
<span class="sourceLineNo">23545</span> }<a name="line.23545"></a>
<span class="sourceLineNo">23546</span> }<a name="line.23546"></a>
<span class="sourceLineNo">23547</span> } else {<a name="line.23547"></a>
<span class="sourceLineNo">23548</span> if (it.isOutputDouble()) {<a name="line.23548"></a>
<span class="sourceLineNo">23549</span> while (it.hasNext()) {<a name="line.23549"></a>
<span class="sourceLineNo">23550</span> for (int j = 0; j &lt; is; j++) {<a name="line.23550"></a>
<span class="sourceLineNo">23551</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.23551"></a>
<span class="sourceLineNo">23552</span> double ox;<a name="line.23552"></a>
<span class="sourceLineNo">23553</span> ox = (Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23553"></a>
<span class="sourceLineNo">23554</span> oaf64data[it.oIndex + j] = ox;<a name="line.23554"></a>
<span class="sourceLineNo">23555</span> }<a name="line.23555"></a>
<span class="sourceLineNo">23556</span> }<a name="line.23556"></a>
<span class="sourceLineNo">23557</span> } else {<a name="line.23557"></a>
<span class="sourceLineNo">23558</span> while (it.hasNext()) {<a name="line.23558"></a>
<span class="sourceLineNo">23559</span> for (int j = 0; j &lt; is; j++) {<a name="line.23559"></a>
<span class="sourceLineNo">23560</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.23560"></a>
<span class="sourceLineNo">23561</span> double ox;<a name="line.23561"></a>
<span class="sourceLineNo">23562</span> ox = (Math.log(ix + Math.sqrt(ix*ix + 1)));<a name="line.23562"></a>
<span class="sourceLineNo">23563</span> oaf64data[it.oIndex + j] = ox;<a name="line.23563"></a>
<span class="sourceLineNo">23564</span> }<a name="line.23564"></a>
<span class="sourceLineNo">23565</span> }<a name="line.23565"></a>
<span class="sourceLineNo">23566</span> }<a name="line.23566"></a>
<span class="sourceLineNo">23567</span> }<a name="line.23567"></a>
<span class="sourceLineNo">23568</span> break;<a name="line.23568"></a>
<span class="sourceLineNo">23569</span> case Dataset.COMPLEX64:<a name="line.23569"></a>
<span class="sourceLineNo">23570</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.23570"></a>
<span class="sourceLineNo">23571</span> if (!da.isComplex()) {<a name="line.23571"></a>
<span class="sourceLineNo">23572</span> if (it.isOutputDouble()) {<a name="line.23572"></a>
<span class="sourceLineNo">23573</span> final double iy = 0;<a name="line.23573"></a>
<span class="sourceLineNo">23574</span> while (it.hasNext()) {<a name="line.23574"></a>
<span class="sourceLineNo">23575</span> final double ix = it.aDouble;<a name="line.23575"></a>
<span class="sourceLineNo">23576</span> Complex tz;<a name="line.23576"></a>
<span class="sourceLineNo">23577</span> float ox;<a name="line.23577"></a>
<span class="sourceLineNo">23578</span> float oy;<a name="line.23578"></a>
<span class="sourceLineNo">23579</span> tz = new Complex(-iy, ix).asin();<a name="line.23579"></a>
<span class="sourceLineNo">23580</span> ox = (float) (tz.getImaginary());<a name="line.23580"></a>
<span class="sourceLineNo">23581</span> oy = (float) (-tz.getReal());<a name="line.23581"></a>
<span class="sourceLineNo">23582</span> oc64data[it.oIndex] = ox;<a name="line.23582"></a>
<span class="sourceLineNo">23583</span> oc64data[it.oIndex + 1] = oy;<a name="line.23583"></a>
<span class="sourceLineNo">23584</span> }<a name="line.23584"></a>
<span class="sourceLineNo">23585</span> } else {<a name="line.23585"></a>
<span class="sourceLineNo">23586</span> final long iy = 0;<a name="line.23586"></a>
<span class="sourceLineNo">23587</span> while (it.hasNext()) {<a name="line.23587"></a>
<span class="sourceLineNo">23588</span> final long ix = it.aLong;<a name="line.23588"></a>
<span class="sourceLineNo">23589</span> Complex tz;<a name="line.23589"></a>
<span class="sourceLineNo">23590</span> float ox;<a name="line.23590"></a>
<span class="sourceLineNo">23591</span> float oy;<a name="line.23591"></a>
<span class="sourceLineNo">23592</span> tz = new Complex(-iy, ix).asin();<a name="line.23592"></a>
<span class="sourceLineNo">23593</span> ox = (float) toLong(tz.getImaginary());<a name="line.23593"></a>
<span class="sourceLineNo">23594</span> oy = (float) toLong(-tz.getReal());<a name="line.23594"></a>
<span class="sourceLineNo">23595</span> oc64data[it.oIndex] = ox;<a name="line.23595"></a>
<span class="sourceLineNo">23596</span> oc64data[it.oIndex + 1] = oy;<a name="line.23596"></a>
<span class="sourceLineNo">23597</span> }<a name="line.23597"></a>
<span class="sourceLineNo">23598</span> }<a name="line.23598"></a>
<span class="sourceLineNo">23599</span> } else {<a name="line.23599"></a>
<span class="sourceLineNo">23600</span> while (it.hasNext()) {<a name="line.23600"></a>
<span class="sourceLineNo">23601</span> final double ix = it.aDouble;<a name="line.23601"></a>
<span class="sourceLineNo">23602</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.23602"></a>
<span class="sourceLineNo">23603</span> Complex tz;<a name="line.23603"></a>
<span class="sourceLineNo">23604</span> float ox;<a name="line.23604"></a>
<span class="sourceLineNo">23605</span> float oy;<a name="line.23605"></a>
<span class="sourceLineNo">23606</span> tz = new Complex(-iy, ix).asin();<a name="line.23606"></a>
<span class="sourceLineNo">23607</span> ox = (float) (tz.getImaginary());<a name="line.23607"></a>
<span class="sourceLineNo">23608</span> oy = (float) (-tz.getReal());<a name="line.23608"></a>
<span class="sourceLineNo">23609</span> oc64data[it.oIndex] = ox;<a name="line.23609"></a>
<span class="sourceLineNo">23610</span> oc64data[it.oIndex + 1] = oy;<a name="line.23610"></a>
<span class="sourceLineNo">23611</span> }<a name="line.23611"></a>
<span class="sourceLineNo">23612</span> }<a name="line.23612"></a>
<span class="sourceLineNo">23613</span> break;<a name="line.23613"></a>
<span class="sourceLineNo">23614</span> case Dataset.COMPLEX128:<a name="line.23614"></a>
<span class="sourceLineNo">23615</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.23615"></a>
<span class="sourceLineNo">23616</span> if (!da.isComplex()) {<a name="line.23616"></a>
<span class="sourceLineNo">23617</span> if (it.isOutputDouble()) {<a name="line.23617"></a>
<span class="sourceLineNo">23618</span> final double iy = 0;<a name="line.23618"></a>
<span class="sourceLineNo">23619</span> while (it.hasNext()) {<a name="line.23619"></a>
<span class="sourceLineNo">23620</span> final double ix = it.aDouble;<a name="line.23620"></a>
<span class="sourceLineNo">23621</span> Complex tz;<a name="line.23621"></a>
<span class="sourceLineNo">23622</span> double ox;<a name="line.23622"></a>
<span class="sourceLineNo">23623</span> double oy;<a name="line.23623"></a>
<span class="sourceLineNo">23624</span> tz = new Complex(-iy, ix).asin();<a name="line.23624"></a>
<span class="sourceLineNo">23625</span> ox = (tz.getImaginary());<a name="line.23625"></a>
<span class="sourceLineNo">23626</span> oy = (-tz.getReal());<a name="line.23626"></a>
<span class="sourceLineNo">23627</span> oc128data[it.oIndex] = ox;<a name="line.23627"></a>
<span class="sourceLineNo">23628</span> oc128data[it.oIndex + 1] = oy;<a name="line.23628"></a>
<span class="sourceLineNo">23629</span> }<a name="line.23629"></a>
<span class="sourceLineNo">23630</span> } else {<a name="line.23630"></a>
<span class="sourceLineNo">23631</span> final long iy = 0;<a name="line.23631"></a>
<span class="sourceLineNo">23632</span> while (it.hasNext()) {<a name="line.23632"></a>
<span class="sourceLineNo">23633</span> final long ix = it.aLong;<a name="line.23633"></a>
<span class="sourceLineNo">23634</span> Complex tz;<a name="line.23634"></a>
<span class="sourceLineNo">23635</span> double ox;<a name="line.23635"></a>
<span class="sourceLineNo">23636</span> double oy;<a name="line.23636"></a>
<span class="sourceLineNo">23637</span> tz = new Complex(-iy, ix).asin();<a name="line.23637"></a>
<span class="sourceLineNo">23638</span> ox = (tz.getImaginary());<a name="line.23638"></a>
<span class="sourceLineNo">23639</span> oy = (-tz.getReal());<a name="line.23639"></a>
<span class="sourceLineNo">23640</span> oc128data[it.oIndex] = ox;<a name="line.23640"></a>
<span class="sourceLineNo">23641</span> oc128data[it.oIndex + 1] = oy;<a name="line.23641"></a>
<span class="sourceLineNo">23642</span> }<a name="line.23642"></a>
<span class="sourceLineNo">23643</span> }<a name="line.23643"></a>
<span class="sourceLineNo">23644</span> } else {<a name="line.23644"></a>
<span class="sourceLineNo">23645</span> while (it.hasNext()) {<a name="line.23645"></a>
<span class="sourceLineNo">23646</span> final double ix = it.aDouble;<a name="line.23646"></a>
<span class="sourceLineNo">23647</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.23647"></a>
<span class="sourceLineNo">23648</span> Complex tz;<a name="line.23648"></a>
<span class="sourceLineNo">23649</span> double ox;<a name="line.23649"></a>
<span class="sourceLineNo">23650</span> double oy;<a name="line.23650"></a>
<span class="sourceLineNo">23651</span> tz = new Complex(-iy, ix).asin();<a name="line.23651"></a>
<span class="sourceLineNo">23652</span> ox = (tz.getImaginary());<a name="line.23652"></a>
<span class="sourceLineNo">23653</span> oy = (-tz.getReal());<a name="line.23653"></a>
<span class="sourceLineNo">23654</span> oc128data[it.oIndex] = ox;<a name="line.23654"></a>
<span class="sourceLineNo">23655</span> oc128data[it.oIndex + 1] = oy;<a name="line.23655"></a>
<span class="sourceLineNo">23656</span> }<a name="line.23656"></a>
<span class="sourceLineNo">23657</span> }<a name="line.23657"></a>
<span class="sourceLineNo">23658</span> break;<a name="line.23658"></a>
<span class="sourceLineNo">23659</span> default:<a name="line.23659"></a>
<span class="sourceLineNo">23660</span> throw new IllegalArgumentException("arcsinh supports integer, compound integer, real, compound real, complex datasets only");<a name="line.23660"></a>
<span class="sourceLineNo">23661</span> }<a name="line.23661"></a>
<span class="sourceLineNo">23662</span><a name="line.23662"></a>
<span class="sourceLineNo">23663</span> addFunctionName(result, "arcsinh");<a name="line.23663"></a>
<span class="sourceLineNo">23664</span> return result;<a name="line.23664"></a>
<span class="sourceLineNo">23665</span> }<a name="line.23665"></a>
<span class="sourceLineNo">23666</span><a name="line.23666"></a>
<span class="sourceLineNo">23667</span> /**<a name="line.23667"></a>
<span class="sourceLineNo">23668</span> * arccosh - evaluate the inverse hyperbolic cosine function on each element of the dataset<a name="line.23668"></a>
<span class="sourceLineNo">23669</span> * @param a<a name="line.23669"></a>
<span class="sourceLineNo">23670</span> * @return dataset<a name="line.23670"></a>
<span class="sourceLineNo">23671</span> */<a name="line.23671"></a>
<span class="sourceLineNo">23672</span> public static Dataset arccosh(final Object a) {<a name="line.23672"></a>
<span class="sourceLineNo">23673</span> return arccosh(a, null);<a name="line.23673"></a>
<span class="sourceLineNo">23674</span> }<a name="line.23674"></a>
<span class="sourceLineNo">23675</span><a name="line.23675"></a>
<span class="sourceLineNo">23676</span> /**<a name="line.23676"></a>
<span class="sourceLineNo">23677</span> * arccosh - evaluate the inverse hyperbolic cosine function on each element of the dataset<a name="line.23677"></a>
<span class="sourceLineNo">23678</span> * @param a<a name="line.23678"></a>
<span class="sourceLineNo">23679</span> * @param o output can be null - in which case, a new dataset is created<a name="line.23679"></a>
<span class="sourceLineNo">23680</span> * @return dataset<a name="line.23680"></a>
<span class="sourceLineNo">23681</span> */<a name="line.23681"></a>
<span class="sourceLineNo">23682</span> public static Dataset arccosh(final Object a, final Dataset o) {<a name="line.23682"></a>
<span class="sourceLineNo">23683</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.23683"></a>
<span class="sourceLineNo">23684</span> SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true);<a name="line.23684"></a>
<span class="sourceLineNo">23685</span> final Dataset result = it.getOutput();<a name="line.23685"></a>
<span class="sourceLineNo">23686</span> if (!result.isComplex()) {<a name="line.23686"></a>
<span class="sourceLineNo">23687</span> if (da.isComplex()) {<a name="line.23687"></a>
<span class="sourceLineNo">23688</span> da = da.getRealView();<a name="line.23688"></a>
<span class="sourceLineNo">23689</span> it = new SingleInputBroadcastIterator(da, result, true);<a name="line.23689"></a>
<span class="sourceLineNo">23690</span> }<a name="line.23690"></a>
<span class="sourceLineNo">23691</span> }<a name="line.23691"></a>
<span class="sourceLineNo">23692</span> final int is = result.getElementsPerItem();<a name="line.23692"></a>
<span class="sourceLineNo">23693</span> final int as = da.getElementsPerItem();<a name="line.23693"></a>
<span class="sourceLineNo">23694</span> final int dt = result.getDType();<a name="line.23694"></a>
<span class="sourceLineNo">23695</span><a name="line.23695"></a>
<span class="sourceLineNo">23696</span> switch(dt) {<a name="line.23696"></a>
<span class="sourceLineNo">23697</span> case Dataset.INT8:<a name="line.23697"></a>
<span class="sourceLineNo">23698</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.23698"></a>
<span class="sourceLineNo">23699</span> if (it.isOutputDouble()) {<a name="line.23699"></a>
<span class="sourceLineNo">23700</span> while (it.hasNext()) {<a name="line.23700"></a>
<span class="sourceLineNo">23701</span> final double ix = it.aDouble;<a name="line.23701"></a>
<span class="sourceLineNo">23702</span> byte ox;<a name="line.23702"></a>
<span class="sourceLineNo">23703</span> ox = (byte) toLong(Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.23703"></a>
<span class="sourceLineNo">23704</span> oi8data[it.oIndex] = ox;<a name="line.23704"></a>
<span class="sourceLineNo">23705</span> }<a name="line.23705"></a>
<span class="sourceLineNo">23706</span> } else {<a name="line.23706"></a>
<span class="sourceLineNo">23707</span> while (it.hasNext()) {<a name="line.23707"></a>
<span class="sourceLineNo">23708</span> final long ix = it.aLong;<a name="line.23708"></a>
<span class="sourceLineNo">23709</span> byte ox;<a name="line.23709"></a>
<span class="sourceLineNo">23710</span> ox = (byte) toLong(Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.23710"></a>
<span class="sourceLineNo">23711</span> oi8data[it.oIndex] = ox;<a name="line.23711"></a>
<span class="sourceLineNo">23712</span> }<a name="line.23712"></a>
<span class="sourceLineNo">23713</span> }<a name="line.23713"></a>
<span class="sourceLineNo">23714</span> break;<a name="line.23714"></a>
<span class="sourceLineNo">23715</span> case Dataset.INT16:<a name="line.23715"></a>
<span class="sourceLineNo">23716</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.23716"></a>
<span class="sourceLineNo">23717</span> if (it.isOutputDouble()) {<a name="line.23717"></a>
<span class="sourceLineNo">23718</span> while (it.hasNext()) {<a name="line.23718"></a>
<span class="sourceLineNo">23719</span> final double ix = it.aDouble;<a name="line.23719"></a>
<span class="sourceLineNo">23720</span> short ox;<a name="line.23720"></a>
<span class="sourceLineNo">23721</span> ox = (short) toLong(Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.23721"></a>
<span class="sourceLineNo">23722</span> oi16data[it.oIndex] = ox;<a name="line.23722"></a>
<span class="sourceLineNo">23723</span> }<a name="line.23723"></a>
<span class="sourceLineNo">23724</span> } else {<a name="line.23724"></a>
<span class="sourceLineNo">23725</span> while (it.hasNext()) {<a name="line.23725"></a>
<span class="sourceLineNo">23726</span> final long ix = it.aLong;<a name="line.23726"></a>
<span class="sourceLineNo">23727</span> short ox;<a name="line.23727"></a>
<span class="sourceLineNo">23728</span> ox = (short) toLong(Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.23728"></a>
<span class="sourceLineNo">23729</span> oi16data[it.oIndex] = ox;<a name="line.23729"></a>
<span class="sourceLineNo">23730</span> }<a name="line.23730"></a>
<span class="sourceLineNo">23731</span> }<a name="line.23731"></a>
<span class="sourceLineNo">23732</span> break;<a name="line.23732"></a>
<span class="sourceLineNo">23733</span> case Dataset.INT64:<a name="line.23733"></a>
<span class="sourceLineNo">23734</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.23734"></a>
<span class="sourceLineNo">23735</span> if (it.isOutputDouble()) {<a name="line.23735"></a>
<span class="sourceLineNo">23736</span> while (it.hasNext()) {<a name="line.23736"></a>
<span class="sourceLineNo">23737</span> final double ix = it.aDouble;<a name="line.23737"></a>
<span class="sourceLineNo">23738</span> long ox;<a name="line.23738"></a>
<span class="sourceLineNo">23739</span> ox = toLong(Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.23739"></a>
<span class="sourceLineNo">23740</span> oi64data[it.oIndex] = ox;<a name="line.23740"></a>
<span class="sourceLineNo">23741</span> }<a name="line.23741"></a>
<span class="sourceLineNo">23742</span> } else {<a name="line.23742"></a>
<span class="sourceLineNo">23743</span> while (it.hasNext()) {<a name="line.23743"></a>
<span class="sourceLineNo">23744</span> final long ix = it.aLong;<a name="line.23744"></a>
<span class="sourceLineNo">23745</span> long ox;<a name="line.23745"></a>
<span class="sourceLineNo">23746</span> ox = toLong(Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.23746"></a>
<span class="sourceLineNo">23747</span> oi64data[it.oIndex] = ox;<a name="line.23747"></a>
<span class="sourceLineNo">23748</span> }<a name="line.23748"></a>
<span class="sourceLineNo">23749</span> }<a name="line.23749"></a>
<span class="sourceLineNo">23750</span> break;<a name="line.23750"></a>
<span class="sourceLineNo">23751</span> case Dataset.INT32:<a name="line.23751"></a>
<span class="sourceLineNo">23752</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.23752"></a>
<span class="sourceLineNo">23753</span> if (it.isOutputDouble()) {<a name="line.23753"></a>
<span class="sourceLineNo">23754</span> while (it.hasNext()) {<a name="line.23754"></a>
<span class="sourceLineNo">23755</span> final double ix = it.aDouble;<a name="line.23755"></a>
<span class="sourceLineNo">23756</span> int ox;<a name="line.23756"></a>
<span class="sourceLineNo">23757</span> ox = (int) toLong(Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.23757"></a>
<span class="sourceLineNo">23758</span> oi32data[it.oIndex] = ox;<a name="line.23758"></a>
<span class="sourceLineNo">23759</span> }<a name="line.23759"></a>
<span class="sourceLineNo">23760</span> } else {<a name="line.23760"></a>
<span class="sourceLineNo">23761</span> while (it.hasNext()) {<a name="line.23761"></a>
<span class="sourceLineNo">23762</span> final long ix = it.aLong;<a name="line.23762"></a>
<span class="sourceLineNo">23763</span> int ox;<a name="line.23763"></a>
<span class="sourceLineNo">23764</span> ox = (int) toLong(Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.23764"></a>
<span class="sourceLineNo">23765</span> oi32data[it.oIndex] = ox;<a name="line.23765"></a>
<span class="sourceLineNo">23766</span> }<a name="line.23766"></a>
<span class="sourceLineNo">23767</span> }<a name="line.23767"></a>
<span class="sourceLineNo">23768</span> break;<a name="line.23768"></a>
<span class="sourceLineNo">23769</span> case Dataset.ARRAYINT8:<a name="line.23769"></a>
<span class="sourceLineNo">23770</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.23770"></a>
<span class="sourceLineNo">23771</span> if (is == 1) {<a name="line.23771"></a>
<span class="sourceLineNo">23772</span> if (it.isOutputDouble()) {<a name="line.23772"></a>
<span class="sourceLineNo">23773</span> while (it.hasNext()) {<a name="line.23773"></a>
<span class="sourceLineNo">23774</span> final double ix = it.aDouble;<a name="line.23774"></a>
<span class="sourceLineNo">23775</span> byte ox;<a name="line.23775"></a>
<span class="sourceLineNo">23776</span> ox = (byte) toLong(Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.23776"></a>
<span class="sourceLineNo">23777</span> oai8data[it.oIndex] = ox;<a name="line.23777"></a>
<span class="sourceLineNo">23778</span> }<a name="line.23778"></a>
<span class="sourceLineNo">23779</span> } else {<a name="line.23779"></a>
<span class="sourceLineNo">23780</span> while (it.hasNext()) {<a name="line.23780"></a>
<span class="sourceLineNo">23781</span> final long ix = it.aLong;<a name="line.23781"></a>
<span class="sourceLineNo">23782</span> byte ox;<a name="line.23782"></a>
<span class="sourceLineNo">23783</span> ox = (byte) toLong(Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.23783"></a>
<span class="sourceLineNo">23784</span> oai8data[it.oIndex] = ox;<a name="line.23784"></a>
<span class="sourceLineNo">23785</span> }<a name="line.23785"></a>
<span class="sourceLineNo">23786</span> }<a name="line.23786"></a>
<span class="sourceLineNo">23787</span> } else if (as == 1) {<a name="line.23787"></a>
<span class="sourceLineNo">23788</span> if (it.isOutputDouble()) {<a name="line.23788"></a>
<span class="sourceLineNo">23789</span> while (it.hasNext()) {<a name="line.23789"></a>
<span class="sourceLineNo">23790</span> final double ix = it.aDouble;<a name="line.23790"></a>
<span class="sourceLineNo">23791</span> byte ox;<a name="line.23791"></a>
<span class="sourceLineNo">23792</span> ox = (byte) toLong(Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.23792"></a>
<span class="sourceLineNo">23793</span> for (int j = 0; j &lt; is; j++) {<a name="line.23793"></a>
<span class="sourceLineNo">23794</span> oai8data[it.oIndex + j] = ox;<a name="line.23794"></a>
<span class="sourceLineNo">23795</span> }<a name="line.23795"></a>
<span class="sourceLineNo">23796</span> }<a name="line.23796"></a>
<span class="sourceLineNo">23797</span> } else {<a name="line.23797"></a>
<span class="sourceLineNo">23798</span> while (it.hasNext()) {<a name="line.23798"></a>
<span class="sourceLineNo">23799</span> final long ix = it.aLong;<a name="line.23799"></a>
<span class="sourceLineNo">23800</span> byte ox;<a name="line.23800"></a>
<span class="sourceLineNo">23801</span> ox = (byte) toLong(Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.23801"></a>
<span class="sourceLineNo">23802</span> for (int j = 0; j &lt; is; j++) {<a name="line.23802"></a>
<span class="sourceLineNo">23803</span> oai8data[it.oIndex + j] = ox;<a name="line.23803"></a>
<span class="sourceLineNo">23804</span> }<a name="line.23804"></a>
<span class="sourceLineNo">23805</span> }<a name="line.23805"></a>
<span class="sourceLineNo">23806</span> }<a name="line.23806"></a>
<span class="sourceLineNo">23807</span> } else {<a name="line.23807"></a>
<span class="sourceLineNo">23808</span> if (it.isOutputDouble()) {<a name="line.23808"></a>
<span class="sourceLineNo">23809</span> while (it.hasNext()) {<a name="line.23809"></a>
<span class="sourceLineNo">23810</span> for (int j = 0; j &lt; is; j++) {<a name="line.23810"></a>
<span class="sourceLineNo">23811</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.23811"></a>
<span class="sourceLineNo">23812</span> byte ox;<a name="line.23812"></a>
<span class="sourceLineNo">23813</span> ox = (byte) toLong(Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.23813"></a>
<span class="sourceLineNo">23814</span> oai8data[it.oIndex + j] = ox;<a name="line.23814"></a>
<span class="sourceLineNo">23815</span> }<a name="line.23815"></a>
<span class="sourceLineNo">23816</span> }<a name="line.23816"></a>
<span class="sourceLineNo">23817</span> } else {<a name="line.23817"></a>
<span class="sourceLineNo">23818</span> while (it.hasNext()) {<a name="line.23818"></a>
<span class="sourceLineNo">23819</span> for (int j = 0; j &lt; is; j++) {<a name="line.23819"></a>
<span class="sourceLineNo">23820</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.23820"></a>
<span class="sourceLineNo">23821</span> byte ox;<a name="line.23821"></a>
<span class="sourceLineNo">23822</span> ox = (byte) toLong(Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.23822"></a>
<span class="sourceLineNo">23823</span> oai8data[it.oIndex + j] = ox;<a name="line.23823"></a>
<span class="sourceLineNo">23824</span> }<a name="line.23824"></a>
<span class="sourceLineNo">23825</span> }<a name="line.23825"></a>
<span class="sourceLineNo">23826</span> }<a name="line.23826"></a>
<span class="sourceLineNo">23827</span> }<a name="line.23827"></a>
<span class="sourceLineNo">23828</span> break;<a name="line.23828"></a>
<span class="sourceLineNo">23829</span> case Dataset.ARRAYINT16:<a name="line.23829"></a>
<span class="sourceLineNo">23830</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.23830"></a>
<span class="sourceLineNo">23831</span> if (is == 1) {<a name="line.23831"></a>
<span class="sourceLineNo">23832</span> if (it.isOutputDouble()) {<a name="line.23832"></a>
<span class="sourceLineNo">23833</span> while (it.hasNext()) {<a name="line.23833"></a>
<span class="sourceLineNo">23834</span> final double ix = it.aDouble;<a name="line.23834"></a>
<span class="sourceLineNo">23835</span> short ox;<a name="line.23835"></a>
<span class="sourceLineNo">23836</span> ox = (short) toLong(Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.23836"></a>
<span class="sourceLineNo">23837</span> oai16data[it.oIndex] = ox;<a name="line.23837"></a>
<span class="sourceLineNo">23838</span> }<a name="line.23838"></a>
<span class="sourceLineNo">23839</span> } else {<a name="line.23839"></a>
<span class="sourceLineNo">23840</span> while (it.hasNext()) {<a name="line.23840"></a>
<span class="sourceLineNo">23841</span> final long ix = it.aLong;<a name="line.23841"></a>
<span class="sourceLineNo">23842</span> short ox;<a name="line.23842"></a>
<span class="sourceLineNo">23843</span> ox = (short) toLong(Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.23843"></a>
<span class="sourceLineNo">23844</span> oai16data[it.oIndex] = ox;<a name="line.23844"></a>
<span class="sourceLineNo">23845</span> }<a name="line.23845"></a>
<span class="sourceLineNo">23846</span> }<a name="line.23846"></a>
<span class="sourceLineNo">23847</span> } else if (as == 1) {<a name="line.23847"></a>
<span class="sourceLineNo">23848</span> if (it.isOutputDouble()) {<a name="line.23848"></a>
<span class="sourceLineNo">23849</span> while (it.hasNext()) {<a name="line.23849"></a>
<span class="sourceLineNo">23850</span> final double ix = it.aDouble;<a name="line.23850"></a>
<span class="sourceLineNo">23851</span> short ox;<a name="line.23851"></a>
<span class="sourceLineNo">23852</span> ox = (short) toLong(Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.23852"></a>
<span class="sourceLineNo">23853</span> for (int j = 0; j &lt; is; j++) {<a name="line.23853"></a>
<span class="sourceLineNo">23854</span> oai16data[it.oIndex + j] = ox;<a name="line.23854"></a>
<span class="sourceLineNo">23855</span> }<a name="line.23855"></a>
<span class="sourceLineNo">23856</span> }<a name="line.23856"></a>
<span class="sourceLineNo">23857</span> } else {<a name="line.23857"></a>
<span class="sourceLineNo">23858</span> while (it.hasNext()) {<a name="line.23858"></a>
<span class="sourceLineNo">23859</span> final long ix = it.aLong;<a name="line.23859"></a>
<span class="sourceLineNo">23860</span> short ox;<a name="line.23860"></a>
<span class="sourceLineNo">23861</span> ox = (short) toLong(Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.23861"></a>
<span class="sourceLineNo">23862</span> for (int j = 0; j &lt; is; j++) {<a name="line.23862"></a>
<span class="sourceLineNo">23863</span> oai16data[it.oIndex + j] = ox;<a name="line.23863"></a>
<span class="sourceLineNo">23864</span> }<a name="line.23864"></a>
<span class="sourceLineNo">23865</span> }<a name="line.23865"></a>
<span class="sourceLineNo">23866</span> }<a name="line.23866"></a>
<span class="sourceLineNo">23867</span> } else {<a name="line.23867"></a>
<span class="sourceLineNo">23868</span> if (it.isOutputDouble()) {<a name="line.23868"></a>
<span class="sourceLineNo">23869</span> while (it.hasNext()) {<a name="line.23869"></a>
<span class="sourceLineNo">23870</span> for (int j = 0; j &lt; is; j++) {<a name="line.23870"></a>
<span class="sourceLineNo">23871</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.23871"></a>
<span class="sourceLineNo">23872</span> short ox;<a name="line.23872"></a>
<span class="sourceLineNo">23873</span> ox = (short) toLong(Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.23873"></a>
<span class="sourceLineNo">23874</span> oai16data[it.oIndex + j] = ox;<a name="line.23874"></a>
<span class="sourceLineNo">23875</span> }<a name="line.23875"></a>
<span class="sourceLineNo">23876</span> }<a name="line.23876"></a>
<span class="sourceLineNo">23877</span> } else {<a name="line.23877"></a>
<span class="sourceLineNo">23878</span> while (it.hasNext()) {<a name="line.23878"></a>
<span class="sourceLineNo">23879</span> for (int j = 0; j &lt; is; j++) {<a name="line.23879"></a>
<span class="sourceLineNo">23880</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.23880"></a>
<span class="sourceLineNo">23881</span> short ox;<a name="line.23881"></a>
<span class="sourceLineNo">23882</span> ox = (short) toLong(Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.23882"></a>
<span class="sourceLineNo">23883</span> oai16data[it.oIndex + j] = ox;<a name="line.23883"></a>
<span class="sourceLineNo">23884</span> }<a name="line.23884"></a>
<span class="sourceLineNo">23885</span> }<a name="line.23885"></a>
<span class="sourceLineNo">23886</span> }<a name="line.23886"></a>
<span class="sourceLineNo">23887</span> }<a name="line.23887"></a>
<span class="sourceLineNo">23888</span> break;<a name="line.23888"></a>
<span class="sourceLineNo">23889</span> case Dataset.ARRAYINT64:<a name="line.23889"></a>
<span class="sourceLineNo">23890</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.23890"></a>
<span class="sourceLineNo">23891</span> if (is == 1) {<a name="line.23891"></a>
<span class="sourceLineNo">23892</span> if (it.isOutputDouble()) {<a name="line.23892"></a>
<span class="sourceLineNo">23893</span> while (it.hasNext()) {<a name="line.23893"></a>
<span class="sourceLineNo">23894</span> final double ix = it.aDouble;<a name="line.23894"></a>
<span class="sourceLineNo">23895</span> long ox;<a name="line.23895"></a>
<span class="sourceLineNo">23896</span> ox = toLong(Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.23896"></a>
<span class="sourceLineNo">23897</span> oai64data[it.oIndex] = ox;<a name="line.23897"></a>
<span class="sourceLineNo">23898</span> }<a name="line.23898"></a>
<span class="sourceLineNo">23899</span> } else {<a name="line.23899"></a>
<span class="sourceLineNo">23900</span> while (it.hasNext()) {<a name="line.23900"></a>
<span class="sourceLineNo">23901</span> final long ix = it.aLong;<a name="line.23901"></a>
<span class="sourceLineNo">23902</span> long ox;<a name="line.23902"></a>
<span class="sourceLineNo">23903</span> ox = toLong(Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.23903"></a>
<span class="sourceLineNo">23904</span> oai64data[it.oIndex] = ox;<a name="line.23904"></a>
<span class="sourceLineNo">23905</span> }<a name="line.23905"></a>
<span class="sourceLineNo">23906</span> }<a name="line.23906"></a>
<span class="sourceLineNo">23907</span> } else if (as == 1) {<a name="line.23907"></a>
<span class="sourceLineNo">23908</span> if (it.isOutputDouble()) {<a name="line.23908"></a>
<span class="sourceLineNo">23909</span> while (it.hasNext()) {<a name="line.23909"></a>
<span class="sourceLineNo">23910</span> final double ix = it.aDouble;<a name="line.23910"></a>
<span class="sourceLineNo">23911</span> long ox;<a name="line.23911"></a>
<span class="sourceLineNo">23912</span> ox = toLong(Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.23912"></a>
<span class="sourceLineNo">23913</span> for (int j = 0; j &lt; is; j++) {<a name="line.23913"></a>
<span class="sourceLineNo">23914</span> oai64data[it.oIndex + j] = ox;<a name="line.23914"></a>
<span class="sourceLineNo">23915</span> }<a name="line.23915"></a>
<span class="sourceLineNo">23916</span> }<a name="line.23916"></a>
<span class="sourceLineNo">23917</span> } else {<a name="line.23917"></a>
<span class="sourceLineNo">23918</span> while (it.hasNext()) {<a name="line.23918"></a>
<span class="sourceLineNo">23919</span> final long ix = it.aLong;<a name="line.23919"></a>
<span class="sourceLineNo">23920</span> long ox;<a name="line.23920"></a>
<span class="sourceLineNo">23921</span> ox = toLong(Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.23921"></a>
<span class="sourceLineNo">23922</span> for (int j = 0; j &lt; is; j++) {<a name="line.23922"></a>
<span class="sourceLineNo">23923</span> oai64data[it.oIndex + j] = ox;<a name="line.23923"></a>
<span class="sourceLineNo">23924</span> }<a name="line.23924"></a>
<span class="sourceLineNo">23925</span> }<a name="line.23925"></a>
<span class="sourceLineNo">23926</span> }<a name="line.23926"></a>
<span class="sourceLineNo">23927</span> } else {<a name="line.23927"></a>
<span class="sourceLineNo">23928</span> if (it.isOutputDouble()) {<a name="line.23928"></a>
<span class="sourceLineNo">23929</span> while (it.hasNext()) {<a name="line.23929"></a>
<span class="sourceLineNo">23930</span> for (int j = 0; j &lt; is; j++) {<a name="line.23930"></a>
<span class="sourceLineNo">23931</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.23931"></a>
<span class="sourceLineNo">23932</span> long ox;<a name="line.23932"></a>
<span class="sourceLineNo">23933</span> ox = toLong(Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.23933"></a>
<span class="sourceLineNo">23934</span> oai64data[it.oIndex + j] = ox;<a name="line.23934"></a>
<span class="sourceLineNo">23935</span> }<a name="line.23935"></a>
<span class="sourceLineNo">23936</span> }<a name="line.23936"></a>
<span class="sourceLineNo">23937</span> } else {<a name="line.23937"></a>
<span class="sourceLineNo">23938</span> while (it.hasNext()) {<a name="line.23938"></a>
<span class="sourceLineNo">23939</span> for (int j = 0; j &lt; is; j++) {<a name="line.23939"></a>
<span class="sourceLineNo">23940</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.23940"></a>
<span class="sourceLineNo">23941</span> long ox;<a name="line.23941"></a>
<span class="sourceLineNo">23942</span> ox = toLong(Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.23942"></a>
<span class="sourceLineNo">23943</span> oai64data[it.oIndex + j] = ox;<a name="line.23943"></a>
<span class="sourceLineNo">23944</span> }<a name="line.23944"></a>
<span class="sourceLineNo">23945</span> }<a name="line.23945"></a>
<span class="sourceLineNo">23946</span> }<a name="line.23946"></a>
<span class="sourceLineNo">23947</span> }<a name="line.23947"></a>
<span class="sourceLineNo">23948</span> break;<a name="line.23948"></a>
<span class="sourceLineNo">23949</span> case Dataset.ARRAYINT32:<a name="line.23949"></a>
<span class="sourceLineNo">23950</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.23950"></a>
<span class="sourceLineNo">23951</span> if (is == 1) {<a name="line.23951"></a>
<span class="sourceLineNo">23952</span> if (it.isOutputDouble()) {<a name="line.23952"></a>
<span class="sourceLineNo">23953</span> while (it.hasNext()) {<a name="line.23953"></a>
<span class="sourceLineNo">23954</span> final double ix = it.aDouble;<a name="line.23954"></a>
<span class="sourceLineNo">23955</span> int ox;<a name="line.23955"></a>
<span class="sourceLineNo">23956</span> ox = (int) toLong(Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.23956"></a>
<span class="sourceLineNo">23957</span> oai32data[it.oIndex] = ox;<a name="line.23957"></a>
<span class="sourceLineNo">23958</span> }<a name="line.23958"></a>
<span class="sourceLineNo">23959</span> } else {<a name="line.23959"></a>
<span class="sourceLineNo">23960</span> while (it.hasNext()) {<a name="line.23960"></a>
<span class="sourceLineNo">23961</span> final long ix = it.aLong;<a name="line.23961"></a>
<span class="sourceLineNo">23962</span> int ox;<a name="line.23962"></a>
<span class="sourceLineNo">23963</span> ox = (int) toLong(Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.23963"></a>
<span class="sourceLineNo">23964</span> oai32data[it.oIndex] = ox;<a name="line.23964"></a>
<span class="sourceLineNo">23965</span> }<a name="line.23965"></a>
<span class="sourceLineNo">23966</span> }<a name="line.23966"></a>
<span class="sourceLineNo">23967</span> } else if (as == 1) {<a name="line.23967"></a>
<span class="sourceLineNo">23968</span> if (it.isOutputDouble()) {<a name="line.23968"></a>
<span class="sourceLineNo">23969</span> while (it.hasNext()) {<a name="line.23969"></a>
<span class="sourceLineNo">23970</span> final double ix = it.aDouble;<a name="line.23970"></a>
<span class="sourceLineNo">23971</span> int ox;<a name="line.23971"></a>
<span class="sourceLineNo">23972</span> ox = (int) toLong(Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.23972"></a>
<span class="sourceLineNo">23973</span> for (int j = 0; j &lt; is; j++) {<a name="line.23973"></a>
<span class="sourceLineNo">23974</span> oai32data[it.oIndex + j] = ox;<a name="line.23974"></a>
<span class="sourceLineNo">23975</span> }<a name="line.23975"></a>
<span class="sourceLineNo">23976</span> }<a name="line.23976"></a>
<span class="sourceLineNo">23977</span> } else {<a name="line.23977"></a>
<span class="sourceLineNo">23978</span> while (it.hasNext()) {<a name="line.23978"></a>
<span class="sourceLineNo">23979</span> final long ix = it.aLong;<a name="line.23979"></a>
<span class="sourceLineNo">23980</span> int ox;<a name="line.23980"></a>
<span class="sourceLineNo">23981</span> ox = (int) toLong(Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.23981"></a>
<span class="sourceLineNo">23982</span> for (int j = 0; j &lt; is; j++) {<a name="line.23982"></a>
<span class="sourceLineNo">23983</span> oai32data[it.oIndex + j] = ox;<a name="line.23983"></a>
<span class="sourceLineNo">23984</span> }<a name="line.23984"></a>
<span class="sourceLineNo">23985</span> }<a name="line.23985"></a>
<span class="sourceLineNo">23986</span> }<a name="line.23986"></a>
<span class="sourceLineNo">23987</span> } else {<a name="line.23987"></a>
<span class="sourceLineNo">23988</span> if (it.isOutputDouble()) {<a name="line.23988"></a>
<span class="sourceLineNo">23989</span> while (it.hasNext()) {<a name="line.23989"></a>
<span class="sourceLineNo">23990</span> for (int j = 0; j &lt; is; j++) {<a name="line.23990"></a>
<span class="sourceLineNo">23991</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.23991"></a>
<span class="sourceLineNo">23992</span> int ox;<a name="line.23992"></a>
<span class="sourceLineNo">23993</span> ox = (int) toLong(Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.23993"></a>
<span class="sourceLineNo">23994</span> oai32data[it.oIndex + j] = ox;<a name="line.23994"></a>
<span class="sourceLineNo">23995</span> }<a name="line.23995"></a>
<span class="sourceLineNo">23996</span> }<a name="line.23996"></a>
<span class="sourceLineNo">23997</span> } else {<a name="line.23997"></a>
<span class="sourceLineNo">23998</span> while (it.hasNext()) {<a name="line.23998"></a>
<span class="sourceLineNo">23999</span> for (int j = 0; j &lt; is; j++) {<a name="line.23999"></a>
<span class="sourceLineNo">24000</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.24000"></a>
<span class="sourceLineNo">24001</span> int ox;<a name="line.24001"></a>
<span class="sourceLineNo">24002</span> ox = (int) toLong(Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.24002"></a>
<span class="sourceLineNo">24003</span> oai32data[it.oIndex + j] = ox;<a name="line.24003"></a>
<span class="sourceLineNo">24004</span> }<a name="line.24004"></a>
<span class="sourceLineNo">24005</span> }<a name="line.24005"></a>
<span class="sourceLineNo">24006</span> }<a name="line.24006"></a>
<span class="sourceLineNo">24007</span> }<a name="line.24007"></a>
<span class="sourceLineNo">24008</span> break;<a name="line.24008"></a>
<span class="sourceLineNo">24009</span> case Dataset.FLOAT32:<a name="line.24009"></a>
<span class="sourceLineNo">24010</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.24010"></a>
<span class="sourceLineNo">24011</span> if (it.isOutputDouble()) {<a name="line.24011"></a>
<span class="sourceLineNo">24012</span> while (it.hasNext()) {<a name="line.24012"></a>
<span class="sourceLineNo">24013</span> final double ix = it.aDouble;<a name="line.24013"></a>
<span class="sourceLineNo">24014</span> float ox;<a name="line.24014"></a>
<span class="sourceLineNo">24015</span> ox = (float) (Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.24015"></a>
<span class="sourceLineNo">24016</span> of32data[it.oIndex] = ox;<a name="line.24016"></a>
<span class="sourceLineNo">24017</span> }<a name="line.24017"></a>
<span class="sourceLineNo">24018</span> } else {<a name="line.24018"></a>
<span class="sourceLineNo">24019</span> while (it.hasNext()) {<a name="line.24019"></a>
<span class="sourceLineNo">24020</span> final long ix = it.aLong;<a name="line.24020"></a>
<span class="sourceLineNo">24021</span> float ox;<a name="line.24021"></a>
<span class="sourceLineNo">24022</span> ox = (float) (Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.24022"></a>
<span class="sourceLineNo">24023</span> of32data[it.oIndex] = ox;<a name="line.24023"></a>
<span class="sourceLineNo">24024</span> }<a name="line.24024"></a>
<span class="sourceLineNo">24025</span> }<a name="line.24025"></a>
<span class="sourceLineNo">24026</span> break;<a name="line.24026"></a>
<span class="sourceLineNo">24027</span> case Dataset.FLOAT64:<a name="line.24027"></a>
<span class="sourceLineNo">24028</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.24028"></a>
<span class="sourceLineNo">24029</span> if (it.isOutputDouble()) {<a name="line.24029"></a>
<span class="sourceLineNo">24030</span> while (it.hasNext()) {<a name="line.24030"></a>
<span class="sourceLineNo">24031</span> final double ix = it.aDouble;<a name="line.24031"></a>
<span class="sourceLineNo">24032</span> double ox;<a name="line.24032"></a>
<span class="sourceLineNo">24033</span> ox = (Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.24033"></a>
<span class="sourceLineNo">24034</span> of64data[it.oIndex] = ox;<a name="line.24034"></a>
<span class="sourceLineNo">24035</span> }<a name="line.24035"></a>
<span class="sourceLineNo">24036</span> } else {<a name="line.24036"></a>
<span class="sourceLineNo">24037</span> while (it.hasNext()) {<a name="line.24037"></a>
<span class="sourceLineNo">24038</span> final long ix = it.aLong;<a name="line.24038"></a>
<span class="sourceLineNo">24039</span> double ox;<a name="line.24039"></a>
<span class="sourceLineNo">24040</span> ox = (Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.24040"></a>
<span class="sourceLineNo">24041</span> of64data[it.oIndex] = ox;<a name="line.24041"></a>
<span class="sourceLineNo">24042</span> }<a name="line.24042"></a>
<span class="sourceLineNo">24043</span> }<a name="line.24043"></a>
<span class="sourceLineNo">24044</span> break;<a name="line.24044"></a>
<span class="sourceLineNo">24045</span> case Dataset.ARRAYFLOAT32:<a name="line.24045"></a>
<span class="sourceLineNo">24046</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.24046"></a>
<span class="sourceLineNo">24047</span> if (is == 1) {<a name="line.24047"></a>
<span class="sourceLineNo">24048</span> if (it.isOutputDouble()) {<a name="line.24048"></a>
<span class="sourceLineNo">24049</span> while (it.hasNext()) {<a name="line.24049"></a>
<span class="sourceLineNo">24050</span> final double ix = it.aDouble;<a name="line.24050"></a>
<span class="sourceLineNo">24051</span> float ox;<a name="line.24051"></a>
<span class="sourceLineNo">24052</span> ox = (float) (Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.24052"></a>
<span class="sourceLineNo">24053</span> oaf32data[it.oIndex] = ox;<a name="line.24053"></a>
<span class="sourceLineNo">24054</span> }<a name="line.24054"></a>
<span class="sourceLineNo">24055</span> } else {<a name="line.24055"></a>
<span class="sourceLineNo">24056</span> while (it.hasNext()) {<a name="line.24056"></a>
<span class="sourceLineNo">24057</span> final long ix = it.aLong;<a name="line.24057"></a>
<span class="sourceLineNo">24058</span> float ox;<a name="line.24058"></a>
<span class="sourceLineNo">24059</span> ox = (float) (Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.24059"></a>
<span class="sourceLineNo">24060</span> oaf32data[it.oIndex] = ox;<a name="line.24060"></a>
<span class="sourceLineNo">24061</span> }<a name="line.24061"></a>
<span class="sourceLineNo">24062</span> }<a name="line.24062"></a>
<span class="sourceLineNo">24063</span> } else if (as == 1) {<a name="line.24063"></a>
<span class="sourceLineNo">24064</span> if (it.isOutputDouble()) {<a name="line.24064"></a>
<span class="sourceLineNo">24065</span> while (it.hasNext()) {<a name="line.24065"></a>
<span class="sourceLineNo">24066</span> final double ix = it.aDouble;<a name="line.24066"></a>
<span class="sourceLineNo">24067</span> float ox;<a name="line.24067"></a>
<span class="sourceLineNo">24068</span> ox = (float) (Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.24068"></a>
<span class="sourceLineNo">24069</span> for (int j = 0; j &lt; is; j++) {<a name="line.24069"></a>
<span class="sourceLineNo">24070</span> oaf32data[it.oIndex + j] = ox;<a name="line.24070"></a>
<span class="sourceLineNo">24071</span> }<a name="line.24071"></a>
<span class="sourceLineNo">24072</span> }<a name="line.24072"></a>
<span class="sourceLineNo">24073</span> } else {<a name="line.24073"></a>
<span class="sourceLineNo">24074</span> while (it.hasNext()) {<a name="line.24074"></a>
<span class="sourceLineNo">24075</span> final long ix = it.aLong;<a name="line.24075"></a>
<span class="sourceLineNo">24076</span> float ox;<a name="line.24076"></a>
<span class="sourceLineNo">24077</span> ox = (float) (Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.24077"></a>
<span class="sourceLineNo">24078</span> for (int j = 0; j &lt; is; j++) {<a name="line.24078"></a>
<span class="sourceLineNo">24079</span> oaf32data[it.oIndex + j] = ox;<a name="line.24079"></a>
<span class="sourceLineNo">24080</span> }<a name="line.24080"></a>
<span class="sourceLineNo">24081</span> }<a name="line.24081"></a>
<span class="sourceLineNo">24082</span> }<a name="line.24082"></a>
<span class="sourceLineNo">24083</span> } else {<a name="line.24083"></a>
<span class="sourceLineNo">24084</span> if (it.isOutputDouble()) {<a name="line.24084"></a>
<span class="sourceLineNo">24085</span> while (it.hasNext()) {<a name="line.24085"></a>
<span class="sourceLineNo">24086</span> for (int j = 0; j &lt; is; j++) {<a name="line.24086"></a>
<span class="sourceLineNo">24087</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.24087"></a>
<span class="sourceLineNo">24088</span> float ox;<a name="line.24088"></a>
<span class="sourceLineNo">24089</span> ox = (float) (Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.24089"></a>
<span class="sourceLineNo">24090</span> oaf32data[it.oIndex + j] = ox;<a name="line.24090"></a>
<span class="sourceLineNo">24091</span> }<a name="line.24091"></a>
<span class="sourceLineNo">24092</span> }<a name="line.24092"></a>
<span class="sourceLineNo">24093</span> } else {<a name="line.24093"></a>
<span class="sourceLineNo">24094</span> while (it.hasNext()) {<a name="line.24094"></a>
<span class="sourceLineNo">24095</span> for (int j = 0; j &lt; is; j++) {<a name="line.24095"></a>
<span class="sourceLineNo">24096</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.24096"></a>
<span class="sourceLineNo">24097</span> float ox;<a name="line.24097"></a>
<span class="sourceLineNo">24098</span> ox = (float) (Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.24098"></a>
<span class="sourceLineNo">24099</span> oaf32data[it.oIndex + j] = ox;<a name="line.24099"></a>
<span class="sourceLineNo">24100</span> }<a name="line.24100"></a>
<span class="sourceLineNo">24101</span> }<a name="line.24101"></a>
<span class="sourceLineNo">24102</span> }<a name="line.24102"></a>
<span class="sourceLineNo">24103</span> }<a name="line.24103"></a>
<span class="sourceLineNo">24104</span> break;<a name="line.24104"></a>
<span class="sourceLineNo">24105</span> case Dataset.ARRAYFLOAT64:<a name="line.24105"></a>
<span class="sourceLineNo">24106</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.24106"></a>
<span class="sourceLineNo">24107</span> if (is == 1) {<a name="line.24107"></a>
<span class="sourceLineNo">24108</span> if (it.isOutputDouble()) {<a name="line.24108"></a>
<span class="sourceLineNo">24109</span> while (it.hasNext()) {<a name="line.24109"></a>
<span class="sourceLineNo">24110</span> final double ix = it.aDouble;<a name="line.24110"></a>
<span class="sourceLineNo">24111</span> double ox;<a name="line.24111"></a>
<span class="sourceLineNo">24112</span> ox = (Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.24112"></a>
<span class="sourceLineNo">24113</span> oaf64data[it.oIndex] = ox;<a name="line.24113"></a>
<span class="sourceLineNo">24114</span> }<a name="line.24114"></a>
<span class="sourceLineNo">24115</span> } else {<a name="line.24115"></a>
<span class="sourceLineNo">24116</span> while (it.hasNext()) {<a name="line.24116"></a>
<span class="sourceLineNo">24117</span> final long ix = it.aLong;<a name="line.24117"></a>
<span class="sourceLineNo">24118</span> double ox;<a name="line.24118"></a>
<span class="sourceLineNo">24119</span> ox = (Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.24119"></a>
<span class="sourceLineNo">24120</span> oaf64data[it.oIndex] = ox;<a name="line.24120"></a>
<span class="sourceLineNo">24121</span> }<a name="line.24121"></a>
<span class="sourceLineNo">24122</span> }<a name="line.24122"></a>
<span class="sourceLineNo">24123</span> } else if (as == 1) {<a name="line.24123"></a>
<span class="sourceLineNo">24124</span> if (it.isOutputDouble()) {<a name="line.24124"></a>
<span class="sourceLineNo">24125</span> while (it.hasNext()) {<a name="line.24125"></a>
<span class="sourceLineNo">24126</span> final double ix = it.aDouble;<a name="line.24126"></a>
<span class="sourceLineNo">24127</span> double ox;<a name="line.24127"></a>
<span class="sourceLineNo">24128</span> ox = (Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.24128"></a>
<span class="sourceLineNo">24129</span> for (int j = 0; j &lt; is; j++) {<a name="line.24129"></a>
<span class="sourceLineNo">24130</span> oaf64data[it.oIndex + j] = ox;<a name="line.24130"></a>
<span class="sourceLineNo">24131</span> }<a name="line.24131"></a>
<span class="sourceLineNo">24132</span> }<a name="line.24132"></a>
<span class="sourceLineNo">24133</span> } else {<a name="line.24133"></a>
<span class="sourceLineNo">24134</span> while (it.hasNext()) {<a name="line.24134"></a>
<span class="sourceLineNo">24135</span> final long ix = it.aLong;<a name="line.24135"></a>
<span class="sourceLineNo">24136</span> double ox;<a name="line.24136"></a>
<span class="sourceLineNo">24137</span> ox = (Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.24137"></a>
<span class="sourceLineNo">24138</span> for (int j = 0; j &lt; is; j++) {<a name="line.24138"></a>
<span class="sourceLineNo">24139</span> oaf64data[it.oIndex + j] = ox;<a name="line.24139"></a>
<span class="sourceLineNo">24140</span> }<a name="line.24140"></a>
<span class="sourceLineNo">24141</span> }<a name="line.24141"></a>
<span class="sourceLineNo">24142</span> }<a name="line.24142"></a>
<span class="sourceLineNo">24143</span> } else {<a name="line.24143"></a>
<span class="sourceLineNo">24144</span> if (it.isOutputDouble()) {<a name="line.24144"></a>
<span class="sourceLineNo">24145</span> while (it.hasNext()) {<a name="line.24145"></a>
<span class="sourceLineNo">24146</span> for (int j = 0; j &lt; is; j++) {<a name="line.24146"></a>
<span class="sourceLineNo">24147</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.24147"></a>
<span class="sourceLineNo">24148</span> double ox;<a name="line.24148"></a>
<span class="sourceLineNo">24149</span> ox = (Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.24149"></a>
<span class="sourceLineNo">24150</span> oaf64data[it.oIndex + j] = ox;<a name="line.24150"></a>
<span class="sourceLineNo">24151</span> }<a name="line.24151"></a>
<span class="sourceLineNo">24152</span> }<a name="line.24152"></a>
<span class="sourceLineNo">24153</span> } else {<a name="line.24153"></a>
<span class="sourceLineNo">24154</span> while (it.hasNext()) {<a name="line.24154"></a>
<span class="sourceLineNo">24155</span> for (int j = 0; j &lt; is; j++) {<a name="line.24155"></a>
<span class="sourceLineNo">24156</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.24156"></a>
<span class="sourceLineNo">24157</span> double ox;<a name="line.24157"></a>
<span class="sourceLineNo">24158</span> ox = (Math.log(ix + Math.sqrt(ix*ix - 1)));<a name="line.24158"></a>
<span class="sourceLineNo">24159</span> oaf64data[it.oIndex + j] = ox;<a name="line.24159"></a>
<span class="sourceLineNo">24160</span> }<a name="line.24160"></a>
<span class="sourceLineNo">24161</span> }<a name="line.24161"></a>
<span class="sourceLineNo">24162</span> }<a name="line.24162"></a>
<span class="sourceLineNo">24163</span> }<a name="line.24163"></a>
<span class="sourceLineNo">24164</span> break;<a name="line.24164"></a>
<span class="sourceLineNo">24165</span> case Dataset.COMPLEX64:<a name="line.24165"></a>
<span class="sourceLineNo">24166</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.24166"></a>
<span class="sourceLineNo">24167</span> if (!da.isComplex()) {<a name="line.24167"></a>
<span class="sourceLineNo">24168</span> if (it.isOutputDouble()) {<a name="line.24168"></a>
<span class="sourceLineNo">24169</span> final double iy = 0;<a name="line.24169"></a>
<span class="sourceLineNo">24170</span> while (it.hasNext()) {<a name="line.24170"></a>
<span class="sourceLineNo">24171</span> final double ix = it.aDouble;<a name="line.24171"></a>
<span class="sourceLineNo">24172</span> Complex tz;<a name="line.24172"></a>
<span class="sourceLineNo">24173</span> float ox;<a name="line.24173"></a>
<span class="sourceLineNo">24174</span> float oy;<a name="line.24174"></a>
<span class="sourceLineNo">24175</span> tz = new Complex(-iy, ix).acos();<a name="line.24175"></a>
<span class="sourceLineNo">24176</span> ox = (float) (tz.getImaginary());<a name="line.24176"></a>
<span class="sourceLineNo">24177</span> oy = (float) (-tz.getReal());<a name="line.24177"></a>
<span class="sourceLineNo">24178</span> oc64data[it.oIndex] = ox;<a name="line.24178"></a>
<span class="sourceLineNo">24179</span> oc64data[it.oIndex + 1] = oy;<a name="line.24179"></a>
<span class="sourceLineNo">24180</span> }<a name="line.24180"></a>
<span class="sourceLineNo">24181</span> } else {<a name="line.24181"></a>
<span class="sourceLineNo">24182</span> final long iy = 0;<a name="line.24182"></a>
<span class="sourceLineNo">24183</span> while (it.hasNext()) {<a name="line.24183"></a>
<span class="sourceLineNo">24184</span> final long ix = it.aLong;<a name="line.24184"></a>
<span class="sourceLineNo">24185</span> Complex tz;<a name="line.24185"></a>
<span class="sourceLineNo">24186</span> float ox;<a name="line.24186"></a>
<span class="sourceLineNo">24187</span> float oy;<a name="line.24187"></a>
<span class="sourceLineNo">24188</span> tz = new Complex(-iy, ix).acos();<a name="line.24188"></a>
<span class="sourceLineNo">24189</span> ox = (float) toLong(tz.getImaginary());<a name="line.24189"></a>
<span class="sourceLineNo">24190</span> oy = (float) toLong(-tz.getReal());<a name="line.24190"></a>
<span class="sourceLineNo">24191</span> oc64data[it.oIndex] = ox;<a name="line.24191"></a>
<span class="sourceLineNo">24192</span> oc64data[it.oIndex + 1] = oy;<a name="line.24192"></a>
<span class="sourceLineNo">24193</span> }<a name="line.24193"></a>
<span class="sourceLineNo">24194</span> }<a name="line.24194"></a>
<span class="sourceLineNo">24195</span> } else {<a name="line.24195"></a>
<span class="sourceLineNo">24196</span> while (it.hasNext()) {<a name="line.24196"></a>
<span class="sourceLineNo">24197</span> final double ix = it.aDouble;<a name="line.24197"></a>
<span class="sourceLineNo">24198</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.24198"></a>
<span class="sourceLineNo">24199</span> Complex tz;<a name="line.24199"></a>
<span class="sourceLineNo">24200</span> float ox;<a name="line.24200"></a>
<span class="sourceLineNo">24201</span> float oy;<a name="line.24201"></a>
<span class="sourceLineNo">24202</span> tz = new Complex(-iy, ix).acos();<a name="line.24202"></a>
<span class="sourceLineNo">24203</span> ox = (float) (tz.getImaginary());<a name="line.24203"></a>
<span class="sourceLineNo">24204</span> oy = (float) (-tz.getReal());<a name="line.24204"></a>
<span class="sourceLineNo">24205</span> oc64data[it.oIndex] = ox;<a name="line.24205"></a>
<span class="sourceLineNo">24206</span> oc64data[it.oIndex + 1] = oy;<a name="line.24206"></a>
<span class="sourceLineNo">24207</span> }<a name="line.24207"></a>
<span class="sourceLineNo">24208</span> }<a name="line.24208"></a>
<span class="sourceLineNo">24209</span> break;<a name="line.24209"></a>
<span class="sourceLineNo">24210</span> case Dataset.COMPLEX128:<a name="line.24210"></a>
<span class="sourceLineNo">24211</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.24211"></a>
<span class="sourceLineNo">24212</span> if (!da.isComplex()) {<a name="line.24212"></a>
<span class="sourceLineNo">24213</span> if (it.isOutputDouble()) {<a name="line.24213"></a>
<span class="sourceLineNo">24214</span> final double iy = 0;<a name="line.24214"></a>
<span class="sourceLineNo">24215</span> while (it.hasNext()) {<a name="line.24215"></a>
<span class="sourceLineNo">24216</span> final double ix = it.aDouble;<a name="line.24216"></a>
<span class="sourceLineNo">24217</span> Complex tz;<a name="line.24217"></a>
<span class="sourceLineNo">24218</span> double ox;<a name="line.24218"></a>
<span class="sourceLineNo">24219</span> double oy;<a name="line.24219"></a>
<span class="sourceLineNo">24220</span> tz = new Complex(-iy, ix).acos();<a name="line.24220"></a>
<span class="sourceLineNo">24221</span> ox = (tz.getImaginary());<a name="line.24221"></a>
<span class="sourceLineNo">24222</span> oy = (-tz.getReal());<a name="line.24222"></a>
<span class="sourceLineNo">24223</span> oc128data[it.oIndex] = ox;<a name="line.24223"></a>
<span class="sourceLineNo">24224</span> oc128data[it.oIndex + 1] = oy;<a name="line.24224"></a>
<span class="sourceLineNo">24225</span> }<a name="line.24225"></a>
<span class="sourceLineNo">24226</span> } else {<a name="line.24226"></a>
<span class="sourceLineNo">24227</span> final long iy = 0;<a name="line.24227"></a>
<span class="sourceLineNo">24228</span> while (it.hasNext()) {<a name="line.24228"></a>
<span class="sourceLineNo">24229</span> final long ix = it.aLong;<a name="line.24229"></a>
<span class="sourceLineNo">24230</span> Complex tz;<a name="line.24230"></a>
<span class="sourceLineNo">24231</span> double ox;<a name="line.24231"></a>
<span class="sourceLineNo">24232</span> double oy;<a name="line.24232"></a>
<span class="sourceLineNo">24233</span> tz = new Complex(-iy, ix).acos();<a name="line.24233"></a>
<span class="sourceLineNo">24234</span> ox = (tz.getImaginary());<a name="line.24234"></a>
<span class="sourceLineNo">24235</span> oy = (-tz.getReal());<a name="line.24235"></a>
<span class="sourceLineNo">24236</span> oc128data[it.oIndex] = ox;<a name="line.24236"></a>
<span class="sourceLineNo">24237</span> oc128data[it.oIndex + 1] = oy;<a name="line.24237"></a>
<span class="sourceLineNo">24238</span> }<a name="line.24238"></a>
<span class="sourceLineNo">24239</span> }<a name="line.24239"></a>
<span class="sourceLineNo">24240</span> } else {<a name="line.24240"></a>
<span class="sourceLineNo">24241</span> while (it.hasNext()) {<a name="line.24241"></a>
<span class="sourceLineNo">24242</span> final double ix = it.aDouble;<a name="line.24242"></a>
<span class="sourceLineNo">24243</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.24243"></a>
<span class="sourceLineNo">24244</span> Complex tz;<a name="line.24244"></a>
<span class="sourceLineNo">24245</span> double ox;<a name="line.24245"></a>
<span class="sourceLineNo">24246</span> double oy;<a name="line.24246"></a>
<span class="sourceLineNo">24247</span> tz = new Complex(-iy, ix).acos();<a name="line.24247"></a>
<span class="sourceLineNo">24248</span> ox = (tz.getImaginary());<a name="line.24248"></a>
<span class="sourceLineNo">24249</span> oy = (-tz.getReal());<a name="line.24249"></a>
<span class="sourceLineNo">24250</span> oc128data[it.oIndex] = ox;<a name="line.24250"></a>
<span class="sourceLineNo">24251</span> oc128data[it.oIndex + 1] = oy;<a name="line.24251"></a>
<span class="sourceLineNo">24252</span> }<a name="line.24252"></a>
<span class="sourceLineNo">24253</span> }<a name="line.24253"></a>
<span class="sourceLineNo">24254</span> break;<a name="line.24254"></a>
<span class="sourceLineNo">24255</span> default:<a name="line.24255"></a>
<span class="sourceLineNo">24256</span> throw new IllegalArgumentException("arccosh supports integer, compound integer, real, compound real, complex datasets only");<a name="line.24256"></a>
<span class="sourceLineNo">24257</span> }<a name="line.24257"></a>
<span class="sourceLineNo">24258</span><a name="line.24258"></a>
<span class="sourceLineNo">24259</span> addFunctionName(result, "arccosh");<a name="line.24259"></a>
<span class="sourceLineNo">24260</span> return result;<a name="line.24260"></a>
<span class="sourceLineNo">24261</span> }<a name="line.24261"></a>
<span class="sourceLineNo">24262</span><a name="line.24262"></a>
<span class="sourceLineNo">24263</span> /**<a name="line.24263"></a>
<span class="sourceLineNo">24264</span> * arctanh - evaluate the inverse hyperbolic tangent function on each element of the dataset<a name="line.24264"></a>
<span class="sourceLineNo">24265</span> * @param a<a name="line.24265"></a>
<span class="sourceLineNo">24266</span> * @return dataset<a name="line.24266"></a>
<span class="sourceLineNo">24267</span> */<a name="line.24267"></a>
<span class="sourceLineNo">24268</span> public static Dataset arctanh(final Object a) {<a name="line.24268"></a>
<span class="sourceLineNo">24269</span> return arctanh(a, null);<a name="line.24269"></a>
<span class="sourceLineNo">24270</span> }<a name="line.24270"></a>
<span class="sourceLineNo">24271</span><a name="line.24271"></a>
<span class="sourceLineNo">24272</span> /**<a name="line.24272"></a>
<span class="sourceLineNo">24273</span> * arctanh - evaluate the inverse hyperbolic tangent function on each element of the dataset<a name="line.24273"></a>
<span class="sourceLineNo">24274</span> * @param a<a name="line.24274"></a>
<span class="sourceLineNo">24275</span> * @param o output can be null - in which case, a new dataset is created<a name="line.24275"></a>
<span class="sourceLineNo">24276</span> * @return dataset<a name="line.24276"></a>
<span class="sourceLineNo">24277</span> */<a name="line.24277"></a>
<span class="sourceLineNo">24278</span> public static Dataset arctanh(final Object a, final Dataset o) {<a name="line.24278"></a>
<span class="sourceLineNo">24279</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.24279"></a>
<span class="sourceLineNo">24280</span> SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true);<a name="line.24280"></a>
<span class="sourceLineNo">24281</span> final Dataset result = it.getOutput();<a name="line.24281"></a>
<span class="sourceLineNo">24282</span> if (!result.isComplex()) {<a name="line.24282"></a>
<span class="sourceLineNo">24283</span> if (da.isComplex()) {<a name="line.24283"></a>
<span class="sourceLineNo">24284</span> da = da.getRealView();<a name="line.24284"></a>
<span class="sourceLineNo">24285</span> it = new SingleInputBroadcastIterator(da, result, true);<a name="line.24285"></a>
<span class="sourceLineNo">24286</span> }<a name="line.24286"></a>
<span class="sourceLineNo">24287</span> }<a name="line.24287"></a>
<span class="sourceLineNo">24288</span> final int is = result.getElementsPerItem();<a name="line.24288"></a>
<span class="sourceLineNo">24289</span> final int as = da.getElementsPerItem();<a name="line.24289"></a>
<span class="sourceLineNo">24290</span> final int dt = result.getDType();<a name="line.24290"></a>
<span class="sourceLineNo">24291</span><a name="line.24291"></a>
<span class="sourceLineNo">24292</span> switch(dt) {<a name="line.24292"></a>
<span class="sourceLineNo">24293</span> case Dataset.INT8:<a name="line.24293"></a>
<span class="sourceLineNo">24294</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.24294"></a>
<span class="sourceLineNo">24295</span> if (it.isOutputDouble()) {<a name="line.24295"></a>
<span class="sourceLineNo">24296</span> while (it.hasNext()) {<a name="line.24296"></a>
<span class="sourceLineNo">24297</span> final double ix = it.aDouble;<a name="line.24297"></a>
<span class="sourceLineNo">24298</span> byte ox;<a name="line.24298"></a>
<span class="sourceLineNo">24299</span> ox = (byte) toLong(0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24299"></a>
<span class="sourceLineNo">24300</span> oi8data[it.oIndex] = ox;<a name="line.24300"></a>
<span class="sourceLineNo">24301</span> }<a name="line.24301"></a>
<span class="sourceLineNo">24302</span> } else {<a name="line.24302"></a>
<span class="sourceLineNo">24303</span> while (it.hasNext()) {<a name="line.24303"></a>
<span class="sourceLineNo">24304</span> final long ix = it.aLong;<a name="line.24304"></a>
<span class="sourceLineNo">24305</span> byte ox;<a name="line.24305"></a>
<span class="sourceLineNo">24306</span> ox = (byte) toLong(0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24306"></a>
<span class="sourceLineNo">24307</span> oi8data[it.oIndex] = ox;<a name="line.24307"></a>
<span class="sourceLineNo">24308</span> }<a name="line.24308"></a>
<span class="sourceLineNo">24309</span> }<a name="line.24309"></a>
<span class="sourceLineNo">24310</span> break;<a name="line.24310"></a>
<span class="sourceLineNo">24311</span> case Dataset.INT16:<a name="line.24311"></a>
<span class="sourceLineNo">24312</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.24312"></a>
<span class="sourceLineNo">24313</span> if (it.isOutputDouble()) {<a name="line.24313"></a>
<span class="sourceLineNo">24314</span> while (it.hasNext()) {<a name="line.24314"></a>
<span class="sourceLineNo">24315</span> final double ix = it.aDouble;<a name="line.24315"></a>
<span class="sourceLineNo">24316</span> short ox;<a name="line.24316"></a>
<span class="sourceLineNo">24317</span> ox = (short) toLong(0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24317"></a>
<span class="sourceLineNo">24318</span> oi16data[it.oIndex] = ox;<a name="line.24318"></a>
<span class="sourceLineNo">24319</span> }<a name="line.24319"></a>
<span class="sourceLineNo">24320</span> } else {<a name="line.24320"></a>
<span class="sourceLineNo">24321</span> while (it.hasNext()) {<a name="line.24321"></a>
<span class="sourceLineNo">24322</span> final long ix = it.aLong;<a name="line.24322"></a>
<span class="sourceLineNo">24323</span> short ox;<a name="line.24323"></a>
<span class="sourceLineNo">24324</span> ox = (short) toLong(0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24324"></a>
<span class="sourceLineNo">24325</span> oi16data[it.oIndex] = ox;<a name="line.24325"></a>
<span class="sourceLineNo">24326</span> }<a name="line.24326"></a>
<span class="sourceLineNo">24327</span> }<a name="line.24327"></a>
<span class="sourceLineNo">24328</span> break;<a name="line.24328"></a>
<span class="sourceLineNo">24329</span> case Dataset.INT64:<a name="line.24329"></a>
<span class="sourceLineNo">24330</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.24330"></a>
<span class="sourceLineNo">24331</span> if (it.isOutputDouble()) {<a name="line.24331"></a>
<span class="sourceLineNo">24332</span> while (it.hasNext()) {<a name="line.24332"></a>
<span class="sourceLineNo">24333</span> final double ix = it.aDouble;<a name="line.24333"></a>
<span class="sourceLineNo">24334</span> long ox;<a name="line.24334"></a>
<span class="sourceLineNo">24335</span> ox = toLong(0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24335"></a>
<span class="sourceLineNo">24336</span> oi64data[it.oIndex] = ox;<a name="line.24336"></a>
<span class="sourceLineNo">24337</span> }<a name="line.24337"></a>
<span class="sourceLineNo">24338</span> } else {<a name="line.24338"></a>
<span class="sourceLineNo">24339</span> while (it.hasNext()) {<a name="line.24339"></a>
<span class="sourceLineNo">24340</span> final long ix = it.aLong;<a name="line.24340"></a>
<span class="sourceLineNo">24341</span> long ox;<a name="line.24341"></a>
<span class="sourceLineNo">24342</span> ox = toLong(0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24342"></a>
<span class="sourceLineNo">24343</span> oi64data[it.oIndex] = ox;<a name="line.24343"></a>
<span class="sourceLineNo">24344</span> }<a name="line.24344"></a>
<span class="sourceLineNo">24345</span> }<a name="line.24345"></a>
<span class="sourceLineNo">24346</span> break;<a name="line.24346"></a>
<span class="sourceLineNo">24347</span> case Dataset.INT32:<a name="line.24347"></a>
<span class="sourceLineNo">24348</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.24348"></a>
<span class="sourceLineNo">24349</span> if (it.isOutputDouble()) {<a name="line.24349"></a>
<span class="sourceLineNo">24350</span> while (it.hasNext()) {<a name="line.24350"></a>
<span class="sourceLineNo">24351</span> final double ix = it.aDouble;<a name="line.24351"></a>
<span class="sourceLineNo">24352</span> int ox;<a name="line.24352"></a>
<span class="sourceLineNo">24353</span> ox = (int) toLong(0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24353"></a>
<span class="sourceLineNo">24354</span> oi32data[it.oIndex] = ox;<a name="line.24354"></a>
<span class="sourceLineNo">24355</span> }<a name="line.24355"></a>
<span class="sourceLineNo">24356</span> } else {<a name="line.24356"></a>
<span class="sourceLineNo">24357</span> while (it.hasNext()) {<a name="line.24357"></a>
<span class="sourceLineNo">24358</span> final long ix = it.aLong;<a name="line.24358"></a>
<span class="sourceLineNo">24359</span> int ox;<a name="line.24359"></a>
<span class="sourceLineNo">24360</span> ox = (int) toLong(0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24360"></a>
<span class="sourceLineNo">24361</span> oi32data[it.oIndex] = ox;<a name="line.24361"></a>
<span class="sourceLineNo">24362</span> }<a name="line.24362"></a>
<span class="sourceLineNo">24363</span> }<a name="line.24363"></a>
<span class="sourceLineNo">24364</span> break;<a name="line.24364"></a>
<span class="sourceLineNo">24365</span> case Dataset.ARRAYINT8:<a name="line.24365"></a>
<span class="sourceLineNo">24366</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.24366"></a>
<span class="sourceLineNo">24367</span> if (is == 1) {<a name="line.24367"></a>
<span class="sourceLineNo">24368</span> if (it.isOutputDouble()) {<a name="line.24368"></a>
<span class="sourceLineNo">24369</span> while (it.hasNext()) {<a name="line.24369"></a>
<span class="sourceLineNo">24370</span> final double ix = it.aDouble;<a name="line.24370"></a>
<span class="sourceLineNo">24371</span> byte ox;<a name="line.24371"></a>
<span class="sourceLineNo">24372</span> ox = (byte) toLong(0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24372"></a>
<span class="sourceLineNo">24373</span> oai8data[it.oIndex] = ox;<a name="line.24373"></a>
<span class="sourceLineNo">24374</span> }<a name="line.24374"></a>
<span class="sourceLineNo">24375</span> } else {<a name="line.24375"></a>
<span class="sourceLineNo">24376</span> while (it.hasNext()) {<a name="line.24376"></a>
<span class="sourceLineNo">24377</span> final long ix = it.aLong;<a name="line.24377"></a>
<span class="sourceLineNo">24378</span> byte ox;<a name="line.24378"></a>
<span class="sourceLineNo">24379</span> ox = (byte) toLong(0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24379"></a>
<span class="sourceLineNo">24380</span> oai8data[it.oIndex] = ox;<a name="line.24380"></a>
<span class="sourceLineNo">24381</span> }<a name="line.24381"></a>
<span class="sourceLineNo">24382</span> }<a name="line.24382"></a>
<span class="sourceLineNo">24383</span> } else if (as == 1) {<a name="line.24383"></a>
<span class="sourceLineNo">24384</span> if (it.isOutputDouble()) {<a name="line.24384"></a>
<span class="sourceLineNo">24385</span> while (it.hasNext()) {<a name="line.24385"></a>
<span class="sourceLineNo">24386</span> final double ix = it.aDouble;<a name="line.24386"></a>
<span class="sourceLineNo">24387</span> byte ox;<a name="line.24387"></a>
<span class="sourceLineNo">24388</span> ox = (byte) toLong(0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24388"></a>
<span class="sourceLineNo">24389</span> for (int j = 0; j &lt; is; j++) {<a name="line.24389"></a>
<span class="sourceLineNo">24390</span> oai8data[it.oIndex + j] = ox;<a name="line.24390"></a>
<span class="sourceLineNo">24391</span> }<a name="line.24391"></a>
<span class="sourceLineNo">24392</span> }<a name="line.24392"></a>
<span class="sourceLineNo">24393</span> } else {<a name="line.24393"></a>
<span class="sourceLineNo">24394</span> while (it.hasNext()) {<a name="line.24394"></a>
<span class="sourceLineNo">24395</span> final long ix = it.aLong;<a name="line.24395"></a>
<span class="sourceLineNo">24396</span> byte ox;<a name="line.24396"></a>
<span class="sourceLineNo">24397</span> ox = (byte) toLong(0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24397"></a>
<span class="sourceLineNo">24398</span> for (int j = 0; j &lt; is; j++) {<a name="line.24398"></a>
<span class="sourceLineNo">24399</span> oai8data[it.oIndex + j] = ox;<a name="line.24399"></a>
<span class="sourceLineNo">24400</span> }<a name="line.24400"></a>
<span class="sourceLineNo">24401</span> }<a name="line.24401"></a>
<span class="sourceLineNo">24402</span> }<a name="line.24402"></a>
<span class="sourceLineNo">24403</span> } else {<a name="line.24403"></a>
<span class="sourceLineNo">24404</span> if (it.isOutputDouble()) {<a name="line.24404"></a>
<span class="sourceLineNo">24405</span> while (it.hasNext()) {<a name="line.24405"></a>
<span class="sourceLineNo">24406</span> for (int j = 0; j &lt; is; j++) {<a name="line.24406"></a>
<span class="sourceLineNo">24407</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.24407"></a>
<span class="sourceLineNo">24408</span> byte ox;<a name="line.24408"></a>
<span class="sourceLineNo">24409</span> ox = (byte) toLong(0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24409"></a>
<span class="sourceLineNo">24410</span> oai8data[it.oIndex + j] = ox;<a name="line.24410"></a>
<span class="sourceLineNo">24411</span> }<a name="line.24411"></a>
<span class="sourceLineNo">24412</span> }<a name="line.24412"></a>
<span class="sourceLineNo">24413</span> } else {<a name="line.24413"></a>
<span class="sourceLineNo">24414</span> while (it.hasNext()) {<a name="line.24414"></a>
<span class="sourceLineNo">24415</span> for (int j = 0; j &lt; is; j++) {<a name="line.24415"></a>
<span class="sourceLineNo">24416</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.24416"></a>
<span class="sourceLineNo">24417</span> byte ox;<a name="line.24417"></a>
<span class="sourceLineNo">24418</span> ox = (byte) toLong(0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24418"></a>
<span class="sourceLineNo">24419</span> oai8data[it.oIndex + j] = ox;<a name="line.24419"></a>
<span class="sourceLineNo">24420</span> }<a name="line.24420"></a>
<span class="sourceLineNo">24421</span> }<a name="line.24421"></a>
<span class="sourceLineNo">24422</span> }<a name="line.24422"></a>
<span class="sourceLineNo">24423</span> }<a name="line.24423"></a>
<span class="sourceLineNo">24424</span> break;<a name="line.24424"></a>
<span class="sourceLineNo">24425</span> case Dataset.ARRAYINT16:<a name="line.24425"></a>
<span class="sourceLineNo">24426</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.24426"></a>
<span class="sourceLineNo">24427</span> if (is == 1) {<a name="line.24427"></a>
<span class="sourceLineNo">24428</span> if (it.isOutputDouble()) {<a name="line.24428"></a>
<span class="sourceLineNo">24429</span> while (it.hasNext()) {<a name="line.24429"></a>
<span class="sourceLineNo">24430</span> final double ix = it.aDouble;<a name="line.24430"></a>
<span class="sourceLineNo">24431</span> short ox;<a name="line.24431"></a>
<span class="sourceLineNo">24432</span> ox = (short) toLong(0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24432"></a>
<span class="sourceLineNo">24433</span> oai16data[it.oIndex] = ox;<a name="line.24433"></a>
<span class="sourceLineNo">24434</span> }<a name="line.24434"></a>
<span class="sourceLineNo">24435</span> } else {<a name="line.24435"></a>
<span class="sourceLineNo">24436</span> while (it.hasNext()) {<a name="line.24436"></a>
<span class="sourceLineNo">24437</span> final long ix = it.aLong;<a name="line.24437"></a>
<span class="sourceLineNo">24438</span> short ox;<a name="line.24438"></a>
<span class="sourceLineNo">24439</span> ox = (short) toLong(0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24439"></a>
<span class="sourceLineNo">24440</span> oai16data[it.oIndex] = ox;<a name="line.24440"></a>
<span class="sourceLineNo">24441</span> }<a name="line.24441"></a>
<span class="sourceLineNo">24442</span> }<a name="line.24442"></a>
<span class="sourceLineNo">24443</span> } else if (as == 1) {<a name="line.24443"></a>
<span class="sourceLineNo">24444</span> if (it.isOutputDouble()) {<a name="line.24444"></a>
<span class="sourceLineNo">24445</span> while (it.hasNext()) {<a name="line.24445"></a>
<span class="sourceLineNo">24446</span> final double ix = it.aDouble;<a name="line.24446"></a>
<span class="sourceLineNo">24447</span> short ox;<a name="line.24447"></a>
<span class="sourceLineNo">24448</span> ox = (short) toLong(0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24448"></a>
<span class="sourceLineNo">24449</span> for (int j = 0; j &lt; is; j++) {<a name="line.24449"></a>
<span class="sourceLineNo">24450</span> oai16data[it.oIndex + j] = ox;<a name="line.24450"></a>
<span class="sourceLineNo">24451</span> }<a name="line.24451"></a>
<span class="sourceLineNo">24452</span> }<a name="line.24452"></a>
<span class="sourceLineNo">24453</span> } else {<a name="line.24453"></a>
<span class="sourceLineNo">24454</span> while (it.hasNext()) {<a name="line.24454"></a>
<span class="sourceLineNo">24455</span> final long ix = it.aLong;<a name="line.24455"></a>
<span class="sourceLineNo">24456</span> short ox;<a name="line.24456"></a>
<span class="sourceLineNo">24457</span> ox = (short) toLong(0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24457"></a>
<span class="sourceLineNo">24458</span> for (int j = 0; j &lt; is; j++) {<a name="line.24458"></a>
<span class="sourceLineNo">24459</span> oai16data[it.oIndex + j] = ox;<a name="line.24459"></a>
<span class="sourceLineNo">24460</span> }<a name="line.24460"></a>
<span class="sourceLineNo">24461</span> }<a name="line.24461"></a>
<span class="sourceLineNo">24462</span> }<a name="line.24462"></a>
<span class="sourceLineNo">24463</span> } else {<a name="line.24463"></a>
<span class="sourceLineNo">24464</span> if (it.isOutputDouble()) {<a name="line.24464"></a>
<span class="sourceLineNo">24465</span> while (it.hasNext()) {<a name="line.24465"></a>
<span class="sourceLineNo">24466</span> for (int j = 0; j &lt; is; j++) {<a name="line.24466"></a>
<span class="sourceLineNo">24467</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.24467"></a>
<span class="sourceLineNo">24468</span> short ox;<a name="line.24468"></a>
<span class="sourceLineNo">24469</span> ox = (short) toLong(0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24469"></a>
<span class="sourceLineNo">24470</span> oai16data[it.oIndex + j] = ox;<a name="line.24470"></a>
<span class="sourceLineNo">24471</span> }<a name="line.24471"></a>
<span class="sourceLineNo">24472</span> }<a name="line.24472"></a>
<span class="sourceLineNo">24473</span> } else {<a name="line.24473"></a>
<span class="sourceLineNo">24474</span> while (it.hasNext()) {<a name="line.24474"></a>
<span class="sourceLineNo">24475</span> for (int j = 0; j &lt; is; j++) {<a name="line.24475"></a>
<span class="sourceLineNo">24476</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.24476"></a>
<span class="sourceLineNo">24477</span> short ox;<a name="line.24477"></a>
<span class="sourceLineNo">24478</span> ox = (short) toLong(0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24478"></a>
<span class="sourceLineNo">24479</span> oai16data[it.oIndex + j] = ox;<a name="line.24479"></a>
<span class="sourceLineNo">24480</span> }<a name="line.24480"></a>
<span class="sourceLineNo">24481</span> }<a name="line.24481"></a>
<span class="sourceLineNo">24482</span> }<a name="line.24482"></a>
<span class="sourceLineNo">24483</span> }<a name="line.24483"></a>
<span class="sourceLineNo">24484</span> break;<a name="line.24484"></a>
<span class="sourceLineNo">24485</span> case Dataset.ARRAYINT64:<a name="line.24485"></a>
<span class="sourceLineNo">24486</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.24486"></a>
<span class="sourceLineNo">24487</span> if (is == 1) {<a name="line.24487"></a>
<span class="sourceLineNo">24488</span> if (it.isOutputDouble()) {<a name="line.24488"></a>
<span class="sourceLineNo">24489</span> while (it.hasNext()) {<a name="line.24489"></a>
<span class="sourceLineNo">24490</span> final double ix = it.aDouble;<a name="line.24490"></a>
<span class="sourceLineNo">24491</span> long ox;<a name="line.24491"></a>
<span class="sourceLineNo">24492</span> ox = toLong(0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24492"></a>
<span class="sourceLineNo">24493</span> oai64data[it.oIndex] = ox;<a name="line.24493"></a>
<span class="sourceLineNo">24494</span> }<a name="line.24494"></a>
<span class="sourceLineNo">24495</span> } else {<a name="line.24495"></a>
<span class="sourceLineNo">24496</span> while (it.hasNext()) {<a name="line.24496"></a>
<span class="sourceLineNo">24497</span> final long ix = it.aLong;<a name="line.24497"></a>
<span class="sourceLineNo">24498</span> long ox;<a name="line.24498"></a>
<span class="sourceLineNo">24499</span> ox = toLong(0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24499"></a>
<span class="sourceLineNo">24500</span> oai64data[it.oIndex] = ox;<a name="line.24500"></a>
<span class="sourceLineNo">24501</span> }<a name="line.24501"></a>
<span class="sourceLineNo">24502</span> }<a name="line.24502"></a>
<span class="sourceLineNo">24503</span> } else if (as == 1) {<a name="line.24503"></a>
<span class="sourceLineNo">24504</span> if (it.isOutputDouble()) {<a name="line.24504"></a>
<span class="sourceLineNo">24505</span> while (it.hasNext()) {<a name="line.24505"></a>
<span class="sourceLineNo">24506</span> final double ix = it.aDouble;<a name="line.24506"></a>
<span class="sourceLineNo">24507</span> long ox;<a name="line.24507"></a>
<span class="sourceLineNo">24508</span> ox = toLong(0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24508"></a>
<span class="sourceLineNo">24509</span> for (int j = 0; j &lt; is; j++) {<a name="line.24509"></a>
<span class="sourceLineNo">24510</span> oai64data[it.oIndex + j] = ox;<a name="line.24510"></a>
<span class="sourceLineNo">24511</span> }<a name="line.24511"></a>
<span class="sourceLineNo">24512</span> }<a name="line.24512"></a>
<span class="sourceLineNo">24513</span> } else {<a name="line.24513"></a>
<span class="sourceLineNo">24514</span> while (it.hasNext()) {<a name="line.24514"></a>
<span class="sourceLineNo">24515</span> final long ix = it.aLong;<a name="line.24515"></a>
<span class="sourceLineNo">24516</span> long ox;<a name="line.24516"></a>
<span class="sourceLineNo">24517</span> ox = toLong(0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24517"></a>
<span class="sourceLineNo">24518</span> for (int j = 0; j &lt; is; j++) {<a name="line.24518"></a>
<span class="sourceLineNo">24519</span> oai64data[it.oIndex + j] = ox;<a name="line.24519"></a>
<span class="sourceLineNo">24520</span> }<a name="line.24520"></a>
<span class="sourceLineNo">24521</span> }<a name="line.24521"></a>
<span class="sourceLineNo">24522</span> }<a name="line.24522"></a>
<span class="sourceLineNo">24523</span> } else {<a name="line.24523"></a>
<span class="sourceLineNo">24524</span> if (it.isOutputDouble()) {<a name="line.24524"></a>
<span class="sourceLineNo">24525</span> while (it.hasNext()) {<a name="line.24525"></a>
<span class="sourceLineNo">24526</span> for (int j = 0; j &lt; is; j++) {<a name="line.24526"></a>
<span class="sourceLineNo">24527</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.24527"></a>
<span class="sourceLineNo">24528</span> long ox;<a name="line.24528"></a>
<span class="sourceLineNo">24529</span> ox = toLong(0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24529"></a>
<span class="sourceLineNo">24530</span> oai64data[it.oIndex + j] = ox;<a name="line.24530"></a>
<span class="sourceLineNo">24531</span> }<a name="line.24531"></a>
<span class="sourceLineNo">24532</span> }<a name="line.24532"></a>
<span class="sourceLineNo">24533</span> } else {<a name="line.24533"></a>
<span class="sourceLineNo">24534</span> while (it.hasNext()) {<a name="line.24534"></a>
<span class="sourceLineNo">24535</span> for (int j = 0; j &lt; is; j++) {<a name="line.24535"></a>
<span class="sourceLineNo">24536</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.24536"></a>
<span class="sourceLineNo">24537</span> long ox;<a name="line.24537"></a>
<span class="sourceLineNo">24538</span> ox = toLong(0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24538"></a>
<span class="sourceLineNo">24539</span> oai64data[it.oIndex + j] = ox;<a name="line.24539"></a>
<span class="sourceLineNo">24540</span> }<a name="line.24540"></a>
<span class="sourceLineNo">24541</span> }<a name="line.24541"></a>
<span class="sourceLineNo">24542</span> }<a name="line.24542"></a>
<span class="sourceLineNo">24543</span> }<a name="line.24543"></a>
<span class="sourceLineNo">24544</span> break;<a name="line.24544"></a>
<span class="sourceLineNo">24545</span> case Dataset.ARRAYINT32:<a name="line.24545"></a>
<span class="sourceLineNo">24546</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.24546"></a>
<span class="sourceLineNo">24547</span> if (is == 1) {<a name="line.24547"></a>
<span class="sourceLineNo">24548</span> if (it.isOutputDouble()) {<a name="line.24548"></a>
<span class="sourceLineNo">24549</span> while (it.hasNext()) {<a name="line.24549"></a>
<span class="sourceLineNo">24550</span> final double ix = it.aDouble;<a name="line.24550"></a>
<span class="sourceLineNo">24551</span> int ox;<a name="line.24551"></a>
<span class="sourceLineNo">24552</span> ox = (int) toLong(0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24552"></a>
<span class="sourceLineNo">24553</span> oai32data[it.oIndex] = ox;<a name="line.24553"></a>
<span class="sourceLineNo">24554</span> }<a name="line.24554"></a>
<span class="sourceLineNo">24555</span> } else {<a name="line.24555"></a>
<span class="sourceLineNo">24556</span> while (it.hasNext()) {<a name="line.24556"></a>
<span class="sourceLineNo">24557</span> final long ix = it.aLong;<a name="line.24557"></a>
<span class="sourceLineNo">24558</span> int ox;<a name="line.24558"></a>
<span class="sourceLineNo">24559</span> ox = (int) toLong(0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24559"></a>
<span class="sourceLineNo">24560</span> oai32data[it.oIndex] = ox;<a name="line.24560"></a>
<span class="sourceLineNo">24561</span> }<a name="line.24561"></a>
<span class="sourceLineNo">24562</span> }<a name="line.24562"></a>
<span class="sourceLineNo">24563</span> } else if (as == 1) {<a name="line.24563"></a>
<span class="sourceLineNo">24564</span> if (it.isOutputDouble()) {<a name="line.24564"></a>
<span class="sourceLineNo">24565</span> while (it.hasNext()) {<a name="line.24565"></a>
<span class="sourceLineNo">24566</span> final double ix = it.aDouble;<a name="line.24566"></a>
<span class="sourceLineNo">24567</span> int ox;<a name="line.24567"></a>
<span class="sourceLineNo">24568</span> ox = (int) toLong(0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24568"></a>
<span class="sourceLineNo">24569</span> for (int j = 0; j &lt; is; j++) {<a name="line.24569"></a>
<span class="sourceLineNo">24570</span> oai32data[it.oIndex + j] = ox;<a name="line.24570"></a>
<span class="sourceLineNo">24571</span> }<a name="line.24571"></a>
<span class="sourceLineNo">24572</span> }<a name="line.24572"></a>
<span class="sourceLineNo">24573</span> } else {<a name="line.24573"></a>
<span class="sourceLineNo">24574</span> while (it.hasNext()) {<a name="line.24574"></a>
<span class="sourceLineNo">24575</span> final long ix = it.aLong;<a name="line.24575"></a>
<span class="sourceLineNo">24576</span> int ox;<a name="line.24576"></a>
<span class="sourceLineNo">24577</span> ox = (int) toLong(0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24577"></a>
<span class="sourceLineNo">24578</span> for (int j = 0; j &lt; is; j++) {<a name="line.24578"></a>
<span class="sourceLineNo">24579</span> oai32data[it.oIndex + j] = ox;<a name="line.24579"></a>
<span class="sourceLineNo">24580</span> }<a name="line.24580"></a>
<span class="sourceLineNo">24581</span> }<a name="line.24581"></a>
<span class="sourceLineNo">24582</span> }<a name="line.24582"></a>
<span class="sourceLineNo">24583</span> } else {<a name="line.24583"></a>
<span class="sourceLineNo">24584</span> if (it.isOutputDouble()) {<a name="line.24584"></a>
<span class="sourceLineNo">24585</span> while (it.hasNext()) {<a name="line.24585"></a>
<span class="sourceLineNo">24586</span> for (int j = 0; j &lt; is; j++) {<a name="line.24586"></a>
<span class="sourceLineNo">24587</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.24587"></a>
<span class="sourceLineNo">24588</span> int ox;<a name="line.24588"></a>
<span class="sourceLineNo">24589</span> ox = (int) toLong(0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24589"></a>
<span class="sourceLineNo">24590</span> oai32data[it.oIndex + j] = ox;<a name="line.24590"></a>
<span class="sourceLineNo">24591</span> }<a name="line.24591"></a>
<span class="sourceLineNo">24592</span> }<a name="line.24592"></a>
<span class="sourceLineNo">24593</span> } else {<a name="line.24593"></a>
<span class="sourceLineNo">24594</span> while (it.hasNext()) {<a name="line.24594"></a>
<span class="sourceLineNo">24595</span> for (int j = 0; j &lt; is; j++) {<a name="line.24595"></a>
<span class="sourceLineNo">24596</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.24596"></a>
<span class="sourceLineNo">24597</span> int ox;<a name="line.24597"></a>
<span class="sourceLineNo">24598</span> ox = (int) toLong(0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24598"></a>
<span class="sourceLineNo">24599</span> oai32data[it.oIndex + j] = ox;<a name="line.24599"></a>
<span class="sourceLineNo">24600</span> }<a name="line.24600"></a>
<span class="sourceLineNo">24601</span> }<a name="line.24601"></a>
<span class="sourceLineNo">24602</span> }<a name="line.24602"></a>
<span class="sourceLineNo">24603</span> }<a name="line.24603"></a>
<span class="sourceLineNo">24604</span> break;<a name="line.24604"></a>
<span class="sourceLineNo">24605</span> case Dataset.FLOAT32:<a name="line.24605"></a>
<span class="sourceLineNo">24606</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.24606"></a>
<span class="sourceLineNo">24607</span> if (it.isOutputDouble()) {<a name="line.24607"></a>
<span class="sourceLineNo">24608</span> while (it.hasNext()) {<a name="line.24608"></a>
<span class="sourceLineNo">24609</span> final double ix = it.aDouble;<a name="line.24609"></a>
<span class="sourceLineNo">24610</span> float ox;<a name="line.24610"></a>
<span class="sourceLineNo">24611</span> ox = (float) (0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24611"></a>
<span class="sourceLineNo">24612</span> of32data[it.oIndex] = ox;<a name="line.24612"></a>
<span class="sourceLineNo">24613</span> }<a name="line.24613"></a>
<span class="sourceLineNo">24614</span> } else {<a name="line.24614"></a>
<span class="sourceLineNo">24615</span> while (it.hasNext()) {<a name="line.24615"></a>
<span class="sourceLineNo">24616</span> final long ix = it.aLong;<a name="line.24616"></a>
<span class="sourceLineNo">24617</span> float ox;<a name="line.24617"></a>
<span class="sourceLineNo">24618</span> ox = (float) (0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24618"></a>
<span class="sourceLineNo">24619</span> of32data[it.oIndex] = ox;<a name="line.24619"></a>
<span class="sourceLineNo">24620</span> }<a name="line.24620"></a>
<span class="sourceLineNo">24621</span> }<a name="line.24621"></a>
<span class="sourceLineNo">24622</span> break;<a name="line.24622"></a>
<span class="sourceLineNo">24623</span> case Dataset.FLOAT64:<a name="line.24623"></a>
<span class="sourceLineNo">24624</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.24624"></a>
<span class="sourceLineNo">24625</span> if (it.isOutputDouble()) {<a name="line.24625"></a>
<span class="sourceLineNo">24626</span> while (it.hasNext()) {<a name="line.24626"></a>
<span class="sourceLineNo">24627</span> final double ix = it.aDouble;<a name="line.24627"></a>
<span class="sourceLineNo">24628</span> double ox;<a name="line.24628"></a>
<span class="sourceLineNo">24629</span> ox = (0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24629"></a>
<span class="sourceLineNo">24630</span> of64data[it.oIndex] = ox;<a name="line.24630"></a>
<span class="sourceLineNo">24631</span> }<a name="line.24631"></a>
<span class="sourceLineNo">24632</span> } else {<a name="line.24632"></a>
<span class="sourceLineNo">24633</span> while (it.hasNext()) {<a name="line.24633"></a>
<span class="sourceLineNo">24634</span> final long ix = it.aLong;<a name="line.24634"></a>
<span class="sourceLineNo">24635</span> double ox;<a name="line.24635"></a>
<span class="sourceLineNo">24636</span> ox = (0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24636"></a>
<span class="sourceLineNo">24637</span> of64data[it.oIndex] = ox;<a name="line.24637"></a>
<span class="sourceLineNo">24638</span> }<a name="line.24638"></a>
<span class="sourceLineNo">24639</span> }<a name="line.24639"></a>
<span class="sourceLineNo">24640</span> break;<a name="line.24640"></a>
<span class="sourceLineNo">24641</span> case Dataset.ARRAYFLOAT32:<a name="line.24641"></a>
<span class="sourceLineNo">24642</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.24642"></a>
<span class="sourceLineNo">24643</span> if (is == 1) {<a name="line.24643"></a>
<span class="sourceLineNo">24644</span> if (it.isOutputDouble()) {<a name="line.24644"></a>
<span class="sourceLineNo">24645</span> while (it.hasNext()) {<a name="line.24645"></a>
<span class="sourceLineNo">24646</span> final double ix = it.aDouble;<a name="line.24646"></a>
<span class="sourceLineNo">24647</span> float ox;<a name="line.24647"></a>
<span class="sourceLineNo">24648</span> ox = (float) (0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24648"></a>
<span class="sourceLineNo">24649</span> oaf32data[it.oIndex] = ox;<a name="line.24649"></a>
<span class="sourceLineNo">24650</span> }<a name="line.24650"></a>
<span class="sourceLineNo">24651</span> } else {<a name="line.24651"></a>
<span class="sourceLineNo">24652</span> while (it.hasNext()) {<a name="line.24652"></a>
<span class="sourceLineNo">24653</span> final long ix = it.aLong;<a name="line.24653"></a>
<span class="sourceLineNo">24654</span> float ox;<a name="line.24654"></a>
<span class="sourceLineNo">24655</span> ox = (float) (0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24655"></a>
<span class="sourceLineNo">24656</span> oaf32data[it.oIndex] = ox;<a name="line.24656"></a>
<span class="sourceLineNo">24657</span> }<a name="line.24657"></a>
<span class="sourceLineNo">24658</span> }<a name="line.24658"></a>
<span class="sourceLineNo">24659</span> } else if (as == 1) {<a name="line.24659"></a>
<span class="sourceLineNo">24660</span> if (it.isOutputDouble()) {<a name="line.24660"></a>
<span class="sourceLineNo">24661</span> while (it.hasNext()) {<a name="line.24661"></a>
<span class="sourceLineNo">24662</span> final double ix = it.aDouble;<a name="line.24662"></a>
<span class="sourceLineNo">24663</span> float ox;<a name="line.24663"></a>
<span class="sourceLineNo">24664</span> ox = (float) (0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24664"></a>
<span class="sourceLineNo">24665</span> for (int j = 0; j &lt; is; j++) {<a name="line.24665"></a>
<span class="sourceLineNo">24666</span> oaf32data[it.oIndex + j] = ox;<a name="line.24666"></a>
<span class="sourceLineNo">24667</span> }<a name="line.24667"></a>
<span class="sourceLineNo">24668</span> }<a name="line.24668"></a>
<span class="sourceLineNo">24669</span> } else {<a name="line.24669"></a>
<span class="sourceLineNo">24670</span> while (it.hasNext()) {<a name="line.24670"></a>
<span class="sourceLineNo">24671</span> final long ix = it.aLong;<a name="line.24671"></a>
<span class="sourceLineNo">24672</span> float ox;<a name="line.24672"></a>
<span class="sourceLineNo">24673</span> ox = (float) (0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24673"></a>
<span class="sourceLineNo">24674</span> for (int j = 0; j &lt; is; j++) {<a name="line.24674"></a>
<span class="sourceLineNo">24675</span> oaf32data[it.oIndex + j] = ox;<a name="line.24675"></a>
<span class="sourceLineNo">24676</span> }<a name="line.24676"></a>
<span class="sourceLineNo">24677</span> }<a name="line.24677"></a>
<span class="sourceLineNo">24678</span> }<a name="line.24678"></a>
<span class="sourceLineNo">24679</span> } else {<a name="line.24679"></a>
<span class="sourceLineNo">24680</span> if (it.isOutputDouble()) {<a name="line.24680"></a>
<span class="sourceLineNo">24681</span> while (it.hasNext()) {<a name="line.24681"></a>
<span class="sourceLineNo">24682</span> for (int j = 0; j &lt; is; j++) {<a name="line.24682"></a>
<span class="sourceLineNo">24683</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.24683"></a>
<span class="sourceLineNo">24684</span> float ox;<a name="line.24684"></a>
<span class="sourceLineNo">24685</span> ox = (float) (0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24685"></a>
<span class="sourceLineNo">24686</span> oaf32data[it.oIndex + j] = ox;<a name="line.24686"></a>
<span class="sourceLineNo">24687</span> }<a name="line.24687"></a>
<span class="sourceLineNo">24688</span> }<a name="line.24688"></a>
<span class="sourceLineNo">24689</span> } else {<a name="line.24689"></a>
<span class="sourceLineNo">24690</span> while (it.hasNext()) {<a name="line.24690"></a>
<span class="sourceLineNo">24691</span> for (int j = 0; j &lt; is; j++) {<a name="line.24691"></a>
<span class="sourceLineNo">24692</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.24692"></a>
<span class="sourceLineNo">24693</span> float ox;<a name="line.24693"></a>
<span class="sourceLineNo">24694</span> ox = (float) (0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24694"></a>
<span class="sourceLineNo">24695</span> oaf32data[it.oIndex + j] = ox;<a name="line.24695"></a>
<span class="sourceLineNo">24696</span> }<a name="line.24696"></a>
<span class="sourceLineNo">24697</span> }<a name="line.24697"></a>
<span class="sourceLineNo">24698</span> }<a name="line.24698"></a>
<span class="sourceLineNo">24699</span> }<a name="line.24699"></a>
<span class="sourceLineNo">24700</span> break;<a name="line.24700"></a>
<span class="sourceLineNo">24701</span> case Dataset.ARRAYFLOAT64:<a name="line.24701"></a>
<span class="sourceLineNo">24702</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.24702"></a>
<span class="sourceLineNo">24703</span> if (is == 1) {<a name="line.24703"></a>
<span class="sourceLineNo">24704</span> if (it.isOutputDouble()) {<a name="line.24704"></a>
<span class="sourceLineNo">24705</span> while (it.hasNext()) {<a name="line.24705"></a>
<span class="sourceLineNo">24706</span> final double ix = it.aDouble;<a name="line.24706"></a>
<span class="sourceLineNo">24707</span> double ox;<a name="line.24707"></a>
<span class="sourceLineNo">24708</span> ox = (0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24708"></a>
<span class="sourceLineNo">24709</span> oaf64data[it.oIndex] = ox;<a name="line.24709"></a>
<span class="sourceLineNo">24710</span> }<a name="line.24710"></a>
<span class="sourceLineNo">24711</span> } else {<a name="line.24711"></a>
<span class="sourceLineNo">24712</span> while (it.hasNext()) {<a name="line.24712"></a>
<span class="sourceLineNo">24713</span> final long ix = it.aLong;<a name="line.24713"></a>
<span class="sourceLineNo">24714</span> double ox;<a name="line.24714"></a>
<span class="sourceLineNo">24715</span> ox = (0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24715"></a>
<span class="sourceLineNo">24716</span> oaf64data[it.oIndex] = ox;<a name="line.24716"></a>
<span class="sourceLineNo">24717</span> }<a name="line.24717"></a>
<span class="sourceLineNo">24718</span> }<a name="line.24718"></a>
<span class="sourceLineNo">24719</span> } else if (as == 1) {<a name="line.24719"></a>
<span class="sourceLineNo">24720</span> if (it.isOutputDouble()) {<a name="line.24720"></a>
<span class="sourceLineNo">24721</span> while (it.hasNext()) {<a name="line.24721"></a>
<span class="sourceLineNo">24722</span> final double ix = it.aDouble;<a name="line.24722"></a>
<span class="sourceLineNo">24723</span> double ox;<a name="line.24723"></a>
<span class="sourceLineNo">24724</span> ox = (0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24724"></a>
<span class="sourceLineNo">24725</span> for (int j = 0; j &lt; is; j++) {<a name="line.24725"></a>
<span class="sourceLineNo">24726</span> oaf64data[it.oIndex + j] = ox;<a name="line.24726"></a>
<span class="sourceLineNo">24727</span> }<a name="line.24727"></a>
<span class="sourceLineNo">24728</span> }<a name="line.24728"></a>
<span class="sourceLineNo">24729</span> } else {<a name="line.24729"></a>
<span class="sourceLineNo">24730</span> while (it.hasNext()) {<a name="line.24730"></a>
<span class="sourceLineNo">24731</span> final long ix = it.aLong;<a name="line.24731"></a>
<span class="sourceLineNo">24732</span> double ox;<a name="line.24732"></a>
<span class="sourceLineNo">24733</span> ox = (0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24733"></a>
<span class="sourceLineNo">24734</span> for (int j = 0; j &lt; is; j++) {<a name="line.24734"></a>
<span class="sourceLineNo">24735</span> oaf64data[it.oIndex + j] = ox;<a name="line.24735"></a>
<span class="sourceLineNo">24736</span> }<a name="line.24736"></a>
<span class="sourceLineNo">24737</span> }<a name="line.24737"></a>
<span class="sourceLineNo">24738</span> }<a name="line.24738"></a>
<span class="sourceLineNo">24739</span> } else {<a name="line.24739"></a>
<span class="sourceLineNo">24740</span> if (it.isOutputDouble()) {<a name="line.24740"></a>
<span class="sourceLineNo">24741</span> while (it.hasNext()) {<a name="line.24741"></a>
<span class="sourceLineNo">24742</span> for (int j = 0; j &lt; is; j++) {<a name="line.24742"></a>
<span class="sourceLineNo">24743</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.24743"></a>
<span class="sourceLineNo">24744</span> double ox;<a name="line.24744"></a>
<span class="sourceLineNo">24745</span> ox = (0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24745"></a>
<span class="sourceLineNo">24746</span> oaf64data[it.oIndex + j] = ox;<a name="line.24746"></a>
<span class="sourceLineNo">24747</span> }<a name="line.24747"></a>
<span class="sourceLineNo">24748</span> }<a name="line.24748"></a>
<span class="sourceLineNo">24749</span> } else {<a name="line.24749"></a>
<span class="sourceLineNo">24750</span> while (it.hasNext()) {<a name="line.24750"></a>
<span class="sourceLineNo">24751</span> for (int j = 0; j &lt; is; j++) {<a name="line.24751"></a>
<span class="sourceLineNo">24752</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.24752"></a>
<span class="sourceLineNo">24753</span> double ox;<a name="line.24753"></a>
<span class="sourceLineNo">24754</span> ox = (0.5*Math.log((1 + ix)/(1 - ix)));<a name="line.24754"></a>
<span class="sourceLineNo">24755</span> oaf64data[it.oIndex + j] = ox;<a name="line.24755"></a>
<span class="sourceLineNo">24756</span> }<a name="line.24756"></a>
<span class="sourceLineNo">24757</span> }<a name="line.24757"></a>
<span class="sourceLineNo">24758</span> }<a name="line.24758"></a>
<span class="sourceLineNo">24759</span> }<a name="line.24759"></a>
<span class="sourceLineNo">24760</span> break;<a name="line.24760"></a>
<span class="sourceLineNo">24761</span> case Dataset.COMPLEX64:<a name="line.24761"></a>
<span class="sourceLineNo">24762</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.24762"></a>
<span class="sourceLineNo">24763</span> if (!da.isComplex()) {<a name="line.24763"></a>
<span class="sourceLineNo">24764</span> if (it.isOutputDouble()) {<a name="line.24764"></a>
<span class="sourceLineNo">24765</span> final double iy = 0;<a name="line.24765"></a>
<span class="sourceLineNo">24766</span> while (it.hasNext()) {<a name="line.24766"></a>
<span class="sourceLineNo">24767</span> final double ix = it.aDouble;<a name="line.24767"></a>
<span class="sourceLineNo">24768</span> Complex tz;<a name="line.24768"></a>
<span class="sourceLineNo">24769</span> float ox;<a name="line.24769"></a>
<span class="sourceLineNo">24770</span> float oy;<a name="line.24770"></a>
<span class="sourceLineNo">24771</span> tz = new Complex(-iy, ix).atan();<a name="line.24771"></a>
<span class="sourceLineNo">24772</span> ox = (float) (tz.getImaginary());<a name="line.24772"></a>
<span class="sourceLineNo">24773</span> oy = (float) (-tz.getReal());<a name="line.24773"></a>
<span class="sourceLineNo">24774</span> oc64data[it.oIndex] = ox;<a name="line.24774"></a>
<span class="sourceLineNo">24775</span> oc64data[it.oIndex + 1] = oy;<a name="line.24775"></a>
<span class="sourceLineNo">24776</span> }<a name="line.24776"></a>
<span class="sourceLineNo">24777</span> } else {<a name="line.24777"></a>
<span class="sourceLineNo">24778</span> final long iy = 0;<a name="line.24778"></a>
<span class="sourceLineNo">24779</span> while (it.hasNext()) {<a name="line.24779"></a>
<span class="sourceLineNo">24780</span> final long ix = it.aLong;<a name="line.24780"></a>
<span class="sourceLineNo">24781</span> Complex tz;<a name="line.24781"></a>
<span class="sourceLineNo">24782</span> float ox;<a name="line.24782"></a>
<span class="sourceLineNo">24783</span> float oy;<a name="line.24783"></a>
<span class="sourceLineNo">24784</span> tz = new Complex(-iy, ix).atan();<a name="line.24784"></a>
<span class="sourceLineNo">24785</span> ox = (float) toLong(tz.getImaginary());<a name="line.24785"></a>
<span class="sourceLineNo">24786</span> oy = (float) toLong(-tz.getReal());<a name="line.24786"></a>
<span class="sourceLineNo">24787</span> oc64data[it.oIndex] = ox;<a name="line.24787"></a>
<span class="sourceLineNo">24788</span> oc64data[it.oIndex + 1] = oy;<a name="line.24788"></a>
<span class="sourceLineNo">24789</span> }<a name="line.24789"></a>
<span class="sourceLineNo">24790</span> }<a name="line.24790"></a>
<span class="sourceLineNo">24791</span> } else {<a name="line.24791"></a>
<span class="sourceLineNo">24792</span> while (it.hasNext()) {<a name="line.24792"></a>
<span class="sourceLineNo">24793</span> final double ix = it.aDouble;<a name="line.24793"></a>
<span class="sourceLineNo">24794</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.24794"></a>
<span class="sourceLineNo">24795</span> Complex tz;<a name="line.24795"></a>
<span class="sourceLineNo">24796</span> float ox;<a name="line.24796"></a>
<span class="sourceLineNo">24797</span> float oy;<a name="line.24797"></a>
<span class="sourceLineNo">24798</span> tz = new Complex(-iy, ix).atan();<a name="line.24798"></a>
<span class="sourceLineNo">24799</span> ox = (float) (tz.getImaginary());<a name="line.24799"></a>
<span class="sourceLineNo">24800</span> oy = (float) (-tz.getReal());<a name="line.24800"></a>
<span class="sourceLineNo">24801</span> oc64data[it.oIndex] = ox;<a name="line.24801"></a>
<span class="sourceLineNo">24802</span> oc64data[it.oIndex + 1] = oy;<a name="line.24802"></a>
<span class="sourceLineNo">24803</span> }<a name="line.24803"></a>
<span class="sourceLineNo">24804</span> }<a name="line.24804"></a>
<span class="sourceLineNo">24805</span> break;<a name="line.24805"></a>
<span class="sourceLineNo">24806</span> case Dataset.COMPLEX128:<a name="line.24806"></a>
<span class="sourceLineNo">24807</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.24807"></a>
<span class="sourceLineNo">24808</span> if (!da.isComplex()) {<a name="line.24808"></a>
<span class="sourceLineNo">24809</span> if (it.isOutputDouble()) {<a name="line.24809"></a>
<span class="sourceLineNo">24810</span> final double iy = 0;<a name="line.24810"></a>
<span class="sourceLineNo">24811</span> while (it.hasNext()) {<a name="line.24811"></a>
<span class="sourceLineNo">24812</span> final double ix = it.aDouble;<a name="line.24812"></a>
<span class="sourceLineNo">24813</span> Complex tz;<a name="line.24813"></a>
<span class="sourceLineNo">24814</span> double ox;<a name="line.24814"></a>
<span class="sourceLineNo">24815</span> double oy;<a name="line.24815"></a>
<span class="sourceLineNo">24816</span> tz = new Complex(-iy, ix).atan();<a name="line.24816"></a>
<span class="sourceLineNo">24817</span> ox = (tz.getImaginary());<a name="line.24817"></a>
<span class="sourceLineNo">24818</span> oy = (-tz.getReal());<a name="line.24818"></a>
<span class="sourceLineNo">24819</span> oc128data[it.oIndex] = ox;<a name="line.24819"></a>
<span class="sourceLineNo">24820</span> oc128data[it.oIndex + 1] = oy;<a name="line.24820"></a>
<span class="sourceLineNo">24821</span> }<a name="line.24821"></a>
<span class="sourceLineNo">24822</span> } else {<a name="line.24822"></a>
<span class="sourceLineNo">24823</span> final long iy = 0;<a name="line.24823"></a>
<span class="sourceLineNo">24824</span> while (it.hasNext()) {<a name="line.24824"></a>
<span class="sourceLineNo">24825</span> final long ix = it.aLong;<a name="line.24825"></a>
<span class="sourceLineNo">24826</span> Complex tz;<a name="line.24826"></a>
<span class="sourceLineNo">24827</span> double ox;<a name="line.24827"></a>
<span class="sourceLineNo">24828</span> double oy;<a name="line.24828"></a>
<span class="sourceLineNo">24829</span> tz = new Complex(-iy, ix).atan();<a name="line.24829"></a>
<span class="sourceLineNo">24830</span> ox = (tz.getImaginary());<a name="line.24830"></a>
<span class="sourceLineNo">24831</span> oy = (-tz.getReal());<a name="line.24831"></a>
<span class="sourceLineNo">24832</span> oc128data[it.oIndex] = ox;<a name="line.24832"></a>
<span class="sourceLineNo">24833</span> oc128data[it.oIndex + 1] = oy;<a name="line.24833"></a>
<span class="sourceLineNo">24834</span> }<a name="line.24834"></a>
<span class="sourceLineNo">24835</span> }<a name="line.24835"></a>
<span class="sourceLineNo">24836</span> } else {<a name="line.24836"></a>
<span class="sourceLineNo">24837</span> while (it.hasNext()) {<a name="line.24837"></a>
<span class="sourceLineNo">24838</span> final double ix = it.aDouble;<a name="line.24838"></a>
<span class="sourceLineNo">24839</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.24839"></a>
<span class="sourceLineNo">24840</span> Complex tz;<a name="line.24840"></a>
<span class="sourceLineNo">24841</span> double ox;<a name="line.24841"></a>
<span class="sourceLineNo">24842</span> double oy;<a name="line.24842"></a>
<span class="sourceLineNo">24843</span> tz = new Complex(-iy, ix).atan();<a name="line.24843"></a>
<span class="sourceLineNo">24844</span> ox = (tz.getImaginary());<a name="line.24844"></a>
<span class="sourceLineNo">24845</span> oy = (-tz.getReal());<a name="line.24845"></a>
<span class="sourceLineNo">24846</span> oc128data[it.oIndex] = ox;<a name="line.24846"></a>
<span class="sourceLineNo">24847</span> oc128data[it.oIndex + 1] = oy;<a name="line.24847"></a>
<span class="sourceLineNo">24848</span> }<a name="line.24848"></a>
<span class="sourceLineNo">24849</span> }<a name="line.24849"></a>
<span class="sourceLineNo">24850</span> break;<a name="line.24850"></a>
<span class="sourceLineNo">24851</span> default:<a name="line.24851"></a>
<span class="sourceLineNo">24852</span> throw new IllegalArgumentException("arctanh supports integer, compound integer, real, compound real, complex datasets only");<a name="line.24852"></a>
<span class="sourceLineNo">24853</span> }<a name="line.24853"></a>
<span class="sourceLineNo">24854</span><a name="line.24854"></a>
<span class="sourceLineNo">24855</span> addFunctionName(result, "arctanh");<a name="line.24855"></a>
<span class="sourceLineNo">24856</span> return result;<a name="line.24856"></a>
<span class="sourceLineNo">24857</span> }<a name="line.24857"></a>
<span class="sourceLineNo">24858</span><a name="line.24858"></a>
<span class="sourceLineNo">24859</span> /**<a name="line.24859"></a>
<span class="sourceLineNo">24860</span> * log - evaluate the logarithm function on each element of the dataset<a name="line.24860"></a>
<span class="sourceLineNo">24861</span> * @param a<a name="line.24861"></a>
<span class="sourceLineNo">24862</span> * @return dataset<a name="line.24862"></a>
<span class="sourceLineNo">24863</span> */<a name="line.24863"></a>
<span class="sourceLineNo">24864</span> public static Dataset log(final Object a) {<a name="line.24864"></a>
<span class="sourceLineNo">24865</span> return log(a, null);<a name="line.24865"></a>
<span class="sourceLineNo">24866</span> }<a name="line.24866"></a>
<span class="sourceLineNo">24867</span><a name="line.24867"></a>
<span class="sourceLineNo">24868</span> /**<a name="line.24868"></a>
<span class="sourceLineNo">24869</span> * log - evaluate the logarithm function on each element of the dataset<a name="line.24869"></a>
<span class="sourceLineNo">24870</span> * @param a<a name="line.24870"></a>
<span class="sourceLineNo">24871</span> * @param o output can be null - in which case, a new dataset is created<a name="line.24871"></a>
<span class="sourceLineNo">24872</span> * @return dataset<a name="line.24872"></a>
<span class="sourceLineNo">24873</span> */<a name="line.24873"></a>
<span class="sourceLineNo">24874</span> public static Dataset log(final Object a, final Dataset o) {<a name="line.24874"></a>
<span class="sourceLineNo">24875</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.24875"></a>
<span class="sourceLineNo">24876</span> SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true);<a name="line.24876"></a>
<span class="sourceLineNo">24877</span> final Dataset result = it.getOutput();<a name="line.24877"></a>
<span class="sourceLineNo">24878</span> if (!result.isComplex()) {<a name="line.24878"></a>
<span class="sourceLineNo">24879</span> if (da.isComplex()) {<a name="line.24879"></a>
<span class="sourceLineNo">24880</span> da = da.getRealView();<a name="line.24880"></a>
<span class="sourceLineNo">24881</span> it = new SingleInputBroadcastIterator(da, result, true);<a name="line.24881"></a>
<span class="sourceLineNo">24882</span> }<a name="line.24882"></a>
<span class="sourceLineNo">24883</span> }<a name="line.24883"></a>
<span class="sourceLineNo">24884</span> final int is = result.getElementsPerItem();<a name="line.24884"></a>
<span class="sourceLineNo">24885</span> final int as = da.getElementsPerItem();<a name="line.24885"></a>
<span class="sourceLineNo">24886</span> final int dt = result.getDType();<a name="line.24886"></a>
<span class="sourceLineNo">24887</span><a name="line.24887"></a>
<span class="sourceLineNo">24888</span> switch(dt) {<a name="line.24888"></a>
<span class="sourceLineNo">24889</span> case Dataset.INT8:<a name="line.24889"></a>
<span class="sourceLineNo">24890</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.24890"></a>
<span class="sourceLineNo">24891</span> if (it.isOutputDouble()) {<a name="line.24891"></a>
<span class="sourceLineNo">24892</span> while (it.hasNext()) {<a name="line.24892"></a>
<span class="sourceLineNo">24893</span> final double ix = it.aDouble;<a name="line.24893"></a>
<span class="sourceLineNo">24894</span> byte ox;<a name="line.24894"></a>
<span class="sourceLineNo">24895</span> ox = (byte) toLong(Math.log(ix));<a name="line.24895"></a>
<span class="sourceLineNo">24896</span> oi8data[it.oIndex] = ox;<a name="line.24896"></a>
<span class="sourceLineNo">24897</span> }<a name="line.24897"></a>
<span class="sourceLineNo">24898</span> } else {<a name="line.24898"></a>
<span class="sourceLineNo">24899</span> while (it.hasNext()) {<a name="line.24899"></a>
<span class="sourceLineNo">24900</span> final long ix = it.aLong;<a name="line.24900"></a>
<span class="sourceLineNo">24901</span> byte ox;<a name="line.24901"></a>
<span class="sourceLineNo">24902</span> ox = (byte) toLong(Math.log(ix));<a name="line.24902"></a>
<span class="sourceLineNo">24903</span> oi8data[it.oIndex] = ox;<a name="line.24903"></a>
<span class="sourceLineNo">24904</span> }<a name="line.24904"></a>
<span class="sourceLineNo">24905</span> }<a name="line.24905"></a>
<span class="sourceLineNo">24906</span> break;<a name="line.24906"></a>
<span class="sourceLineNo">24907</span> case Dataset.INT16:<a name="line.24907"></a>
<span class="sourceLineNo">24908</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.24908"></a>
<span class="sourceLineNo">24909</span> if (it.isOutputDouble()) {<a name="line.24909"></a>
<span class="sourceLineNo">24910</span> while (it.hasNext()) {<a name="line.24910"></a>
<span class="sourceLineNo">24911</span> final double ix = it.aDouble;<a name="line.24911"></a>
<span class="sourceLineNo">24912</span> short ox;<a name="line.24912"></a>
<span class="sourceLineNo">24913</span> ox = (short) toLong(Math.log(ix));<a name="line.24913"></a>
<span class="sourceLineNo">24914</span> oi16data[it.oIndex] = ox;<a name="line.24914"></a>
<span class="sourceLineNo">24915</span> }<a name="line.24915"></a>
<span class="sourceLineNo">24916</span> } else {<a name="line.24916"></a>
<span class="sourceLineNo">24917</span> while (it.hasNext()) {<a name="line.24917"></a>
<span class="sourceLineNo">24918</span> final long ix = it.aLong;<a name="line.24918"></a>
<span class="sourceLineNo">24919</span> short ox;<a name="line.24919"></a>
<span class="sourceLineNo">24920</span> ox = (short) toLong(Math.log(ix));<a name="line.24920"></a>
<span class="sourceLineNo">24921</span> oi16data[it.oIndex] = ox;<a name="line.24921"></a>
<span class="sourceLineNo">24922</span> }<a name="line.24922"></a>
<span class="sourceLineNo">24923</span> }<a name="line.24923"></a>
<span class="sourceLineNo">24924</span> break;<a name="line.24924"></a>
<span class="sourceLineNo">24925</span> case Dataset.INT64:<a name="line.24925"></a>
<span class="sourceLineNo">24926</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.24926"></a>
<span class="sourceLineNo">24927</span> if (it.isOutputDouble()) {<a name="line.24927"></a>
<span class="sourceLineNo">24928</span> while (it.hasNext()) {<a name="line.24928"></a>
<span class="sourceLineNo">24929</span> final double ix = it.aDouble;<a name="line.24929"></a>
<span class="sourceLineNo">24930</span> long ox;<a name="line.24930"></a>
<span class="sourceLineNo">24931</span> ox = toLong(Math.log(ix));<a name="line.24931"></a>
<span class="sourceLineNo">24932</span> oi64data[it.oIndex] = ox;<a name="line.24932"></a>
<span class="sourceLineNo">24933</span> }<a name="line.24933"></a>
<span class="sourceLineNo">24934</span> } else {<a name="line.24934"></a>
<span class="sourceLineNo">24935</span> while (it.hasNext()) {<a name="line.24935"></a>
<span class="sourceLineNo">24936</span> final long ix = it.aLong;<a name="line.24936"></a>
<span class="sourceLineNo">24937</span> long ox;<a name="line.24937"></a>
<span class="sourceLineNo">24938</span> ox = toLong(Math.log(ix));<a name="line.24938"></a>
<span class="sourceLineNo">24939</span> oi64data[it.oIndex] = ox;<a name="line.24939"></a>
<span class="sourceLineNo">24940</span> }<a name="line.24940"></a>
<span class="sourceLineNo">24941</span> }<a name="line.24941"></a>
<span class="sourceLineNo">24942</span> break;<a name="line.24942"></a>
<span class="sourceLineNo">24943</span> case Dataset.INT32:<a name="line.24943"></a>
<span class="sourceLineNo">24944</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.24944"></a>
<span class="sourceLineNo">24945</span> if (it.isOutputDouble()) {<a name="line.24945"></a>
<span class="sourceLineNo">24946</span> while (it.hasNext()) {<a name="line.24946"></a>
<span class="sourceLineNo">24947</span> final double ix = it.aDouble;<a name="line.24947"></a>
<span class="sourceLineNo">24948</span> int ox;<a name="line.24948"></a>
<span class="sourceLineNo">24949</span> ox = (int) toLong(Math.log(ix));<a name="line.24949"></a>
<span class="sourceLineNo">24950</span> oi32data[it.oIndex] = ox;<a name="line.24950"></a>
<span class="sourceLineNo">24951</span> }<a name="line.24951"></a>
<span class="sourceLineNo">24952</span> } else {<a name="line.24952"></a>
<span class="sourceLineNo">24953</span> while (it.hasNext()) {<a name="line.24953"></a>
<span class="sourceLineNo">24954</span> final long ix = it.aLong;<a name="line.24954"></a>
<span class="sourceLineNo">24955</span> int ox;<a name="line.24955"></a>
<span class="sourceLineNo">24956</span> ox = (int) toLong(Math.log(ix));<a name="line.24956"></a>
<span class="sourceLineNo">24957</span> oi32data[it.oIndex] = ox;<a name="line.24957"></a>
<span class="sourceLineNo">24958</span> }<a name="line.24958"></a>
<span class="sourceLineNo">24959</span> }<a name="line.24959"></a>
<span class="sourceLineNo">24960</span> break;<a name="line.24960"></a>
<span class="sourceLineNo">24961</span> case Dataset.ARRAYINT8:<a name="line.24961"></a>
<span class="sourceLineNo">24962</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.24962"></a>
<span class="sourceLineNo">24963</span> if (is == 1) {<a name="line.24963"></a>
<span class="sourceLineNo">24964</span> if (it.isOutputDouble()) {<a name="line.24964"></a>
<span class="sourceLineNo">24965</span> while (it.hasNext()) {<a name="line.24965"></a>
<span class="sourceLineNo">24966</span> final double ix = it.aDouble;<a name="line.24966"></a>
<span class="sourceLineNo">24967</span> byte ox;<a name="line.24967"></a>
<span class="sourceLineNo">24968</span> ox = (byte) toLong(Math.log(ix));<a name="line.24968"></a>
<span class="sourceLineNo">24969</span> oai8data[it.oIndex] = ox;<a name="line.24969"></a>
<span class="sourceLineNo">24970</span> }<a name="line.24970"></a>
<span class="sourceLineNo">24971</span> } else {<a name="line.24971"></a>
<span class="sourceLineNo">24972</span> while (it.hasNext()) {<a name="line.24972"></a>
<span class="sourceLineNo">24973</span> final long ix = it.aLong;<a name="line.24973"></a>
<span class="sourceLineNo">24974</span> byte ox;<a name="line.24974"></a>
<span class="sourceLineNo">24975</span> ox = (byte) toLong(Math.log(ix));<a name="line.24975"></a>
<span class="sourceLineNo">24976</span> oai8data[it.oIndex] = ox;<a name="line.24976"></a>
<span class="sourceLineNo">24977</span> }<a name="line.24977"></a>
<span class="sourceLineNo">24978</span> }<a name="line.24978"></a>
<span class="sourceLineNo">24979</span> } else if (as == 1) {<a name="line.24979"></a>
<span class="sourceLineNo">24980</span> if (it.isOutputDouble()) {<a name="line.24980"></a>
<span class="sourceLineNo">24981</span> while (it.hasNext()) {<a name="line.24981"></a>
<span class="sourceLineNo">24982</span> final double ix = it.aDouble;<a name="line.24982"></a>
<span class="sourceLineNo">24983</span> byte ox;<a name="line.24983"></a>
<span class="sourceLineNo">24984</span> ox = (byte) toLong(Math.log(ix));<a name="line.24984"></a>
<span class="sourceLineNo">24985</span> for (int j = 0; j &lt; is; j++) {<a name="line.24985"></a>
<span class="sourceLineNo">24986</span> oai8data[it.oIndex + j] = ox;<a name="line.24986"></a>
<span class="sourceLineNo">24987</span> }<a name="line.24987"></a>
<span class="sourceLineNo">24988</span> }<a name="line.24988"></a>
<span class="sourceLineNo">24989</span> } else {<a name="line.24989"></a>
<span class="sourceLineNo">24990</span> while (it.hasNext()) {<a name="line.24990"></a>
<span class="sourceLineNo">24991</span> final long ix = it.aLong;<a name="line.24991"></a>
<span class="sourceLineNo">24992</span> byte ox;<a name="line.24992"></a>
<span class="sourceLineNo">24993</span> ox = (byte) toLong(Math.log(ix));<a name="line.24993"></a>
<span class="sourceLineNo">24994</span> for (int j = 0; j &lt; is; j++) {<a name="line.24994"></a>
<span class="sourceLineNo">24995</span> oai8data[it.oIndex + j] = ox;<a name="line.24995"></a>
<span class="sourceLineNo">24996</span> }<a name="line.24996"></a>
<span class="sourceLineNo">24997</span> }<a name="line.24997"></a>
<span class="sourceLineNo">24998</span> }<a name="line.24998"></a>
<span class="sourceLineNo">24999</span> } else {<a name="line.24999"></a>
<span class="sourceLineNo">25000</span> if (it.isOutputDouble()) {<a name="line.25000"></a>
<span class="sourceLineNo">25001</span> while (it.hasNext()) {<a name="line.25001"></a>
<span class="sourceLineNo">25002</span> for (int j = 0; j &lt; is; j++) {<a name="line.25002"></a>
<span class="sourceLineNo">25003</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.25003"></a>
<span class="sourceLineNo">25004</span> byte ox;<a name="line.25004"></a>
<span class="sourceLineNo">25005</span> ox = (byte) toLong(Math.log(ix));<a name="line.25005"></a>
<span class="sourceLineNo">25006</span> oai8data[it.oIndex + j] = ox;<a name="line.25006"></a>
<span class="sourceLineNo">25007</span> }<a name="line.25007"></a>
<span class="sourceLineNo">25008</span> }<a name="line.25008"></a>
<span class="sourceLineNo">25009</span> } else {<a name="line.25009"></a>
<span class="sourceLineNo">25010</span> while (it.hasNext()) {<a name="line.25010"></a>
<span class="sourceLineNo">25011</span> for (int j = 0; j &lt; is; j++) {<a name="line.25011"></a>
<span class="sourceLineNo">25012</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.25012"></a>
<span class="sourceLineNo">25013</span> byte ox;<a name="line.25013"></a>
<span class="sourceLineNo">25014</span> ox = (byte) toLong(Math.log(ix));<a name="line.25014"></a>
<span class="sourceLineNo">25015</span> oai8data[it.oIndex + j] = ox;<a name="line.25015"></a>
<span class="sourceLineNo">25016</span> }<a name="line.25016"></a>
<span class="sourceLineNo">25017</span> }<a name="line.25017"></a>
<span class="sourceLineNo">25018</span> }<a name="line.25018"></a>
<span class="sourceLineNo">25019</span> }<a name="line.25019"></a>
<span class="sourceLineNo">25020</span> break;<a name="line.25020"></a>
<span class="sourceLineNo">25021</span> case Dataset.ARRAYINT16:<a name="line.25021"></a>
<span class="sourceLineNo">25022</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.25022"></a>
<span class="sourceLineNo">25023</span> if (is == 1) {<a name="line.25023"></a>
<span class="sourceLineNo">25024</span> if (it.isOutputDouble()) {<a name="line.25024"></a>
<span class="sourceLineNo">25025</span> while (it.hasNext()) {<a name="line.25025"></a>
<span class="sourceLineNo">25026</span> final double ix = it.aDouble;<a name="line.25026"></a>
<span class="sourceLineNo">25027</span> short ox;<a name="line.25027"></a>
<span class="sourceLineNo">25028</span> ox = (short) toLong(Math.log(ix));<a name="line.25028"></a>
<span class="sourceLineNo">25029</span> oai16data[it.oIndex] = ox;<a name="line.25029"></a>
<span class="sourceLineNo">25030</span> }<a name="line.25030"></a>
<span class="sourceLineNo">25031</span> } else {<a name="line.25031"></a>
<span class="sourceLineNo">25032</span> while (it.hasNext()) {<a name="line.25032"></a>
<span class="sourceLineNo">25033</span> final long ix = it.aLong;<a name="line.25033"></a>
<span class="sourceLineNo">25034</span> short ox;<a name="line.25034"></a>
<span class="sourceLineNo">25035</span> ox = (short) toLong(Math.log(ix));<a name="line.25035"></a>
<span class="sourceLineNo">25036</span> oai16data[it.oIndex] = ox;<a name="line.25036"></a>
<span class="sourceLineNo">25037</span> }<a name="line.25037"></a>
<span class="sourceLineNo">25038</span> }<a name="line.25038"></a>
<span class="sourceLineNo">25039</span> } else if (as == 1) {<a name="line.25039"></a>
<span class="sourceLineNo">25040</span> if (it.isOutputDouble()) {<a name="line.25040"></a>
<span class="sourceLineNo">25041</span> while (it.hasNext()) {<a name="line.25041"></a>
<span class="sourceLineNo">25042</span> final double ix = it.aDouble;<a name="line.25042"></a>
<span class="sourceLineNo">25043</span> short ox;<a name="line.25043"></a>
<span class="sourceLineNo">25044</span> ox = (short) toLong(Math.log(ix));<a name="line.25044"></a>
<span class="sourceLineNo">25045</span> for (int j = 0; j &lt; is; j++) {<a name="line.25045"></a>
<span class="sourceLineNo">25046</span> oai16data[it.oIndex + j] = ox;<a name="line.25046"></a>
<span class="sourceLineNo">25047</span> }<a name="line.25047"></a>
<span class="sourceLineNo">25048</span> }<a name="line.25048"></a>
<span class="sourceLineNo">25049</span> } else {<a name="line.25049"></a>
<span class="sourceLineNo">25050</span> while (it.hasNext()) {<a name="line.25050"></a>
<span class="sourceLineNo">25051</span> final long ix = it.aLong;<a name="line.25051"></a>
<span class="sourceLineNo">25052</span> short ox;<a name="line.25052"></a>
<span class="sourceLineNo">25053</span> ox = (short) toLong(Math.log(ix));<a name="line.25053"></a>
<span class="sourceLineNo">25054</span> for (int j = 0; j &lt; is; j++) {<a name="line.25054"></a>
<span class="sourceLineNo">25055</span> oai16data[it.oIndex + j] = ox;<a name="line.25055"></a>
<span class="sourceLineNo">25056</span> }<a name="line.25056"></a>
<span class="sourceLineNo">25057</span> }<a name="line.25057"></a>
<span class="sourceLineNo">25058</span> }<a name="line.25058"></a>
<span class="sourceLineNo">25059</span> } else {<a name="line.25059"></a>
<span class="sourceLineNo">25060</span> if (it.isOutputDouble()) {<a name="line.25060"></a>
<span class="sourceLineNo">25061</span> while (it.hasNext()) {<a name="line.25061"></a>
<span class="sourceLineNo">25062</span> for (int j = 0; j &lt; is; j++) {<a name="line.25062"></a>
<span class="sourceLineNo">25063</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.25063"></a>
<span class="sourceLineNo">25064</span> short ox;<a name="line.25064"></a>
<span class="sourceLineNo">25065</span> ox = (short) toLong(Math.log(ix));<a name="line.25065"></a>
<span class="sourceLineNo">25066</span> oai16data[it.oIndex + j] = ox;<a name="line.25066"></a>
<span class="sourceLineNo">25067</span> }<a name="line.25067"></a>
<span class="sourceLineNo">25068</span> }<a name="line.25068"></a>
<span class="sourceLineNo">25069</span> } else {<a name="line.25069"></a>
<span class="sourceLineNo">25070</span> while (it.hasNext()) {<a name="line.25070"></a>
<span class="sourceLineNo">25071</span> for (int j = 0; j &lt; is; j++) {<a name="line.25071"></a>
<span class="sourceLineNo">25072</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.25072"></a>
<span class="sourceLineNo">25073</span> short ox;<a name="line.25073"></a>
<span class="sourceLineNo">25074</span> ox = (short) toLong(Math.log(ix));<a name="line.25074"></a>
<span class="sourceLineNo">25075</span> oai16data[it.oIndex + j] = ox;<a name="line.25075"></a>
<span class="sourceLineNo">25076</span> }<a name="line.25076"></a>
<span class="sourceLineNo">25077</span> }<a name="line.25077"></a>
<span class="sourceLineNo">25078</span> }<a name="line.25078"></a>
<span class="sourceLineNo">25079</span> }<a name="line.25079"></a>
<span class="sourceLineNo">25080</span> break;<a name="line.25080"></a>
<span class="sourceLineNo">25081</span> case Dataset.ARRAYINT64:<a name="line.25081"></a>
<span class="sourceLineNo">25082</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.25082"></a>
<span class="sourceLineNo">25083</span> if (is == 1) {<a name="line.25083"></a>
<span class="sourceLineNo">25084</span> if (it.isOutputDouble()) {<a name="line.25084"></a>
<span class="sourceLineNo">25085</span> while (it.hasNext()) {<a name="line.25085"></a>
<span class="sourceLineNo">25086</span> final double ix = it.aDouble;<a name="line.25086"></a>
<span class="sourceLineNo">25087</span> long ox;<a name="line.25087"></a>
<span class="sourceLineNo">25088</span> ox = toLong(Math.log(ix));<a name="line.25088"></a>
<span class="sourceLineNo">25089</span> oai64data[it.oIndex] = ox;<a name="line.25089"></a>
<span class="sourceLineNo">25090</span> }<a name="line.25090"></a>
<span class="sourceLineNo">25091</span> } else {<a name="line.25091"></a>
<span class="sourceLineNo">25092</span> while (it.hasNext()) {<a name="line.25092"></a>
<span class="sourceLineNo">25093</span> final long ix = it.aLong;<a name="line.25093"></a>
<span class="sourceLineNo">25094</span> long ox;<a name="line.25094"></a>
<span class="sourceLineNo">25095</span> ox = toLong(Math.log(ix));<a name="line.25095"></a>
<span class="sourceLineNo">25096</span> oai64data[it.oIndex] = ox;<a name="line.25096"></a>
<span class="sourceLineNo">25097</span> }<a name="line.25097"></a>
<span class="sourceLineNo">25098</span> }<a name="line.25098"></a>
<span class="sourceLineNo">25099</span> } else if (as == 1) {<a name="line.25099"></a>
<span class="sourceLineNo">25100</span> if (it.isOutputDouble()) {<a name="line.25100"></a>
<span class="sourceLineNo">25101</span> while (it.hasNext()) {<a name="line.25101"></a>
<span class="sourceLineNo">25102</span> final double ix = it.aDouble;<a name="line.25102"></a>
<span class="sourceLineNo">25103</span> long ox;<a name="line.25103"></a>
<span class="sourceLineNo">25104</span> ox = toLong(Math.log(ix));<a name="line.25104"></a>
<span class="sourceLineNo">25105</span> for (int j = 0; j &lt; is; j++) {<a name="line.25105"></a>
<span class="sourceLineNo">25106</span> oai64data[it.oIndex + j] = ox;<a name="line.25106"></a>
<span class="sourceLineNo">25107</span> }<a name="line.25107"></a>
<span class="sourceLineNo">25108</span> }<a name="line.25108"></a>
<span class="sourceLineNo">25109</span> } else {<a name="line.25109"></a>
<span class="sourceLineNo">25110</span> while (it.hasNext()) {<a name="line.25110"></a>
<span class="sourceLineNo">25111</span> final long ix = it.aLong;<a name="line.25111"></a>
<span class="sourceLineNo">25112</span> long ox;<a name="line.25112"></a>
<span class="sourceLineNo">25113</span> ox = toLong(Math.log(ix));<a name="line.25113"></a>
<span class="sourceLineNo">25114</span> for (int j = 0; j &lt; is; j++) {<a name="line.25114"></a>
<span class="sourceLineNo">25115</span> oai64data[it.oIndex + j] = ox;<a name="line.25115"></a>
<span class="sourceLineNo">25116</span> }<a name="line.25116"></a>
<span class="sourceLineNo">25117</span> }<a name="line.25117"></a>
<span class="sourceLineNo">25118</span> }<a name="line.25118"></a>
<span class="sourceLineNo">25119</span> } else {<a name="line.25119"></a>
<span class="sourceLineNo">25120</span> if (it.isOutputDouble()) {<a name="line.25120"></a>
<span class="sourceLineNo">25121</span> while (it.hasNext()) {<a name="line.25121"></a>
<span class="sourceLineNo">25122</span> for (int j = 0; j &lt; is; j++) {<a name="line.25122"></a>
<span class="sourceLineNo">25123</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.25123"></a>
<span class="sourceLineNo">25124</span> long ox;<a name="line.25124"></a>
<span class="sourceLineNo">25125</span> ox = toLong(Math.log(ix));<a name="line.25125"></a>
<span class="sourceLineNo">25126</span> oai64data[it.oIndex + j] = ox;<a name="line.25126"></a>
<span class="sourceLineNo">25127</span> }<a name="line.25127"></a>
<span class="sourceLineNo">25128</span> }<a name="line.25128"></a>
<span class="sourceLineNo">25129</span> } else {<a name="line.25129"></a>
<span class="sourceLineNo">25130</span> while (it.hasNext()) {<a name="line.25130"></a>
<span class="sourceLineNo">25131</span> for (int j = 0; j &lt; is; j++) {<a name="line.25131"></a>
<span class="sourceLineNo">25132</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.25132"></a>
<span class="sourceLineNo">25133</span> long ox;<a name="line.25133"></a>
<span class="sourceLineNo">25134</span> ox = toLong(Math.log(ix));<a name="line.25134"></a>
<span class="sourceLineNo">25135</span> oai64data[it.oIndex + j] = ox;<a name="line.25135"></a>
<span class="sourceLineNo">25136</span> }<a name="line.25136"></a>
<span class="sourceLineNo">25137</span> }<a name="line.25137"></a>
<span class="sourceLineNo">25138</span> }<a name="line.25138"></a>
<span class="sourceLineNo">25139</span> }<a name="line.25139"></a>
<span class="sourceLineNo">25140</span> break;<a name="line.25140"></a>
<span class="sourceLineNo">25141</span> case Dataset.ARRAYINT32:<a name="line.25141"></a>
<span class="sourceLineNo">25142</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.25142"></a>
<span class="sourceLineNo">25143</span> if (is == 1) {<a name="line.25143"></a>
<span class="sourceLineNo">25144</span> if (it.isOutputDouble()) {<a name="line.25144"></a>
<span class="sourceLineNo">25145</span> while (it.hasNext()) {<a name="line.25145"></a>
<span class="sourceLineNo">25146</span> final double ix = it.aDouble;<a name="line.25146"></a>
<span class="sourceLineNo">25147</span> int ox;<a name="line.25147"></a>
<span class="sourceLineNo">25148</span> ox = (int) toLong(Math.log(ix));<a name="line.25148"></a>
<span class="sourceLineNo">25149</span> oai32data[it.oIndex] = ox;<a name="line.25149"></a>
<span class="sourceLineNo">25150</span> }<a name="line.25150"></a>
<span class="sourceLineNo">25151</span> } else {<a name="line.25151"></a>
<span class="sourceLineNo">25152</span> while (it.hasNext()) {<a name="line.25152"></a>
<span class="sourceLineNo">25153</span> final long ix = it.aLong;<a name="line.25153"></a>
<span class="sourceLineNo">25154</span> int ox;<a name="line.25154"></a>
<span class="sourceLineNo">25155</span> ox = (int) toLong(Math.log(ix));<a name="line.25155"></a>
<span class="sourceLineNo">25156</span> oai32data[it.oIndex] = ox;<a name="line.25156"></a>
<span class="sourceLineNo">25157</span> }<a name="line.25157"></a>
<span class="sourceLineNo">25158</span> }<a name="line.25158"></a>
<span class="sourceLineNo">25159</span> } else if (as == 1) {<a name="line.25159"></a>
<span class="sourceLineNo">25160</span> if (it.isOutputDouble()) {<a name="line.25160"></a>
<span class="sourceLineNo">25161</span> while (it.hasNext()) {<a name="line.25161"></a>
<span class="sourceLineNo">25162</span> final double ix = it.aDouble;<a name="line.25162"></a>
<span class="sourceLineNo">25163</span> int ox;<a name="line.25163"></a>
<span class="sourceLineNo">25164</span> ox = (int) toLong(Math.log(ix));<a name="line.25164"></a>
<span class="sourceLineNo">25165</span> for (int j = 0; j &lt; is; j++) {<a name="line.25165"></a>
<span class="sourceLineNo">25166</span> oai32data[it.oIndex + j] = ox;<a name="line.25166"></a>
<span class="sourceLineNo">25167</span> }<a name="line.25167"></a>
<span class="sourceLineNo">25168</span> }<a name="line.25168"></a>
<span class="sourceLineNo">25169</span> } else {<a name="line.25169"></a>
<span class="sourceLineNo">25170</span> while (it.hasNext()) {<a name="line.25170"></a>
<span class="sourceLineNo">25171</span> final long ix = it.aLong;<a name="line.25171"></a>
<span class="sourceLineNo">25172</span> int ox;<a name="line.25172"></a>
<span class="sourceLineNo">25173</span> ox = (int) toLong(Math.log(ix));<a name="line.25173"></a>
<span class="sourceLineNo">25174</span> for (int j = 0; j &lt; is; j++) {<a name="line.25174"></a>
<span class="sourceLineNo">25175</span> oai32data[it.oIndex + j] = ox;<a name="line.25175"></a>
<span class="sourceLineNo">25176</span> }<a name="line.25176"></a>
<span class="sourceLineNo">25177</span> }<a name="line.25177"></a>
<span class="sourceLineNo">25178</span> }<a name="line.25178"></a>
<span class="sourceLineNo">25179</span> } else {<a name="line.25179"></a>
<span class="sourceLineNo">25180</span> if (it.isOutputDouble()) {<a name="line.25180"></a>
<span class="sourceLineNo">25181</span> while (it.hasNext()) {<a name="line.25181"></a>
<span class="sourceLineNo">25182</span> for (int j = 0; j &lt; is; j++) {<a name="line.25182"></a>
<span class="sourceLineNo">25183</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.25183"></a>
<span class="sourceLineNo">25184</span> int ox;<a name="line.25184"></a>
<span class="sourceLineNo">25185</span> ox = (int) toLong(Math.log(ix));<a name="line.25185"></a>
<span class="sourceLineNo">25186</span> oai32data[it.oIndex + j] = ox;<a name="line.25186"></a>
<span class="sourceLineNo">25187</span> }<a name="line.25187"></a>
<span class="sourceLineNo">25188</span> }<a name="line.25188"></a>
<span class="sourceLineNo">25189</span> } else {<a name="line.25189"></a>
<span class="sourceLineNo">25190</span> while (it.hasNext()) {<a name="line.25190"></a>
<span class="sourceLineNo">25191</span> for (int j = 0; j &lt; is; j++) {<a name="line.25191"></a>
<span class="sourceLineNo">25192</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.25192"></a>
<span class="sourceLineNo">25193</span> int ox;<a name="line.25193"></a>
<span class="sourceLineNo">25194</span> ox = (int) toLong(Math.log(ix));<a name="line.25194"></a>
<span class="sourceLineNo">25195</span> oai32data[it.oIndex + j] = ox;<a name="line.25195"></a>
<span class="sourceLineNo">25196</span> }<a name="line.25196"></a>
<span class="sourceLineNo">25197</span> }<a name="line.25197"></a>
<span class="sourceLineNo">25198</span> }<a name="line.25198"></a>
<span class="sourceLineNo">25199</span> }<a name="line.25199"></a>
<span class="sourceLineNo">25200</span> break;<a name="line.25200"></a>
<span class="sourceLineNo">25201</span> case Dataset.FLOAT32:<a name="line.25201"></a>
<span class="sourceLineNo">25202</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.25202"></a>
<span class="sourceLineNo">25203</span> if (it.isOutputDouble()) {<a name="line.25203"></a>
<span class="sourceLineNo">25204</span> while (it.hasNext()) {<a name="line.25204"></a>
<span class="sourceLineNo">25205</span> final double ix = it.aDouble;<a name="line.25205"></a>
<span class="sourceLineNo">25206</span> float ox;<a name="line.25206"></a>
<span class="sourceLineNo">25207</span> ox = (float) (Math.log(ix));<a name="line.25207"></a>
<span class="sourceLineNo">25208</span> of32data[it.oIndex] = ox;<a name="line.25208"></a>
<span class="sourceLineNo">25209</span> }<a name="line.25209"></a>
<span class="sourceLineNo">25210</span> } else {<a name="line.25210"></a>
<span class="sourceLineNo">25211</span> while (it.hasNext()) {<a name="line.25211"></a>
<span class="sourceLineNo">25212</span> final long ix = it.aLong;<a name="line.25212"></a>
<span class="sourceLineNo">25213</span> float ox;<a name="line.25213"></a>
<span class="sourceLineNo">25214</span> ox = (float) (Math.log(ix));<a name="line.25214"></a>
<span class="sourceLineNo">25215</span> of32data[it.oIndex] = ox;<a name="line.25215"></a>
<span class="sourceLineNo">25216</span> }<a name="line.25216"></a>
<span class="sourceLineNo">25217</span> }<a name="line.25217"></a>
<span class="sourceLineNo">25218</span> break;<a name="line.25218"></a>
<span class="sourceLineNo">25219</span> case Dataset.FLOAT64:<a name="line.25219"></a>
<span class="sourceLineNo">25220</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.25220"></a>
<span class="sourceLineNo">25221</span> if (it.isOutputDouble()) {<a name="line.25221"></a>
<span class="sourceLineNo">25222</span> while (it.hasNext()) {<a name="line.25222"></a>
<span class="sourceLineNo">25223</span> final double ix = it.aDouble;<a name="line.25223"></a>
<span class="sourceLineNo">25224</span> double ox;<a name="line.25224"></a>
<span class="sourceLineNo">25225</span> ox = (Math.log(ix));<a name="line.25225"></a>
<span class="sourceLineNo">25226</span> of64data[it.oIndex] = ox;<a name="line.25226"></a>
<span class="sourceLineNo">25227</span> }<a name="line.25227"></a>
<span class="sourceLineNo">25228</span> } else {<a name="line.25228"></a>
<span class="sourceLineNo">25229</span> while (it.hasNext()) {<a name="line.25229"></a>
<span class="sourceLineNo">25230</span> final long ix = it.aLong;<a name="line.25230"></a>
<span class="sourceLineNo">25231</span> double ox;<a name="line.25231"></a>
<span class="sourceLineNo">25232</span> ox = (Math.log(ix));<a name="line.25232"></a>
<span class="sourceLineNo">25233</span> of64data[it.oIndex] = ox;<a name="line.25233"></a>
<span class="sourceLineNo">25234</span> }<a name="line.25234"></a>
<span class="sourceLineNo">25235</span> }<a name="line.25235"></a>
<span class="sourceLineNo">25236</span> break;<a name="line.25236"></a>
<span class="sourceLineNo">25237</span> case Dataset.ARRAYFLOAT32:<a name="line.25237"></a>
<span class="sourceLineNo">25238</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.25238"></a>
<span class="sourceLineNo">25239</span> if (is == 1) {<a name="line.25239"></a>
<span class="sourceLineNo">25240</span> if (it.isOutputDouble()) {<a name="line.25240"></a>
<span class="sourceLineNo">25241</span> while (it.hasNext()) {<a name="line.25241"></a>
<span class="sourceLineNo">25242</span> final double ix = it.aDouble;<a name="line.25242"></a>
<span class="sourceLineNo">25243</span> float ox;<a name="line.25243"></a>
<span class="sourceLineNo">25244</span> ox = (float) (Math.log(ix));<a name="line.25244"></a>
<span class="sourceLineNo">25245</span> oaf32data[it.oIndex] = ox;<a name="line.25245"></a>
<span class="sourceLineNo">25246</span> }<a name="line.25246"></a>
<span class="sourceLineNo">25247</span> } else {<a name="line.25247"></a>
<span class="sourceLineNo">25248</span> while (it.hasNext()) {<a name="line.25248"></a>
<span class="sourceLineNo">25249</span> final long ix = it.aLong;<a name="line.25249"></a>
<span class="sourceLineNo">25250</span> float ox;<a name="line.25250"></a>
<span class="sourceLineNo">25251</span> ox = (float) (Math.log(ix));<a name="line.25251"></a>
<span class="sourceLineNo">25252</span> oaf32data[it.oIndex] = ox;<a name="line.25252"></a>
<span class="sourceLineNo">25253</span> }<a name="line.25253"></a>
<span class="sourceLineNo">25254</span> }<a name="line.25254"></a>
<span class="sourceLineNo">25255</span> } else if (as == 1) {<a name="line.25255"></a>
<span class="sourceLineNo">25256</span> if (it.isOutputDouble()) {<a name="line.25256"></a>
<span class="sourceLineNo">25257</span> while (it.hasNext()) {<a name="line.25257"></a>
<span class="sourceLineNo">25258</span> final double ix = it.aDouble;<a name="line.25258"></a>
<span class="sourceLineNo">25259</span> float ox;<a name="line.25259"></a>
<span class="sourceLineNo">25260</span> ox = (float) (Math.log(ix));<a name="line.25260"></a>
<span class="sourceLineNo">25261</span> for (int j = 0; j &lt; is; j++) {<a name="line.25261"></a>
<span class="sourceLineNo">25262</span> oaf32data[it.oIndex + j] = ox;<a name="line.25262"></a>
<span class="sourceLineNo">25263</span> }<a name="line.25263"></a>
<span class="sourceLineNo">25264</span> }<a name="line.25264"></a>
<span class="sourceLineNo">25265</span> } else {<a name="line.25265"></a>
<span class="sourceLineNo">25266</span> while (it.hasNext()) {<a name="line.25266"></a>
<span class="sourceLineNo">25267</span> final long ix = it.aLong;<a name="line.25267"></a>
<span class="sourceLineNo">25268</span> float ox;<a name="line.25268"></a>
<span class="sourceLineNo">25269</span> ox = (float) (Math.log(ix));<a name="line.25269"></a>
<span class="sourceLineNo">25270</span> for (int j = 0; j &lt; is; j++) {<a name="line.25270"></a>
<span class="sourceLineNo">25271</span> oaf32data[it.oIndex + j] = ox;<a name="line.25271"></a>
<span class="sourceLineNo">25272</span> }<a name="line.25272"></a>
<span class="sourceLineNo">25273</span> }<a name="line.25273"></a>
<span class="sourceLineNo">25274</span> }<a name="line.25274"></a>
<span class="sourceLineNo">25275</span> } else {<a name="line.25275"></a>
<span class="sourceLineNo">25276</span> if (it.isOutputDouble()) {<a name="line.25276"></a>
<span class="sourceLineNo">25277</span> while (it.hasNext()) {<a name="line.25277"></a>
<span class="sourceLineNo">25278</span> for (int j = 0; j &lt; is; j++) {<a name="line.25278"></a>
<span class="sourceLineNo">25279</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.25279"></a>
<span class="sourceLineNo">25280</span> float ox;<a name="line.25280"></a>
<span class="sourceLineNo">25281</span> ox = (float) (Math.log(ix));<a name="line.25281"></a>
<span class="sourceLineNo">25282</span> oaf32data[it.oIndex + j] = ox;<a name="line.25282"></a>
<span class="sourceLineNo">25283</span> }<a name="line.25283"></a>
<span class="sourceLineNo">25284</span> }<a name="line.25284"></a>
<span class="sourceLineNo">25285</span> } else {<a name="line.25285"></a>
<span class="sourceLineNo">25286</span> while (it.hasNext()) {<a name="line.25286"></a>
<span class="sourceLineNo">25287</span> for (int j = 0; j &lt; is; j++) {<a name="line.25287"></a>
<span class="sourceLineNo">25288</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.25288"></a>
<span class="sourceLineNo">25289</span> float ox;<a name="line.25289"></a>
<span class="sourceLineNo">25290</span> ox = (float) (Math.log(ix));<a name="line.25290"></a>
<span class="sourceLineNo">25291</span> oaf32data[it.oIndex + j] = ox;<a name="line.25291"></a>
<span class="sourceLineNo">25292</span> }<a name="line.25292"></a>
<span class="sourceLineNo">25293</span> }<a name="line.25293"></a>
<span class="sourceLineNo">25294</span> }<a name="line.25294"></a>
<span class="sourceLineNo">25295</span> }<a name="line.25295"></a>
<span class="sourceLineNo">25296</span> break;<a name="line.25296"></a>
<span class="sourceLineNo">25297</span> case Dataset.ARRAYFLOAT64:<a name="line.25297"></a>
<span class="sourceLineNo">25298</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.25298"></a>
<span class="sourceLineNo">25299</span> if (is == 1) {<a name="line.25299"></a>
<span class="sourceLineNo">25300</span> if (it.isOutputDouble()) {<a name="line.25300"></a>
<span class="sourceLineNo">25301</span> while (it.hasNext()) {<a name="line.25301"></a>
<span class="sourceLineNo">25302</span> final double ix = it.aDouble;<a name="line.25302"></a>
<span class="sourceLineNo">25303</span> double ox;<a name="line.25303"></a>
<span class="sourceLineNo">25304</span> ox = (Math.log(ix));<a name="line.25304"></a>
<span class="sourceLineNo">25305</span> oaf64data[it.oIndex] = ox;<a name="line.25305"></a>
<span class="sourceLineNo">25306</span> }<a name="line.25306"></a>
<span class="sourceLineNo">25307</span> } else {<a name="line.25307"></a>
<span class="sourceLineNo">25308</span> while (it.hasNext()) {<a name="line.25308"></a>
<span class="sourceLineNo">25309</span> final long ix = it.aLong;<a name="line.25309"></a>
<span class="sourceLineNo">25310</span> double ox;<a name="line.25310"></a>
<span class="sourceLineNo">25311</span> ox = (Math.log(ix));<a name="line.25311"></a>
<span class="sourceLineNo">25312</span> oaf64data[it.oIndex] = ox;<a name="line.25312"></a>
<span class="sourceLineNo">25313</span> }<a name="line.25313"></a>
<span class="sourceLineNo">25314</span> }<a name="line.25314"></a>
<span class="sourceLineNo">25315</span> } else if (as == 1) {<a name="line.25315"></a>
<span class="sourceLineNo">25316</span> if (it.isOutputDouble()) {<a name="line.25316"></a>
<span class="sourceLineNo">25317</span> while (it.hasNext()) {<a name="line.25317"></a>
<span class="sourceLineNo">25318</span> final double ix = it.aDouble;<a name="line.25318"></a>
<span class="sourceLineNo">25319</span> double ox;<a name="line.25319"></a>
<span class="sourceLineNo">25320</span> ox = (Math.log(ix));<a name="line.25320"></a>
<span class="sourceLineNo">25321</span> for (int j = 0; j &lt; is; j++) {<a name="line.25321"></a>
<span class="sourceLineNo">25322</span> oaf64data[it.oIndex + j] = ox;<a name="line.25322"></a>
<span class="sourceLineNo">25323</span> }<a name="line.25323"></a>
<span class="sourceLineNo">25324</span> }<a name="line.25324"></a>
<span class="sourceLineNo">25325</span> } else {<a name="line.25325"></a>
<span class="sourceLineNo">25326</span> while (it.hasNext()) {<a name="line.25326"></a>
<span class="sourceLineNo">25327</span> final long ix = it.aLong;<a name="line.25327"></a>
<span class="sourceLineNo">25328</span> double ox;<a name="line.25328"></a>
<span class="sourceLineNo">25329</span> ox = (Math.log(ix));<a name="line.25329"></a>
<span class="sourceLineNo">25330</span> for (int j = 0; j &lt; is; j++) {<a name="line.25330"></a>
<span class="sourceLineNo">25331</span> oaf64data[it.oIndex + j] = ox;<a name="line.25331"></a>
<span class="sourceLineNo">25332</span> }<a name="line.25332"></a>
<span class="sourceLineNo">25333</span> }<a name="line.25333"></a>
<span class="sourceLineNo">25334</span> }<a name="line.25334"></a>
<span class="sourceLineNo">25335</span> } else {<a name="line.25335"></a>
<span class="sourceLineNo">25336</span> if (it.isOutputDouble()) {<a name="line.25336"></a>
<span class="sourceLineNo">25337</span> while (it.hasNext()) {<a name="line.25337"></a>
<span class="sourceLineNo">25338</span> for (int j = 0; j &lt; is; j++) {<a name="line.25338"></a>
<span class="sourceLineNo">25339</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.25339"></a>
<span class="sourceLineNo">25340</span> double ox;<a name="line.25340"></a>
<span class="sourceLineNo">25341</span> ox = (Math.log(ix));<a name="line.25341"></a>
<span class="sourceLineNo">25342</span> oaf64data[it.oIndex + j] = ox;<a name="line.25342"></a>
<span class="sourceLineNo">25343</span> }<a name="line.25343"></a>
<span class="sourceLineNo">25344</span> }<a name="line.25344"></a>
<span class="sourceLineNo">25345</span> } else {<a name="line.25345"></a>
<span class="sourceLineNo">25346</span> while (it.hasNext()) {<a name="line.25346"></a>
<span class="sourceLineNo">25347</span> for (int j = 0; j &lt; is; j++) {<a name="line.25347"></a>
<span class="sourceLineNo">25348</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.25348"></a>
<span class="sourceLineNo">25349</span> double ox;<a name="line.25349"></a>
<span class="sourceLineNo">25350</span> ox = (Math.log(ix));<a name="line.25350"></a>
<span class="sourceLineNo">25351</span> oaf64data[it.oIndex + j] = ox;<a name="line.25351"></a>
<span class="sourceLineNo">25352</span> }<a name="line.25352"></a>
<span class="sourceLineNo">25353</span> }<a name="line.25353"></a>
<span class="sourceLineNo">25354</span> }<a name="line.25354"></a>
<span class="sourceLineNo">25355</span> }<a name="line.25355"></a>
<span class="sourceLineNo">25356</span> break;<a name="line.25356"></a>
<span class="sourceLineNo">25357</span> case Dataset.COMPLEX64:<a name="line.25357"></a>
<span class="sourceLineNo">25358</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.25358"></a>
<span class="sourceLineNo">25359</span> if (!da.isComplex()) {<a name="line.25359"></a>
<span class="sourceLineNo">25360</span> if (it.isOutputDouble()) {<a name="line.25360"></a>
<span class="sourceLineNo">25361</span> final double iy = 0;<a name="line.25361"></a>
<span class="sourceLineNo">25362</span> while (it.hasNext()) {<a name="line.25362"></a>
<span class="sourceLineNo">25363</span> final double ix = it.aDouble;<a name="line.25363"></a>
<span class="sourceLineNo">25364</span> float ox;<a name="line.25364"></a>
<span class="sourceLineNo">25365</span> float oy;<a name="line.25365"></a>
<span class="sourceLineNo">25366</span> ox = (float) (Math.log(Math.hypot(ix, iy)));<a name="line.25366"></a>
<span class="sourceLineNo">25367</span> oy = (float) (Math.atan2(iy, ix));<a name="line.25367"></a>
<span class="sourceLineNo">25368</span> oc64data[it.oIndex] = ox;<a name="line.25368"></a>
<span class="sourceLineNo">25369</span> oc64data[it.oIndex + 1] = oy;<a name="line.25369"></a>
<span class="sourceLineNo">25370</span> }<a name="line.25370"></a>
<span class="sourceLineNo">25371</span> } else {<a name="line.25371"></a>
<span class="sourceLineNo">25372</span> final long iy = 0;<a name="line.25372"></a>
<span class="sourceLineNo">25373</span> while (it.hasNext()) {<a name="line.25373"></a>
<span class="sourceLineNo">25374</span> final long ix = it.aLong;<a name="line.25374"></a>
<span class="sourceLineNo">25375</span> float ox;<a name="line.25375"></a>
<span class="sourceLineNo">25376</span> float oy;<a name="line.25376"></a>
<span class="sourceLineNo">25377</span> ox = (float) toLong(Math.log(Math.hypot(ix, iy)));<a name="line.25377"></a>
<span class="sourceLineNo">25378</span> oy = (float) toLong(Math.atan2(iy, ix));<a name="line.25378"></a>
<span class="sourceLineNo">25379</span> oc64data[it.oIndex] = ox;<a name="line.25379"></a>
<span class="sourceLineNo">25380</span> oc64data[it.oIndex + 1] = oy;<a name="line.25380"></a>
<span class="sourceLineNo">25381</span> }<a name="line.25381"></a>
<span class="sourceLineNo">25382</span> }<a name="line.25382"></a>
<span class="sourceLineNo">25383</span> } else {<a name="line.25383"></a>
<span class="sourceLineNo">25384</span> while (it.hasNext()) {<a name="line.25384"></a>
<span class="sourceLineNo">25385</span> final double ix = it.aDouble;<a name="line.25385"></a>
<span class="sourceLineNo">25386</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.25386"></a>
<span class="sourceLineNo">25387</span> float ox;<a name="line.25387"></a>
<span class="sourceLineNo">25388</span> float oy;<a name="line.25388"></a>
<span class="sourceLineNo">25389</span> ox = (float) (Math.log(Math.hypot(ix, iy)));<a name="line.25389"></a>
<span class="sourceLineNo">25390</span> oy = (float) (Math.atan2(iy, ix));<a name="line.25390"></a>
<span class="sourceLineNo">25391</span> oc64data[it.oIndex] = ox;<a name="line.25391"></a>
<span class="sourceLineNo">25392</span> oc64data[it.oIndex + 1] = oy;<a name="line.25392"></a>
<span class="sourceLineNo">25393</span> }<a name="line.25393"></a>
<span class="sourceLineNo">25394</span> }<a name="line.25394"></a>
<span class="sourceLineNo">25395</span> break;<a name="line.25395"></a>
<span class="sourceLineNo">25396</span> case Dataset.COMPLEX128:<a name="line.25396"></a>
<span class="sourceLineNo">25397</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.25397"></a>
<span class="sourceLineNo">25398</span> if (!da.isComplex()) {<a name="line.25398"></a>
<span class="sourceLineNo">25399</span> if (it.isOutputDouble()) {<a name="line.25399"></a>
<span class="sourceLineNo">25400</span> final double iy = 0;<a name="line.25400"></a>
<span class="sourceLineNo">25401</span> while (it.hasNext()) {<a name="line.25401"></a>
<span class="sourceLineNo">25402</span> final double ix = it.aDouble;<a name="line.25402"></a>
<span class="sourceLineNo">25403</span> double ox;<a name="line.25403"></a>
<span class="sourceLineNo">25404</span> double oy;<a name="line.25404"></a>
<span class="sourceLineNo">25405</span> ox = (Math.log(Math.hypot(ix, iy)));<a name="line.25405"></a>
<span class="sourceLineNo">25406</span> oy = (Math.atan2(iy, ix));<a name="line.25406"></a>
<span class="sourceLineNo">25407</span> oc128data[it.oIndex] = ox;<a name="line.25407"></a>
<span class="sourceLineNo">25408</span> oc128data[it.oIndex + 1] = oy;<a name="line.25408"></a>
<span class="sourceLineNo">25409</span> }<a name="line.25409"></a>
<span class="sourceLineNo">25410</span> } else {<a name="line.25410"></a>
<span class="sourceLineNo">25411</span> final long iy = 0;<a name="line.25411"></a>
<span class="sourceLineNo">25412</span> while (it.hasNext()) {<a name="line.25412"></a>
<span class="sourceLineNo">25413</span> final long ix = it.aLong;<a name="line.25413"></a>
<span class="sourceLineNo">25414</span> double ox;<a name="line.25414"></a>
<span class="sourceLineNo">25415</span> double oy;<a name="line.25415"></a>
<span class="sourceLineNo">25416</span> ox = (double) (Math.log(Math.hypot(ix, iy)));<a name="line.25416"></a>
<span class="sourceLineNo">25417</span> oy = (double) (Math.atan2(iy, ix));<a name="line.25417"></a>
<span class="sourceLineNo">25418</span> oc128data[it.oIndex] = ox;<a name="line.25418"></a>
<span class="sourceLineNo">25419</span> oc128data[it.oIndex + 1] = oy;<a name="line.25419"></a>
<span class="sourceLineNo">25420</span> }<a name="line.25420"></a>
<span class="sourceLineNo">25421</span> }<a name="line.25421"></a>
<span class="sourceLineNo">25422</span> } else {<a name="line.25422"></a>
<span class="sourceLineNo">25423</span> while (it.hasNext()) {<a name="line.25423"></a>
<span class="sourceLineNo">25424</span> final double ix = it.aDouble;<a name="line.25424"></a>
<span class="sourceLineNo">25425</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.25425"></a>
<span class="sourceLineNo">25426</span> double ox;<a name="line.25426"></a>
<span class="sourceLineNo">25427</span> double oy;<a name="line.25427"></a>
<span class="sourceLineNo">25428</span> ox = (Math.log(Math.hypot(ix, iy)));<a name="line.25428"></a>
<span class="sourceLineNo">25429</span> oy = (Math.atan2(iy, ix));<a name="line.25429"></a>
<span class="sourceLineNo">25430</span> oc128data[it.oIndex] = ox;<a name="line.25430"></a>
<span class="sourceLineNo">25431</span> oc128data[it.oIndex + 1] = oy;<a name="line.25431"></a>
<span class="sourceLineNo">25432</span> }<a name="line.25432"></a>
<span class="sourceLineNo">25433</span> }<a name="line.25433"></a>
<span class="sourceLineNo">25434</span> break;<a name="line.25434"></a>
<span class="sourceLineNo">25435</span> default:<a name="line.25435"></a>
<span class="sourceLineNo">25436</span> throw new IllegalArgumentException("log supports integer, compound integer, real, compound real, complex datasets only");<a name="line.25436"></a>
<span class="sourceLineNo">25437</span> }<a name="line.25437"></a>
<span class="sourceLineNo">25438</span><a name="line.25438"></a>
<span class="sourceLineNo">25439</span> addFunctionName(result, "log");<a name="line.25439"></a>
<span class="sourceLineNo">25440</span> return result;<a name="line.25440"></a>
<span class="sourceLineNo">25441</span> }<a name="line.25441"></a>
<span class="sourceLineNo">25442</span><a name="line.25442"></a>
<span class="sourceLineNo">25443</span> /**<a name="line.25443"></a>
<span class="sourceLineNo">25444</span> * log2 - evaluate the logarithm function on each element of the dataset<a name="line.25444"></a>
<span class="sourceLineNo">25445</span> * @param a<a name="line.25445"></a>
<span class="sourceLineNo">25446</span> * @return dataset<a name="line.25446"></a>
<span class="sourceLineNo">25447</span> */<a name="line.25447"></a>
<span class="sourceLineNo">25448</span> public static Dataset log2(final Object a) {<a name="line.25448"></a>
<span class="sourceLineNo">25449</span> return log2(a, null);<a name="line.25449"></a>
<span class="sourceLineNo">25450</span> }<a name="line.25450"></a>
<span class="sourceLineNo">25451</span><a name="line.25451"></a>
<span class="sourceLineNo">25452</span> /**<a name="line.25452"></a>
<span class="sourceLineNo">25453</span> * log2 - evaluate the logarithm function on each element of the dataset<a name="line.25453"></a>
<span class="sourceLineNo">25454</span> * @param a<a name="line.25454"></a>
<span class="sourceLineNo">25455</span> * @param o output can be null - in which case, a new dataset is created<a name="line.25455"></a>
<span class="sourceLineNo">25456</span> * @return dataset<a name="line.25456"></a>
<span class="sourceLineNo">25457</span> */<a name="line.25457"></a>
<span class="sourceLineNo">25458</span> public static Dataset log2(final Object a, final Dataset o) {<a name="line.25458"></a>
<span class="sourceLineNo">25459</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.25459"></a>
<span class="sourceLineNo">25460</span> SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true);<a name="line.25460"></a>
<span class="sourceLineNo">25461</span> final Dataset result = it.getOutput();<a name="line.25461"></a>
<span class="sourceLineNo">25462</span> if (!result.isComplex()) {<a name="line.25462"></a>
<span class="sourceLineNo">25463</span> if (da.isComplex()) {<a name="line.25463"></a>
<span class="sourceLineNo">25464</span> da = da.getRealView();<a name="line.25464"></a>
<span class="sourceLineNo">25465</span> it = new SingleInputBroadcastIterator(da, result, true);<a name="line.25465"></a>
<span class="sourceLineNo">25466</span> }<a name="line.25466"></a>
<span class="sourceLineNo">25467</span> }<a name="line.25467"></a>
<span class="sourceLineNo">25468</span> final int is = result.getElementsPerItem();<a name="line.25468"></a>
<span class="sourceLineNo">25469</span> final int as = da.getElementsPerItem();<a name="line.25469"></a>
<span class="sourceLineNo">25470</span> final int dt = result.getDType();<a name="line.25470"></a>
<span class="sourceLineNo">25471</span><a name="line.25471"></a>
<span class="sourceLineNo">25472</span> switch(dt) {<a name="line.25472"></a>
<span class="sourceLineNo">25473</span> case Dataset.INT8:<a name="line.25473"></a>
<span class="sourceLineNo">25474</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.25474"></a>
<span class="sourceLineNo">25475</span> if (it.isOutputDouble()) {<a name="line.25475"></a>
<span class="sourceLineNo">25476</span> while (it.hasNext()) {<a name="line.25476"></a>
<span class="sourceLineNo">25477</span> final double ix = it.aDouble;<a name="line.25477"></a>
<span class="sourceLineNo">25478</span> byte ox;<a name="line.25478"></a>
<span class="sourceLineNo">25479</span> ox = (byte) toLong(Math.log(ix)/Math.log(2.));<a name="line.25479"></a>
<span class="sourceLineNo">25480</span> oi8data[it.oIndex] = ox;<a name="line.25480"></a>
<span class="sourceLineNo">25481</span> }<a name="line.25481"></a>
<span class="sourceLineNo">25482</span> } else {<a name="line.25482"></a>
<span class="sourceLineNo">25483</span> while (it.hasNext()) {<a name="line.25483"></a>
<span class="sourceLineNo">25484</span> final long ix = it.aLong;<a name="line.25484"></a>
<span class="sourceLineNo">25485</span> byte ox;<a name="line.25485"></a>
<span class="sourceLineNo">25486</span> ox = (byte) toLong(Math.log(ix)/Math.log(2.));<a name="line.25486"></a>
<span class="sourceLineNo">25487</span> oi8data[it.oIndex] = ox;<a name="line.25487"></a>
<span class="sourceLineNo">25488</span> }<a name="line.25488"></a>
<span class="sourceLineNo">25489</span> }<a name="line.25489"></a>
<span class="sourceLineNo">25490</span> break;<a name="line.25490"></a>
<span class="sourceLineNo">25491</span> case Dataset.INT16:<a name="line.25491"></a>
<span class="sourceLineNo">25492</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.25492"></a>
<span class="sourceLineNo">25493</span> if (it.isOutputDouble()) {<a name="line.25493"></a>
<span class="sourceLineNo">25494</span> while (it.hasNext()) {<a name="line.25494"></a>
<span class="sourceLineNo">25495</span> final double ix = it.aDouble;<a name="line.25495"></a>
<span class="sourceLineNo">25496</span> short ox;<a name="line.25496"></a>
<span class="sourceLineNo">25497</span> ox = (short) toLong(Math.log(ix)/Math.log(2.));<a name="line.25497"></a>
<span class="sourceLineNo">25498</span> oi16data[it.oIndex] = ox;<a name="line.25498"></a>
<span class="sourceLineNo">25499</span> }<a name="line.25499"></a>
<span class="sourceLineNo">25500</span> } else {<a name="line.25500"></a>
<span class="sourceLineNo">25501</span> while (it.hasNext()) {<a name="line.25501"></a>
<span class="sourceLineNo">25502</span> final long ix = it.aLong;<a name="line.25502"></a>
<span class="sourceLineNo">25503</span> short ox;<a name="line.25503"></a>
<span class="sourceLineNo">25504</span> ox = (short) toLong(Math.log(ix)/Math.log(2.));<a name="line.25504"></a>
<span class="sourceLineNo">25505</span> oi16data[it.oIndex] = ox;<a name="line.25505"></a>
<span class="sourceLineNo">25506</span> }<a name="line.25506"></a>
<span class="sourceLineNo">25507</span> }<a name="line.25507"></a>
<span class="sourceLineNo">25508</span> break;<a name="line.25508"></a>
<span class="sourceLineNo">25509</span> case Dataset.INT64:<a name="line.25509"></a>
<span class="sourceLineNo">25510</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.25510"></a>
<span class="sourceLineNo">25511</span> if (it.isOutputDouble()) {<a name="line.25511"></a>
<span class="sourceLineNo">25512</span> while (it.hasNext()) {<a name="line.25512"></a>
<span class="sourceLineNo">25513</span> final double ix = it.aDouble;<a name="line.25513"></a>
<span class="sourceLineNo">25514</span> long ox;<a name="line.25514"></a>
<span class="sourceLineNo">25515</span> ox = toLong(Math.log(ix)/Math.log(2.));<a name="line.25515"></a>
<span class="sourceLineNo">25516</span> oi64data[it.oIndex] = ox;<a name="line.25516"></a>
<span class="sourceLineNo">25517</span> }<a name="line.25517"></a>
<span class="sourceLineNo">25518</span> } else {<a name="line.25518"></a>
<span class="sourceLineNo">25519</span> while (it.hasNext()) {<a name="line.25519"></a>
<span class="sourceLineNo">25520</span> final long ix = it.aLong;<a name="line.25520"></a>
<span class="sourceLineNo">25521</span> long ox;<a name="line.25521"></a>
<span class="sourceLineNo">25522</span> ox = toLong(Math.log(ix)/Math.log(2.));<a name="line.25522"></a>
<span class="sourceLineNo">25523</span> oi64data[it.oIndex] = ox;<a name="line.25523"></a>
<span class="sourceLineNo">25524</span> }<a name="line.25524"></a>
<span class="sourceLineNo">25525</span> }<a name="line.25525"></a>
<span class="sourceLineNo">25526</span> break;<a name="line.25526"></a>
<span class="sourceLineNo">25527</span> case Dataset.INT32:<a name="line.25527"></a>
<span class="sourceLineNo">25528</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.25528"></a>
<span class="sourceLineNo">25529</span> if (it.isOutputDouble()) {<a name="line.25529"></a>
<span class="sourceLineNo">25530</span> while (it.hasNext()) {<a name="line.25530"></a>
<span class="sourceLineNo">25531</span> final double ix = it.aDouble;<a name="line.25531"></a>
<span class="sourceLineNo">25532</span> int ox;<a name="line.25532"></a>
<span class="sourceLineNo">25533</span> ox = (int) toLong(Math.log(ix)/Math.log(2.));<a name="line.25533"></a>
<span class="sourceLineNo">25534</span> oi32data[it.oIndex] = ox;<a name="line.25534"></a>
<span class="sourceLineNo">25535</span> }<a name="line.25535"></a>
<span class="sourceLineNo">25536</span> } else {<a name="line.25536"></a>
<span class="sourceLineNo">25537</span> while (it.hasNext()) {<a name="line.25537"></a>
<span class="sourceLineNo">25538</span> final long ix = it.aLong;<a name="line.25538"></a>
<span class="sourceLineNo">25539</span> int ox;<a name="line.25539"></a>
<span class="sourceLineNo">25540</span> ox = (int) toLong(Math.log(ix)/Math.log(2.));<a name="line.25540"></a>
<span class="sourceLineNo">25541</span> oi32data[it.oIndex] = ox;<a name="line.25541"></a>
<span class="sourceLineNo">25542</span> }<a name="line.25542"></a>
<span class="sourceLineNo">25543</span> }<a name="line.25543"></a>
<span class="sourceLineNo">25544</span> break;<a name="line.25544"></a>
<span class="sourceLineNo">25545</span> case Dataset.ARRAYINT8:<a name="line.25545"></a>
<span class="sourceLineNo">25546</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.25546"></a>
<span class="sourceLineNo">25547</span> if (is == 1) {<a name="line.25547"></a>
<span class="sourceLineNo">25548</span> if (it.isOutputDouble()) {<a name="line.25548"></a>
<span class="sourceLineNo">25549</span> while (it.hasNext()) {<a name="line.25549"></a>
<span class="sourceLineNo">25550</span> final double ix = it.aDouble;<a name="line.25550"></a>
<span class="sourceLineNo">25551</span> byte ox;<a name="line.25551"></a>
<span class="sourceLineNo">25552</span> ox = (byte) toLong(Math.log(ix)/Math.log(2.));<a name="line.25552"></a>
<span class="sourceLineNo">25553</span> oai8data[it.oIndex] = ox;<a name="line.25553"></a>
<span class="sourceLineNo">25554</span> }<a name="line.25554"></a>
<span class="sourceLineNo">25555</span> } else {<a name="line.25555"></a>
<span class="sourceLineNo">25556</span> while (it.hasNext()) {<a name="line.25556"></a>
<span class="sourceLineNo">25557</span> final long ix = it.aLong;<a name="line.25557"></a>
<span class="sourceLineNo">25558</span> byte ox;<a name="line.25558"></a>
<span class="sourceLineNo">25559</span> ox = (byte) toLong(Math.log(ix)/Math.log(2.));<a name="line.25559"></a>
<span class="sourceLineNo">25560</span> oai8data[it.oIndex] = ox;<a name="line.25560"></a>
<span class="sourceLineNo">25561</span> }<a name="line.25561"></a>
<span class="sourceLineNo">25562</span> }<a name="line.25562"></a>
<span class="sourceLineNo">25563</span> } else if (as == 1) {<a name="line.25563"></a>
<span class="sourceLineNo">25564</span> if (it.isOutputDouble()) {<a name="line.25564"></a>
<span class="sourceLineNo">25565</span> while (it.hasNext()) {<a name="line.25565"></a>
<span class="sourceLineNo">25566</span> final double ix = it.aDouble;<a name="line.25566"></a>
<span class="sourceLineNo">25567</span> byte ox;<a name="line.25567"></a>
<span class="sourceLineNo">25568</span> ox = (byte) toLong(Math.log(ix)/Math.log(2.));<a name="line.25568"></a>
<span class="sourceLineNo">25569</span> for (int j = 0; j &lt; is; j++) {<a name="line.25569"></a>
<span class="sourceLineNo">25570</span> oai8data[it.oIndex + j] = ox;<a name="line.25570"></a>
<span class="sourceLineNo">25571</span> }<a name="line.25571"></a>
<span class="sourceLineNo">25572</span> }<a name="line.25572"></a>
<span class="sourceLineNo">25573</span> } else {<a name="line.25573"></a>
<span class="sourceLineNo">25574</span> while (it.hasNext()) {<a name="line.25574"></a>
<span class="sourceLineNo">25575</span> final long ix = it.aLong;<a name="line.25575"></a>
<span class="sourceLineNo">25576</span> byte ox;<a name="line.25576"></a>
<span class="sourceLineNo">25577</span> ox = (byte) toLong(Math.log(ix)/Math.log(2.));<a name="line.25577"></a>
<span class="sourceLineNo">25578</span> for (int j = 0; j &lt; is; j++) {<a name="line.25578"></a>
<span class="sourceLineNo">25579</span> oai8data[it.oIndex + j] = ox;<a name="line.25579"></a>
<span class="sourceLineNo">25580</span> }<a name="line.25580"></a>
<span class="sourceLineNo">25581</span> }<a name="line.25581"></a>
<span class="sourceLineNo">25582</span> }<a name="line.25582"></a>
<span class="sourceLineNo">25583</span> } else {<a name="line.25583"></a>
<span class="sourceLineNo">25584</span> if (it.isOutputDouble()) {<a name="line.25584"></a>
<span class="sourceLineNo">25585</span> while (it.hasNext()) {<a name="line.25585"></a>
<span class="sourceLineNo">25586</span> for (int j = 0; j &lt; is; j++) {<a name="line.25586"></a>
<span class="sourceLineNo">25587</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.25587"></a>
<span class="sourceLineNo">25588</span> byte ox;<a name="line.25588"></a>
<span class="sourceLineNo">25589</span> ox = (byte) toLong(Math.log(ix)/Math.log(2.));<a name="line.25589"></a>
<span class="sourceLineNo">25590</span> oai8data[it.oIndex + j] = ox;<a name="line.25590"></a>
<span class="sourceLineNo">25591</span> }<a name="line.25591"></a>
<span class="sourceLineNo">25592</span> }<a name="line.25592"></a>
<span class="sourceLineNo">25593</span> } else {<a name="line.25593"></a>
<span class="sourceLineNo">25594</span> while (it.hasNext()) {<a name="line.25594"></a>
<span class="sourceLineNo">25595</span> for (int j = 0; j &lt; is; j++) {<a name="line.25595"></a>
<span class="sourceLineNo">25596</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.25596"></a>
<span class="sourceLineNo">25597</span> byte ox;<a name="line.25597"></a>
<span class="sourceLineNo">25598</span> ox = (byte) toLong(Math.log(ix)/Math.log(2.));<a name="line.25598"></a>
<span class="sourceLineNo">25599</span> oai8data[it.oIndex + j] = ox;<a name="line.25599"></a>
<span class="sourceLineNo">25600</span> }<a name="line.25600"></a>
<span class="sourceLineNo">25601</span> }<a name="line.25601"></a>
<span class="sourceLineNo">25602</span> }<a name="line.25602"></a>
<span class="sourceLineNo">25603</span> }<a name="line.25603"></a>
<span class="sourceLineNo">25604</span> break;<a name="line.25604"></a>
<span class="sourceLineNo">25605</span> case Dataset.ARRAYINT16:<a name="line.25605"></a>
<span class="sourceLineNo">25606</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.25606"></a>
<span class="sourceLineNo">25607</span> if (is == 1) {<a name="line.25607"></a>
<span class="sourceLineNo">25608</span> if (it.isOutputDouble()) {<a name="line.25608"></a>
<span class="sourceLineNo">25609</span> while (it.hasNext()) {<a name="line.25609"></a>
<span class="sourceLineNo">25610</span> final double ix = it.aDouble;<a name="line.25610"></a>
<span class="sourceLineNo">25611</span> short ox;<a name="line.25611"></a>
<span class="sourceLineNo">25612</span> ox = (short) toLong(Math.log(ix)/Math.log(2.));<a name="line.25612"></a>
<span class="sourceLineNo">25613</span> oai16data[it.oIndex] = ox;<a name="line.25613"></a>
<span class="sourceLineNo">25614</span> }<a name="line.25614"></a>
<span class="sourceLineNo">25615</span> } else {<a name="line.25615"></a>
<span class="sourceLineNo">25616</span> while (it.hasNext()) {<a name="line.25616"></a>
<span class="sourceLineNo">25617</span> final long ix = it.aLong;<a name="line.25617"></a>
<span class="sourceLineNo">25618</span> short ox;<a name="line.25618"></a>
<span class="sourceLineNo">25619</span> ox = (short) toLong(Math.log(ix)/Math.log(2.));<a name="line.25619"></a>
<span class="sourceLineNo">25620</span> oai16data[it.oIndex] = ox;<a name="line.25620"></a>
<span class="sourceLineNo">25621</span> }<a name="line.25621"></a>
<span class="sourceLineNo">25622</span> }<a name="line.25622"></a>
<span class="sourceLineNo">25623</span> } else if (as == 1) {<a name="line.25623"></a>
<span class="sourceLineNo">25624</span> if (it.isOutputDouble()) {<a name="line.25624"></a>
<span class="sourceLineNo">25625</span> while (it.hasNext()) {<a name="line.25625"></a>
<span class="sourceLineNo">25626</span> final double ix = it.aDouble;<a name="line.25626"></a>
<span class="sourceLineNo">25627</span> short ox;<a name="line.25627"></a>
<span class="sourceLineNo">25628</span> ox = (short) toLong(Math.log(ix)/Math.log(2.));<a name="line.25628"></a>
<span class="sourceLineNo">25629</span> for (int j = 0; j &lt; is; j++) {<a name="line.25629"></a>
<span class="sourceLineNo">25630</span> oai16data[it.oIndex + j] = ox;<a name="line.25630"></a>
<span class="sourceLineNo">25631</span> }<a name="line.25631"></a>
<span class="sourceLineNo">25632</span> }<a name="line.25632"></a>
<span class="sourceLineNo">25633</span> } else {<a name="line.25633"></a>
<span class="sourceLineNo">25634</span> while (it.hasNext()) {<a name="line.25634"></a>
<span class="sourceLineNo">25635</span> final long ix = it.aLong;<a name="line.25635"></a>
<span class="sourceLineNo">25636</span> short ox;<a name="line.25636"></a>
<span class="sourceLineNo">25637</span> ox = (short) toLong(Math.log(ix)/Math.log(2.));<a name="line.25637"></a>
<span class="sourceLineNo">25638</span> for (int j = 0; j &lt; is; j++) {<a name="line.25638"></a>
<span class="sourceLineNo">25639</span> oai16data[it.oIndex + j] = ox;<a name="line.25639"></a>
<span class="sourceLineNo">25640</span> }<a name="line.25640"></a>
<span class="sourceLineNo">25641</span> }<a name="line.25641"></a>
<span class="sourceLineNo">25642</span> }<a name="line.25642"></a>
<span class="sourceLineNo">25643</span> } else {<a name="line.25643"></a>
<span class="sourceLineNo">25644</span> if (it.isOutputDouble()) {<a name="line.25644"></a>
<span class="sourceLineNo">25645</span> while (it.hasNext()) {<a name="line.25645"></a>
<span class="sourceLineNo">25646</span> for (int j = 0; j &lt; is; j++) {<a name="line.25646"></a>
<span class="sourceLineNo">25647</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.25647"></a>
<span class="sourceLineNo">25648</span> short ox;<a name="line.25648"></a>
<span class="sourceLineNo">25649</span> ox = (short) toLong(Math.log(ix)/Math.log(2.));<a name="line.25649"></a>
<span class="sourceLineNo">25650</span> oai16data[it.oIndex + j] = ox;<a name="line.25650"></a>
<span class="sourceLineNo">25651</span> }<a name="line.25651"></a>
<span class="sourceLineNo">25652</span> }<a name="line.25652"></a>
<span class="sourceLineNo">25653</span> } else {<a name="line.25653"></a>
<span class="sourceLineNo">25654</span> while (it.hasNext()) {<a name="line.25654"></a>
<span class="sourceLineNo">25655</span> for (int j = 0; j &lt; is; j++) {<a name="line.25655"></a>
<span class="sourceLineNo">25656</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.25656"></a>
<span class="sourceLineNo">25657</span> short ox;<a name="line.25657"></a>
<span class="sourceLineNo">25658</span> ox = (short) toLong(Math.log(ix)/Math.log(2.));<a name="line.25658"></a>
<span class="sourceLineNo">25659</span> oai16data[it.oIndex + j] = ox;<a name="line.25659"></a>
<span class="sourceLineNo">25660</span> }<a name="line.25660"></a>
<span class="sourceLineNo">25661</span> }<a name="line.25661"></a>
<span class="sourceLineNo">25662</span> }<a name="line.25662"></a>
<span class="sourceLineNo">25663</span> }<a name="line.25663"></a>
<span class="sourceLineNo">25664</span> break;<a name="line.25664"></a>
<span class="sourceLineNo">25665</span> case Dataset.ARRAYINT64:<a name="line.25665"></a>
<span class="sourceLineNo">25666</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.25666"></a>
<span class="sourceLineNo">25667</span> if (is == 1) {<a name="line.25667"></a>
<span class="sourceLineNo">25668</span> if (it.isOutputDouble()) {<a name="line.25668"></a>
<span class="sourceLineNo">25669</span> while (it.hasNext()) {<a name="line.25669"></a>
<span class="sourceLineNo">25670</span> final double ix = it.aDouble;<a name="line.25670"></a>
<span class="sourceLineNo">25671</span> long ox;<a name="line.25671"></a>
<span class="sourceLineNo">25672</span> ox = toLong(Math.log(ix)/Math.log(2.));<a name="line.25672"></a>
<span class="sourceLineNo">25673</span> oai64data[it.oIndex] = ox;<a name="line.25673"></a>
<span class="sourceLineNo">25674</span> }<a name="line.25674"></a>
<span class="sourceLineNo">25675</span> } else {<a name="line.25675"></a>
<span class="sourceLineNo">25676</span> while (it.hasNext()) {<a name="line.25676"></a>
<span class="sourceLineNo">25677</span> final long ix = it.aLong;<a name="line.25677"></a>
<span class="sourceLineNo">25678</span> long ox;<a name="line.25678"></a>
<span class="sourceLineNo">25679</span> ox = toLong(Math.log(ix)/Math.log(2.));<a name="line.25679"></a>
<span class="sourceLineNo">25680</span> oai64data[it.oIndex] = ox;<a name="line.25680"></a>
<span class="sourceLineNo">25681</span> }<a name="line.25681"></a>
<span class="sourceLineNo">25682</span> }<a name="line.25682"></a>
<span class="sourceLineNo">25683</span> } else if (as == 1) {<a name="line.25683"></a>
<span class="sourceLineNo">25684</span> if (it.isOutputDouble()) {<a name="line.25684"></a>
<span class="sourceLineNo">25685</span> while (it.hasNext()) {<a name="line.25685"></a>
<span class="sourceLineNo">25686</span> final double ix = it.aDouble;<a name="line.25686"></a>
<span class="sourceLineNo">25687</span> long ox;<a name="line.25687"></a>
<span class="sourceLineNo">25688</span> ox = toLong(Math.log(ix)/Math.log(2.));<a name="line.25688"></a>
<span class="sourceLineNo">25689</span> for (int j = 0; j &lt; is; j++) {<a name="line.25689"></a>
<span class="sourceLineNo">25690</span> oai64data[it.oIndex + j] = ox;<a name="line.25690"></a>
<span class="sourceLineNo">25691</span> }<a name="line.25691"></a>
<span class="sourceLineNo">25692</span> }<a name="line.25692"></a>
<span class="sourceLineNo">25693</span> } else {<a name="line.25693"></a>
<span class="sourceLineNo">25694</span> while (it.hasNext()) {<a name="line.25694"></a>
<span class="sourceLineNo">25695</span> final long ix = it.aLong;<a name="line.25695"></a>
<span class="sourceLineNo">25696</span> long ox;<a name="line.25696"></a>
<span class="sourceLineNo">25697</span> ox = toLong(Math.log(ix)/Math.log(2.));<a name="line.25697"></a>
<span class="sourceLineNo">25698</span> for (int j = 0; j &lt; is; j++) {<a name="line.25698"></a>
<span class="sourceLineNo">25699</span> oai64data[it.oIndex + j] = ox;<a name="line.25699"></a>
<span class="sourceLineNo">25700</span> }<a name="line.25700"></a>
<span class="sourceLineNo">25701</span> }<a name="line.25701"></a>
<span class="sourceLineNo">25702</span> }<a name="line.25702"></a>
<span class="sourceLineNo">25703</span> } else {<a name="line.25703"></a>
<span class="sourceLineNo">25704</span> if (it.isOutputDouble()) {<a name="line.25704"></a>
<span class="sourceLineNo">25705</span> while (it.hasNext()) {<a name="line.25705"></a>
<span class="sourceLineNo">25706</span> for (int j = 0; j &lt; is; j++) {<a name="line.25706"></a>
<span class="sourceLineNo">25707</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.25707"></a>
<span class="sourceLineNo">25708</span> long ox;<a name="line.25708"></a>
<span class="sourceLineNo">25709</span> ox = toLong(Math.log(ix)/Math.log(2.));<a name="line.25709"></a>
<span class="sourceLineNo">25710</span> oai64data[it.oIndex + j] = ox;<a name="line.25710"></a>
<span class="sourceLineNo">25711</span> }<a name="line.25711"></a>
<span class="sourceLineNo">25712</span> }<a name="line.25712"></a>
<span class="sourceLineNo">25713</span> } else {<a name="line.25713"></a>
<span class="sourceLineNo">25714</span> while (it.hasNext()) {<a name="line.25714"></a>
<span class="sourceLineNo">25715</span> for (int j = 0; j &lt; is; j++) {<a name="line.25715"></a>
<span class="sourceLineNo">25716</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.25716"></a>
<span class="sourceLineNo">25717</span> long ox;<a name="line.25717"></a>
<span class="sourceLineNo">25718</span> ox = toLong(Math.log(ix)/Math.log(2.));<a name="line.25718"></a>
<span class="sourceLineNo">25719</span> oai64data[it.oIndex + j] = ox;<a name="line.25719"></a>
<span class="sourceLineNo">25720</span> }<a name="line.25720"></a>
<span class="sourceLineNo">25721</span> }<a name="line.25721"></a>
<span class="sourceLineNo">25722</span> }<a name="line.25722"></a>
<span class="sourceLineNo">25723</span> }<a name="line.25723"></a>
<span class="sourceLineNo">25724</span> break;<a name="line.25724"></a>
<span class="sourceLineNo">25725</span> case Dataset.ARRAYINT32:<a name="line.25725"></a>
<span class="sourceLineNo">25726</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.25726"></a>
<span class="sourceLineNo">25727</span> if (is == 1) {<a name="line.25727"></a>
<span class="sourceLineNo">25728</span> if (it.isOutputDouble()) {<a name="line.25728"></a>
<span class="sourceLineNo">25729</span> while (it.hasNext()) {<a name="line.25729"></a>
<span class="sourceLineNo">25730</span> final double ix = it.aDouble;<a name="line.25730"></a>
<span class="sourceLineNo">25731</span> int ox;<a name="line.25731"></a>
<span class="sourceLineNo">25732</span> ox = (int) toLong(Math.log(ix)/Math.log(2.));<a name="line.25732"></a>
<span class="sourceLineNo">25733</span> oai32data[it.oIndex] = ox;<a name="line.25733"></a>
<span class="sourceLineNo">25734</span> }<a name="line.25734"></a>
<span class="sourceLineNo">25735</span> } else {<a name="line.25735"></a>
<span class="sourceLineNo">25736</span> while (it.hasNext()) {<a name="line.25736"></a>
<span class="sourceLineNo">25737</span> final long ix = it.aLong;<a name="line.25737"></a>
<span class="sourceLineNo">25738</span> int ox;<a name="line.25738"></a>
<span class="sourceLineNo">25739</span> ox = (int) toLong(Math.log(ix)/Math.log(2.));<a name="line.25739"></a>
<span class="sourceLineNo">25740</span> oai32data[it.oIndex] = ox;<a name="line.25740"></a>
<span class="sourceLineNo">25741</span> }<a name="line.25741"></a>
<span class="sourceLineNo">25742</span> }<a name="line.25742"></a>
<span class="sourceLineNo">25743</span> } else if (as == 1) {<a name="line.25743"></a>
<span class="sourceLineNo">25744</span> if (it.isOutputDouble()) {<a name="line.25744"></a>
<span class="sourceLineNo">25745</span> while (it.hasNext()) {<a name="line.25745"></a>
<span class="sourceLineNo">25746</span> final double ix = it.aDouble;<a name="line.25746"></a>
<span class="sourceLineNo">25747</span> int ox;<a name="line.25747"></a>
<span class="sourceLineNo">25748</span> ox = (int) toLong(Math.log(ix)/Math.log(2.));<a name="line.25748"></a>
<span class="sourceLineNo">25749</span> for (int j = 0; j &lt; is; j++) {<a name="line.25749"></a>
<span class="sourceLineNo">25750</span> oai32data[it.oIndex + j] = ox;<a name="line.25750"></a>
<span class="sourceLineNo">25751</span> }<a name="line.25751"></a>
<span class="sourceLineNo">25752</span> }<a name="line.25752"></a>
<span class="sourceLineNo">25753</span> } else {<a name="line.25753"></a>
<span class="sourceLineNo">25754</span> while (it.hasNext()) {<a name="line.25754"></a>
<span class="sourceLineNo">25755</span> final long ix = it.aLong;<a name="line.25755"></a>
<span class="sourceLineNo">25756</span> int ox;<a name="line.25756"></a>
<span class="sourceLineNo">25757</span> ox = (int) toLong(Math.log(ix)/Math.log(2.));<a name="line.25757"></a>
<span class="sourceLineNo">25758</span> for (int j = 0; j &lt; is; j++) {<a name="line.25758"></a>
<span class="sourceLineNo">25759</span> oai32data[it.oIndex + j] = ox;<a name="line.25759"></a>
<span class="sourceLineNo">25760</span> }<a name="line.25760"></a>
<span class="sourceLineNo">25761</span> }<a name="line.25761"></a>
<span class="sourceLineNo">25762</span> }<a name="line.25762"></a>
<span class="sourceLineNo">25763</span> } else {<a name="line.25763"></a>
<span class="sourceLineNo">25764</span> if (it.isOutputDouble()) {<a name="line.25764"></a>
<span class="sourceLineNo">25765</span> while (it.hasNext()) {<a name="line.25765"></a>
<span class="sourceLineNo">25766</span> for (int j = 0; j &lt; is; j++) {<a name="line.25766"></a>
<span class="sourceLineNo">25767</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.25767"></a>
<span class="sourceLineNo">25768</span> int ox;<a name="line.25768"></a>
<span class="sourceLineNo">25769</span> ox = (int) toLong(Math.log(ix)/Math.log(2.));<a name="line.25769"></a>
<span class="sourceLineNo">25770</span> oai32data[it.oIndex + j] = ox;<a name="line.25770"></a>
<span class="sourceLineNo">25771</span> }<a name="line.25771"></a>
<span class="sourceLineNo">25772</span> }<a name="line.25772"></a>
<span class="sourceLineNo">25773</span> } else {<a name="line.25773"></a>
<span class="sourceLineNo">25774</span> while (it.hasNext()) {<a name="line.25774"></a>
<span class="sourceLineNo">25775</span> for (int j = 0; j &lt; is; j++) {<a name="line.25775"></a>
<span class="sourceLineNo">25776</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.25776"></a>
<span class="sourceLineNo">25777</span> int ox;<a name="line.25777"></a>
<span class="sourceLineNo">25778</span> ox = (int) toLong(Math.log(ix)/Math.log(2.));<a name="line.25778"></a>
<span class="sourceLineNo">25779</span> oai32data[it.oIndex + j] = ox;<a name="line.25779"></a>
<span class="sourceLineNo">25780</span> }<a name="line.25780"></a>
<span class="sourceLineNo">25781</span> }<a name="line.25781"></a>
<span class="sourceLineNo">25782</span> }<a name="line.25782"></a>
<span class="sourceLineNo">25783</span> }<a name="line.25783"></a>
<span class="sourceLineNo">25784</span> break;<a name="line.25784"></a>
<span class="sourceLineNo">25785</span> case Dataset.FLOAT32:<a name="line.25785"></a>
<span class="sourceLineNo">25786</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.25786"></a>
<span class="sourceLineNo">25787</span> if (it.isOutputDouble()) {<a name="line.25787"></a>
<span class="sourceLineNo">25788</span> while (it.hasNext()) {<a name="line.25788"></a>
<span class="sourceLineNo">25789</span> final double ix = it.aDouble;<a name="line.25789"></a>
<span class="sourceLineNo">25790</span> float ox;<a name="line.25790"></a>
<span class="sourceLineNo">25791</span> ox = (float) (Math.log(ix)/Math.log(2.));<a name="line.25791"></a>
<span class="sourceLineNo">25792</span> of32data[it.oIndex] = ox;<a name="line.25792"></a>
<span class="sourceLineNo">25793</span> }<a name="line.25793"></a>
<span class="sourceLineNo">25794</span> } else {<a name="line.25794"></a>
<span class="sourceLineNo">25795</span> while (it.hasNext()) {<a name="line.25795"></a>
<span class="sourceLineNo">25796</span> final long ix = it.aLong;<a name="line.25796"></a>
<span class="sourceLineNo">25797</span> float ox;<a name="line.25797"></a>
<span class="sourceLineNo">25798</span> ox = (float) (Math.log(ix)/Math.log(2.));<a name="line.25798"></a>
<span class="sourceLineNo">25799</span> of32data[it.oIndex] = ox;<a name="line.25799"></a>
<span class="sourceLineNo">25800</span> }<a name="line.25800"></a>
<span class="sourceLineNo">25801</span> }<a name="line.25801"></a>
<span class="sourceLineNo">25802</span> break;<a name="line.25802"></a>
<span class="sourceLineNo">25803</span> case Dataset.FLOAT64:<a name="line.25803"></a>
<span class="sourceLineNo">25804</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.25804"></a>
<span class="sourceLineNo">25805</span> if (it.isOutputDouble()) {<a name="line.25805"></a>
<span class="sourceLineNo">25806</span> while (it.hasNext()) {<a name="line.25806"></a>
<span class="sourceLineNo">25807</span> final double ix = it.aDouble;<a name="line.25807"></a>
<span class="sourceLineNo">25808</span> double ox;<a name="line.25808"></a>
<span class="sourceLineNo">25809</span> ox = (Math.log(ix)/Math.log(2.));<a name="line.25809"></a>
<span class="sourceLineNo">25810</span> of64data[it.oIndex] = ox;<a name="line.25810"></a>
<span class="sourceLineNo">25811</span> }<a name="line.25811"></a>
<span class="sourceLineNo">25812</span> } else {<a name="line.25812"></a>
<span class="sourceLineNo">25813</span> while (it.hasNext()) {<a name="line.25813"></a>
<span class="sourceLineNo">25814</span> final long ix = it.aLong;<a name="line.25814"></a>
<span class="sourceLineNo">25815</span> double ox;<a name="line.25815"></a>
<span class="sourceLineNo">25816</span> ox = (Math.log(ix)/Math.log(2.));<a name="line.25816"></a>
<span class="sourceLineNo">25817</span> of64data[it.oIndex] = ox;<a name="line.25817"></a>
<span class="sourceLineNo">25818</span> }<a name="line.25818"></a>
<span class="sourceLineNo">25819</span> }<a name="line.25819"></a>
<span class="sourceLineNo">25820</span> break;<a name="line.25820"></a>
<span class="sourceLineNo">25821</span> case Dataset.ARRAYFLOAT32:<a name="line.25821"></a>
<span class="sourceLineNo">25822</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.25822"></a>
<span class="sourceLineNo">25823</span> if (is == 1) {<a name="line.25823"></a>
<span class="sourceLineNo">25824</span> if (it.isOutputDouble()) {<a name="line.25824"></a>
<span class="sourceLineNo">25825</span> while (it.hasNext()) {<a name="line.25825"></a>
<span class="sourceLineNo">25826</span> final double ix = it.aDouble;<a name="line.25826"></a>
<span class="sourceLineNo">25827</span> float ox;<a name="line.25827"></a>
<span class="sourceLineNo">25828</span> ox = (float) (Math.log(ix)/Math.log(2.));<a name="line.25828"></a>
<span class="sourceLineNo">25829</span> oaf32data[it.oIndex] = ox;<a name="line.25829"></a>
<span class="sourceLineNo">25830</span> }<a name="line.25830"></a>
<span class="sourceLineNo">25831</span> } else {<a name="line.25831"></a>
<span class="sourceLineNo">25832</span> while (it.hasNext()) {<a name="line.25832"></a>
<span class="sourceLineNo">25833</span> final long ix = it.aLong;<a name="line.25833"></a>
<span class="sourceLineNo">25834</span> float ox;<a name="line.25834"></a>
<span class="sourceLineNo">25835</span> ox = (float) (Math.log(ix)/Math.log(2.));<a name="line.25835"></a>
<span class="sourceLineNo">25836</span> oaf32data[it.oIndex] = ox;<a name="line.25836"></a>
<span class="sourceLineNo">25837</span> }<a name="line.25837"></a>
<span class="sourceLineNo">25838</span> }<a name="line.25838"></a>
<span class="sourceLineNo">25839</span> } else if (as == 1) {<a name="line.25839"></a>
<span class="sourceLineNo">25840</span> if (it.isOutputDouble()) {<a name="line.25840"></a>
<span class="sourceLineNo">25841</span> while (it.hasNext()) {<a name="line.25841"></a>
<span class="sourceLineNo">25842</span> final double ix = it.aDouble;<a name="line.25842"></a>
<span class="sourceLineNo">25843</span> float ox;<a name="line.25843"></a>
<span class="sourceLineNo">25844</span> ox = (float) (Math.log(ix)/Math.log(2.));<a name="line.25844"></a>
<span class="sourceLineNo">25845</span> for (int j = 0; j &lt; is; j++) {<a name="line.25845"></a>
<span class="sourceLineNo">25846</span> oaf32data[it.oIndex + j] = ox;<a name="line.25846"></a>
<span class="sourceLineNo">25847</span> }<a name="line.25847"></a>
<span class="sourceLineNo">25848</span> }<a name="line.25848"></a>
<span class="sourceLineNo">25849</span> } else {<a name="line.25849"></a>
<span class="sourceLineNo">25850</span> while (it.hasNext()) {<a name="line.25850"></a>
<span class="sourceLineNo">25851</span> final long ix = it.aLong;<a name="line.25851"></a>
<span class="sourceLineNo">25852</span> float ox;<a name="line.25852"></a>
<span class="sourceLineNo">25853</span> ox = (float) (Math.log(ix)/Math.log(2.));<a name="line.25853"></a>
<span class="sourceLineNo">25854</span> for (int j = 0; j &lt; is; j++) {<a name="line.25854"></a>
<span class="sourceLineNo">25855</span> oaf32data[it.oIndex + j] = ox;<a name="line.25855"></a>
<span class="sourceLineNo">25856</span> }<a name="line.25856"></a>
<span class="sourceLineNo">25857</span> }<a name="line.25857"></a>
<span class="sourceLineNo">25858</span> }<a name="line.25858"></a>
<span class="sourceLineNo">25859</span> } else {<a name="line.25859"></a>
<span class="sourceLineNo">25860</span> if (it.isOutputDouble()) {<a name="line.25860"></a>
<span class="sourceLineNo">25861</span> while (it.hasNext()) {<a name="line.25861"></a>
<span class="sourceLineNo">25862</span> for (int j = 0; j &lt; is; j++) {<a name="line.25862"></a>
<span class="sourceLineNo">25863</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.25863"></a>
<span class="sourceLineNo">25864</span> float ox;<a name="line.25864"></a>
<span class="sourceLineNo">25865</span> ox = (float) (Math.log(ix)/Math.log(2.));<a name="line.25865"></a>
<span class="sourceLineNo">25866</span> oaf32data[it.oIndex + j] = ox;<a name="line.25866"></a>
<span class="sourceLineNo">25867</span> }<a name="line.25867"></a>
<span class="sourceLineNo">25868</span> }<a name="line.25868"></a>
<span class="sourceLineNo">25869</span> } else {<a name="line.25869"></a>
<span class="sourceLineNo">25870</span> while (it.hasNext()) {<a name="line.25870"></a>
<span class="sourceLineNo">25871</span> for (int j = 0; j &lt; is; j++) {<a name="line.25871"></a>
<span class="sourceLineNo">25872</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.25872"></a>
<span class="sourceLineNo">25873</span> float ox;<a name="line.25873"></a>
<span class="sourceLineNo">25874</span> ox = (float) (Math.log(ix)/Math.log(2.));<a name="line.25874"></a>
<span class="sourceLineNo">25875</span> oaf32data[it.oIndex + j] = ox;<a name="line.25875"></a>
<span class="sourceLineNo">25876</span> }<a name="line.25876"></a>
<span class="sourceLineNo">25877</span> }<a name="line.25877"></a>
<span class="sourceLineNo">25878</span> }<a name="line.25878"></a>
<span class="sourceLineNo">25879</span> }<a name="line.25879"></a>
<span class="sourceLineNo">25880</span> break;<a name="line.25880"></a>
<span class="sourceLineNo">25881</span> case Dataset.ARRAYFLOAT64:<a name="line.25881"></a>
<span class="sourceLineNo">25882</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.25882"></a>
<span class="sourceLineNo">25883</span> if (is == 1) {<a name="line.25883"></a>
<span class="sourceLineNo">25884</span> if (it.isOutputDouble()) {<a name="line.25884"></a>
<span class="sourceLineNo">25885</span> while (it.hasNext()) {<a name="line.25885"></a>
<span class="sourceLineNo">25886</span> final double ix = it.aDouble;<a name="line.25886"></a>
<span class="sourceLineNo">25887</span> double ox;<a name="line.25887"></a>
<span class="sourceLineNo">25888</span> ox = (Math.log(ix)/Math.log(2.));<a name="line.25888"></a>
<span class="sourceLineNo">25889</span> oaf64data[it.oIndex] = ox;<a name="line.25889"></a>
<span class="sourceLineNo">25890</span> }<a name="line.25890"></a>
<span class="sourceLineNo">25891</span> } else {<a name="line.25891"></a>
<span class="sourceLineNo">25892</span> while (it.hasNext()) {<a name="line.25892"></a>
<span class="sourceLineNo">25893</span> final long ix = it.aLong;<a name="line.25893"></a>
<span class="sourceLineNo">25894</span> double ox;<a name="line.25894"></a>
<span class="sourceLineNo">25895</span> ox = (Math.log(ix)/Math.log(2.));<a name="line.25895"></a>
<span class="sourceLineNo">25896</span> oaf64data[it.oIndex] = ox;<a name="line.25896"></a>
<span class="sourceLineNo">25897</span> }<a name="line.25897"></a>
<span class="sourceLineNo">25898</span> }<a name="line.25898"></a>
<span class="sourceLineNo">25899</span> } else if (as == 1) {<a name="line.25899"></a>
<span class="sourceLineNo">25900</span> if (it.isOutputDouble()) {<a name="line.25900"></a>
<span class="sourceLineNo">25901</span> while (it.hasNext()) {<a name="line.25901"></a>
<span class="sourceLineNo">25902</span> final double ix = it.aDouble;<a name="line.25902"></a>
<span class="sourceLineNo">25903</span> double ox;<a name="line.25903"></a>
<span class="sourceLineNo">25904</span> ox = (Math.log(ix)/Math.log(2.));<a name="line.25904"></a>
<span class="sourceLineNo">25905</span> for (int j = 0; j &lt; is; j++) {<a name="line.25905"></a>
<span class="sourceLineNo">25906</span> oaf64data[it.oIndex + j] = ox;<a name="line.25906"></a>
<span class="sourceLineNo">25907</span> }<a name="line.25907"></a>
<span class="sourceLineNo">25908</span> }<a name="line.25908"></a>
<span class="sourceLineNo">25909</span> } else {<a name="line.25909"></a>
<span class="sourceLineNo">25910</span> while (it.hasNext()) {<a name="line.25910"></a>
<span class="sourceLineNo">25911</span> final long ix = it.aLong;<a name="line.25911"></a>
<span class="sourceLineNo">25912</span> double ox;<a name="line.25912"></a>
<span class="sourceLineNo">25913</span> ox = (Math.log(ix)/Math.log(2.));<a name="line.25913"></a>
<span class="sourceLineNo">25914</span> for (int j = 0; j &lt; is; j++) {<a name="line.25914"></a>
<span class="sourceLineNo">25915</span> oaf64data[it.oIndex + j] = ox;<a name="line.25915"></a>
<span class="sourceLineNo">25916</span> }<a name="line.25916"></a>
<span class="sourceLineNo">25917</span> }<a name="line.25917"></a>
<span class="sourceLineNo">25918</span> }<a name="line.25918"></a>
<span class="sourceLineNo">25919</span> } else {<a name="line.25919"></a>
<span class="sourceLineNo">25920</span> if (it.isOutputDouble()) {<a name="line.25920"></a>
<span class="sourceLineNo">25921</span> while (it.hasNext()) {<a name="line.25921"></a>
<span class="sourceLineNo">25922</span> for (int j = 0; j &lt; is; j++) {<a name="line.25922"></a>
<span class="sourceLineNo">25923</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.25923"></a>
<span class="sourceLineNo">25924</span> double ox;<a name="line.25924"></a>
<span class="sourceLineNo">25925</span> ox = (Math.log(ix)/Math.log(2.));<a name="line.25925"></a>
<span class="sourceLineNo">25926</span> oaf64data[it.oIndex + j] = ox;<a name="line.25926"></a>
<span class="sourceLineNo">25927</span> }<a name="line.25927"></a>
<span class="sourceLineNo">25928</span> }<a name="line.25928"></a>
<span class="sourceLineNo">25929</span> } else {<a name="line.25929"></a>
<span class="sourceLineNo">25930</span> while (it.hasNext()) {<a name="line.25930"></a>
<span class="sourceLineNo">25931</span> for (int j = 0; j &lt; is; j++) {<a name="line.25931"></a>
<span class="sourceLineNo">25932</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.25932"></a>
<span class="sourceLineNo">25933</span> double ox;<a name="line.25933"></a>
<span class="sourceLineNo">25934</span> ox = (Math.log(ix)/Math.log(2.));<a name="line.25934"></a>
<span class="sourceLineNo">25935</span> oaf64data[it.oIndex + j] = ox;<a name="line.25935"></a>
<span class="sourceLineNo">25936</span> }<a name="line.25936"></a>
<span class="sourceLineNo">25937</span> }<a name="line.25937"></a>
<span class="sourceLineNo">25938</span> }<a name="line.25938"></a>
<span class="sourceLineNo">25939</span> }<a name="line.25939"></a>
<span class="sourceLineNo">25940</span> break;<a name="line.25940"></a>
<span class="sourceLineNo">25941</span> case Dataset.COMPLEX64:<a name="line.25941"></a>
<span class="sourceLineNo">25942</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.25942"></a>
<span class="sourceLineNo">25943</span> if (!da.isComplex()) {<a name="line.25943"></a>
<span class="sourceLineNo">25944</span> if (it.isOutputDouble()) {<a name="line.25944"></a>
<span class="sourceLineNo">25945</span> final double iy = 0;<a name="line.25945"></a>
<span class="sourceLineNo">25946</span> while (it.hasNext()) {<a name="line.25946"></a>
<span class="sourceLineNo">25947</span> final double ix = it.aDouble;<a name="line.25947"></a>
<span class="sourceLineNo">25948</span> float ox;<a name="line.25948"></a>
<span class="sourceLineNo">25949</span> float oy;<a name="line.25949"></a>
<span class="sourceLineNo">25950</span> ox = (float) (Math.log(Math.hypot(ix, iy))/Math.log(2.));<a name="line.25950"></a>
<span class="sourceLineNo">25951</span> oy = (float) (Math.atan2(iy, ix));<a name="line.25951"></a>
<span class="sourceLineNo">25952</span> oc64data[it.oIndex] = ox;<a name="line.25952"></a>
<span class="sourceLineNo">25953</span> oc64data[it.oIndex + 1] = oy;<a name="line.25953"></a>
<span class="sourceLineNo">25954</span> }<a name="line.25954"></a>
<span class="sourceLineNo">25955</span> } else {<a name="line.25955"></a>
<span class="sourceLineNo">25956</span> final long iy = 0;<a name="line.25956"></a>
<span class="sourceLineNo">25957</span> while (it.hasNext()) {<a name="line.25957"></a>
<span class="sourceLineNo">25958</span> final long ix = it.aLong;<a name="line.25958"></a>
<span class="sourceLineNo">25959</span> float ox;<a name="line.25959"></a>
<span class="sourceLineNo">25960</span> float oy;<a name="line.25960"></a>
<span class="sourceLineNo">25961</span> ox = (float) toLong(Math.log(Math.hypot(ix, iy))/Math.log(2.));<a name="line.25961"></a>
<span class="sourceLineNo">25962</span> oy = (float) toLong(Math.atan2(iy, ix));<a name="line.25962"></a>
<span class="sourceLineNo">25963</span> oc64data[it.oIndex] = ox;<a name="line.25963"></a>
<span class="sourceLineNo">25964</span> oc64data[it.oIndex + 1] = oy;<a name="line.25964"></a>
<span class="sourceLineNo">25965</span> }<a name="line.25965"></a>
<span class="sourceLineNo">25966</span> }<a name="line.25966"></a>
<span class="sourceLineNo">25967</span> } else {<a name="line.25967"></a>
<span class="sourceLineNo">25968</span> while (it.hasNext()) {<a name="line.25968"></a>
<span class="sourceLineNo">25969</span> final double ix = it.aDouble;<a name="line.25969"></a>
<span class="sourceLineNo">25970</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.25970"></a>
<span class="sourceLineNo">25971</span> float ox;<a name="line.25971"></a>
<span class="sourceLineNo">25972</span> float oy;<a name="line.25972"></a>
<span class="sourceLineNo">25973</span> ox = (float) (Math.log(Math.hypot(ix, iy))/Math.log(2.));<a name="line.25973"></a>
<span class="sourceLineNo">25974</span> oy = (float) (Math.atan2(iy, ix));<a name="line.25974"></a>
<span class="sourceLineNo">25975</span> oc64data[it.oIndex] = ox;<a name="line.25975"></a>
<span class="sourceLineNo">25976</span> oc64data[it.oIndex + 1] = oy;<a name="line.25976"></a>
<span class="sourceLineNo">25977</span> }<a name="line.25977"></a>
<span class="sourceLineNo">25978</span> }<a name="line.25978"></a>
<span class="sourceLineNo">25979</span> break;<a name="line.25979"></a>
<span class="sourceLineNo">25980</span> case Dataset.COMPLEX128:<a name="line.25980"></a>
<span class="sourceLineNo">25981</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.25981"></a>
<span class="sourceLineNo">25982</span> if (!da.isComplex()) {<a name="line.25982"></a>
<span class="sourceLineNo">25983</span> if (it.isOutputDouble()) {<a name="line.25983"></a>
<span class="sourceLineNo">25984</span> final double iy = 0;<a name="line.25984"></a>
<span class="sourceLineNo">25985</span> while (it.hasNext()) {<a name="line.25985"></a>
<span class="sourceLineNo">25986</span> final double ix = it.aDouble;<a name="line.25986"></a>
<span class="sourceLineNo">25987</span> double ox;<a name="line.25987"></a>
<span class="sourceLineNo">25988</span> double oy;<a name="line.25988"></a>
<span class="sourceLineNo">25989</span> ox = (Math.log(Math.hypot(ix, iy))/Math.log(2.));<a name="line.25989"></a>
<span class="sourceLineNo">25990</span> oy = (Math.atan2(iy, ix));<a name="line.25990"></a>
<span class="sourceLineNo">25991</span> oc128data[it.oIndex] = ox;<a name="line.25991"></a>
<span class="sourceLineNo">25992</span> oc128data[it.oIndex + 1] = oy;<a name="line.25992"></a>
<span class="sourceLineNo">25993</span> }<a name="line.25993"></a>
<span class="sourceLineNo">25994</span> } else {<a name="line.25994"></a>
<span class="sourceLineNo">25995</span> final long iy = 0;<a name="line.25995"></a>
<span class="sourceLineNo">25996</span> while (it.hasNext()) {<a name="line.25996"></a>
<span class="sourceLineNo">25997</span> final long ix = it.aLong;<a name="line.25997"></a>
<span class="sourceLineNo">25998</span> double ox;<a name="line.25998"></a>
<span class="sourceLineNo">25999</span> double oy;<a name="line.25999"></a>
<span class="sourceLineNo">26000</span> ox = (double) (Math.log(Math.hypot(ix, iy))/Math.log(2.));<a name="line.26000"></a>
<span class="sourceLineNo">26001</span> oy = (double) (Math.atan2(iy, ix));<a name="line.26001"></a>
<span class="sourceLineNo">26002</span> oc128data[it.oIndex] = ox;<a name="line.26002"></a>
<span class="sourceLineNo">26003</span> oc128data[it.oIndex + 1] = oy;<a name="line.26003"></a>
<span class="sourceLineNo">26004</span> }<a name="line.26004"></a>
<span class="sourceLineNo">26005</span> }<a name="line.26005"></a>
<span class="sourceLineNo">26006</span> } else {<a name="line.26006"></a>
<span class="sourceLineNo">26007</span> while (it.hasNext()) {<a name="line.26007"></a>
<span class="sourceLineNo">26008</span> final double ix = it.aDouble;<a name="line.26008"></a>
<span class="sourceLineNo">26009</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.26009"></a>
<span class="sourceLineNo">26010</span> double ox;<a name="line.26010"></a>
<span class="sourceLineNo">26011</span> double oy;<a name="line.26011"></a>
<span class="sourceLineNo">26012</span> ox = (Math.log(Math.hypot(ix, iy))/Math.log(2.));<a name="line.26012"></a>
<span class="sourceLineNo">26013</span> oy = (Math.atan2(iy, ix));<a name="line.26013"></a>
<span class="sourceLineNo">26014</span> oc128data[it.oIndex] = ox;<a name="line.26014"></a>
<span class="sourceLineNo">26015</span> oc128data[it.oIndex + 1] = oy;<a name="line.26015"></a>
<span class="sourceLineNo">26016</span> }<a name="line.26016"></a>
<span class="sourceLineNo">26017</span> }<a name="line.26017"></a>
<span class="sourceLineNo">26018</span> break;<a name="line.26018"></a>
<span class="sourceLineNo">26019</span> default:<a name="line.26019"></a>
<span class="sourceLineNo">26020</span> throw new IllegalArgumentException("log2 supports integer, compound integer, real, compound real, complex datasets only");<a name="line.26020"></a>
<span class="sourceLineNo">26021</span> }<a name="line.26021"></a>
<span class="sourceLineNo">26022</span><a name="line.26022"></a>
<span class="sourceLineNo">26023</span> addFunctionName(result, "log2");<a name="line.26023"></a>
<span class="sourceLineNo">26024</span> return result;<a name="line.26024"></a>
<span class="sourceLineNo">26025</span> }<a name="line.26025"></a>
<span class="sourceLineNo">26026</span><a name="line.26026"></a>
<span class="sourceLineNo">26027</span> /**<a name="line.26027"></a>
<span class="sourceLineNo">26028</span> * log10 - evaluate the logarithm function on each element of the dataset<a name="line.26028"></a>
<span class="sourceLineNo">26029</span> * @param a<a name="line.26029"></a>
<span class="sourceLineNo">26030</span> * @return dataset<a name="line.26030"></a>
<span class="sourceLineNo">26031</span> */<a name="line.26031"></a>
<span class="sourceLineNo">26032</span> public static Dataset log10(final Object a) {<a name="line.26032"></a>
<span class="sourceLineNo">26033</span> return log10(a, null);<a name="line.26033"></a>
<span class="sourceLineNo">26034</span> }<a name="line.26034"></a>
<span class="sourceLineNo">26035</span><a name="line.26035"></a>
<span class="sourceLineNo">26036</span> /**<a name="line.26036"></a>
<span class="sourceLineNo">26037</span> * log10 - evaluate the logarithm function on each element of the dataset<a name="line.26037"></a>
<span class="sourceLineNo">26038</span> * @param a<a name="line.26038"></a>
<span class="sourceLineNo">26039</span> * @param o output can be null - in which case, a new dataset is created<a name="line.26039"></a>
<span class="sourceLineNo">26040</span> * @return dataset<a name="line.26040"></a>
<span class="sourceLineNo">26041</span> */<a name="line.26041"></a>
<span class="sourceLineNo">26042</span> public static Dataset log10(final Object a, final Dataset o) {<a name="line.26042"></a>
<span class="sourceLineNo">26043</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.26043"></a>
<span class="sourceLineNo">26044</span> SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true);<a name="line.26044"></a>
<span class="sourceLineNo">26045</span> final Dataset result = it.getOutput();<a name="line.26045"></a>
<span class="sourceLineNo">26046</span> if (!result.isComplex()) {<a name="line.26046"></a>
<span class="sourceLineNo">26047</span> if (da.isComplex()) {<a name="line.26047"></a>
<span class="sourceLineNo">26048</span> da = da.getRealView();<a name="line.26048"></a>
<span class="sourceLineNo">26049</span> it = new SingleInputBroadcastIterator(da, result, true);<a name="line.26049"></a>
<span class="sourceLineNo">26050</span> }<a name="line.26050"></a>
<span class="sourceLineNo">26051</span> }<a name="line.26051"></a>
<span class="sourceLineNo">26052</span> final int is = result.getElementsPerItem();<a name="line.26052"></a>
<span class="sourceLineNo">26053</span> final int as = da.getElementsPerItem();<a name="line.26053"></a>
<span class="sourceLineNo">26054</span> final int dt = result.getDType();<a name="line.26054"></a>
<span class="sourceLineNo">26055</span><a name="line.26055"></a>
<span class="sourceLineNo">26056</span> switch(dt) {<a name="line.26056"></a>
<span class="sourceLineNo">26057</span> case Dataset.INT8:<a name="line.26057"></a>
<span class="sourceLineNo">26058</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.26058"></a>
<span class="sourceLineNo">26059</span> if (it.isOutputDouble()) {<a name="line.26059"></a>
<span class="sourceLineNo">26060</span> while (it.hasNext()) {<a name="line.26060"></a>
<span class="sourceLineNo">26061</span> final double ix = it.aDouble;<a name="line.26061"></a>
<span class="sourceLineNo">26062</span> byte ox;<a name="line.26062"></a>
<span class="sourceLineNo">26063</span> ox = (byte) toLong(Math.log10(ix));<a name="line.26063"></a>
<span class="sourceLineNo">26064</span> oi8data[it.oIndex] = ox;<a name="line.26064"></a>
<span class="sourceLineNo">26065</span> }<a name="line.26065"></a>
<span class="sourceLineNo">26066</span> } else {<a name="line.26066"></a>
<span class="sourceLineNo">26067</span> while (it.hasNext()) {<a name="line.26067"></a>
<span class="sourceLineNo">26068</span> final long ix = it.aLong;<a name="line.26068"></a>
<span class="sourceLineNo">26069</span> byte ox;<a name="line.26069"></a>
<span class="sourceLineNo">26070</span> ox = (byte) toLong(Math.log10(ix));<a name="line.26070"></a>
<span class="sourceLineNo">26071</span> oi8data[it.oIndex] = ox;<a name="line.26071"></a>
<span class="sourceLineNo">26072</span> }<a name="line.26072"></a>
<span class="sourceLineNo">26073</span> }<a name="line.26073"></a>
<span class="sourceLineNo">26074</span> break;<a name="line.26074"></a>
<span class="sourceLineNo">26075</span> case Dataset.INT16:<a name="line.26075"></a>
<span class="sourceLineNo">26076</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.26076"></a>
<span class="sourceLineNo">26077</span> if (it.isOutputDouble()) {<a name="line.26077"></a>
<span class="sourceLineNo">26078</span> while (it.hasNext()) {<a name="line.26078"></a>
<span class="sourceLineNo">26079</span> final double ix = it.aDouble;<a name="line.26079"></a>
<span class="sourceLineNo">26080</span> short ox;<a name="line.26080"></a>
<span class="sourceLineNo">26081</span> ox = (short) toLong(Math.log10(ix));<a name="line.26081"></a>
<span class="sourceLineNo">26082</span> oi16data[it.oIndex] = ox;<a name="line.26082"></a>
<span class="sourceLineNo">26083</span> }<a name="line.26083"></a>
<span class="sourceLineNo">26084</span> } else {<a name="line.26084"></a>
<span class="sourceLineNo">26085</span> while (it.hasNext()) {<a name="line.26085"></a>
<span class="sourceLineNo">26086</span> final long ix = it.aLong;<a name="line.26086"></a>
<span class="sourceLineNo">26087</span> short ox;<a name="line.26087"></a>
<span class="sourceLineNo">26088</span> ox = (short) toLong(Math.log10(ix));<a name="line.26088"></a>
<span class="sourceLineNo">26089</span> oi16data[it.oIndex] = ox;<a name="line.26089"></a>
<span class="sourceLineNo">26090</span> }<a name="line.26090"></a>
<span class="sourceLineNo">26091</span> }<a name="line.26091"></a>
<span class="sourceLineNo">26092</span> break;<a name="line.26092"></a>
<span class="sourceLineNo">26093</span> case Dataset.INT64:<a name="line.26093"></a>
<span class="sourceLineNo">26094</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.26094"></a>
<span class="sourceLineNo">26095</span> if (it.isOutputDouble()) {<a name="line.26095"></a>
<span class="sourceLineNo">26096</span> while (it.hasNext()) {<a name="line.26096"></a>
<span class="sourceLineNo">26097</span> final double ix = it.aDouble;<a name="line.26097"></a>
<span class="sourceLineNo">26098</span> long ox;<a name="line.26098"></a>
<span class="sourceLineNo">26099</span> ox = toLong(Math.log10(ix));<a name="line.26099"></a>
<span class="sourceLineNo">26100</span> oi64data[it.oIndex] = ox;<a name="line.26100"></a>
<span class="sourceLineNo">26101</span> }<a name="line.26101"></a>
<span class="sourceLineNo">26102</span> } else {<a name="line.26102"></a>
<span class="sourceLineNo">26103</span> while (it.hasNext()) {<a name="line.26103"></a>
<span class="sourceLineNo">26104</span> final long ix = it.aLong;<a name="line.26104"></a>
<span class="sourceLineNo">26105</span> long ox;<a name="line.26105"></a>
<span class="sourceLineNo">26106</span> ox = toLong(Math.log10(ix));<a name="line.26106"></a>
<span class="sourceLineNo">26107</span> oi64data[it.oIndex] = ox;<a name="line.26107"></a>
<span class="sourceLineNo">26108</span> }<a name="line.26108"></a>
<span class="sourceLineNo">26109</span> }<a name="line.26109"></a>
<span class="sourceLineNo">26110</span> break;<a name="line.26110"></a>
<span class="sourceLineNo">26111</span> case Dataset.INT32:<a name="line.26111"></a>
<span class="sourceLineNo">26112</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.26112"></a>
<span class="sourceLineNo">26113</span> if (it.isOutputDouble()) {<a name="line.26113"></a>
<span class="sourceLineNo">26114</span> while (it.hasNext()) {<a name="line.26114"></a>
<span class="sourceLineNo">26115</span> final double ix = it.aDouble;<a name="line.26115"></a>
<span class="sourceLineNo">26116</span> int ox;<a name="line.26116"></a>
<span class="sourceLineNo">26117</span> ox = (int) toLong(Math.log10(ix));<a name="line.26117"></a>
<span class="sourceLineNo">26118</span> oi32data[it.oIndex] = ox;<a name="line.26118"></a>
<span class="sourceLineNo">26119</span> }<a name="line.26119"></a>
<span class="sourceLineNo">26120</span> } else {<a name="line.26120"></a>
<span class="sourceLineNo">26121</span> while (it.hasNext()) {<a name="line.26121"></a>
<span class="sourceLineNo">26122</span> final long ix = it.aLong;<a name="line.26122"></a>
<span class="sourceLineNo">26123</span> int ox;<a name="line.26123"></a>
<span class="sourceLineNo">26124</span> ox = (int) toLong(Math.log10(ix));<a name="line.26124"></a>
<span class="sourceLineNo">26125</span> oi32data[it.oIndex] = ox;<a name="line.26125"></a>
<span class="sourceLineNo">26126</span> }<a name="line.26126"></a>
<span class="sourceLineNo">26127</span> }<a name="line.26127"></a>
<span class="sourceLineNo">26128</span> break;<a name="line.26128"></a>
<span class="sourceLineNo">26129</span> case Dataset.ARRAYINT8:<a name="line.26129"></a>
<span class="sourceLineNo">26130</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.26130"></a>
<span class="sourceLineNo">26131</span> if (is == 1) {<a name="line.26131"></a>
<span class="sourceLineNo">26132</span> if (it.isOutputDouble()) {<a name="line.26132"></a>
<span class="sourceLineNo">26133</span> while (it.hasNext()) {<a name="line.26133"></a>
<span class="sourceLineNo">26134</span> final double ix = it.aDouble;<a name="line.26134"></a>
<span class="sourceLineNo">26135</span> byte ox;<a name="line.26135"></a>
<span class="sourceLineNo">26136</span> ox = (byte) toLong(Math.log10(ix));<a name="line.26136"></a>
<span class="sourceLineNo">26137</span> oai8data[it.oIndex] = ox;<a name="line.26137"></a>
<span class="sourceLineNo">26138</span> }<a name="line.26138"></a>
<span class="sourceLineNo">26139</span> } else {<a name="line.26139"></a>
<span class="sourceLineNo">26140</span> while (it.hasNext()) {<a name="line.26140"></a>
<span class="sourceLineNo">26141</span> final long ix = it.aLong;<a name="line.26141"></a>
<span class="sourceLineNo">26142</span> byte ox;<a name="line.26142"></a>
<span class="sourceLineNo">26143</span> ox = (byte) toLong(Math.log10(ix));<a name="line.26143"></a>
<span class="sourceLineNo">26144</span> oai8data[it.oIndex] = ox;<a name="line.26144"></a>
<span class="sourceLineNo">26145</span> }<a name="line.26145"></a>
<span class="sourceLineNo">26146</span> }<a name="line.26146"></a>
<span class="sourceLineNo">26147</span> } else if (as == 1) {<a name="line.26147"></a>
<span class="sourceLineNo">26148</span> if (it.isOutputDouble()) {<a name="line.26148"></a>
<span class="sourceLineNo">26149</span> while (it.hasNext()) {<a name="line.26149"></a>
<span class="sourceLineNo">26150</span> final double ix = it.aDouble;<a name="line.26150"></a>
<span class="sourceLineNo">26151</span> byte ox;<a name="line.26151"></a>
<span class="sourceLineNo">26152</span> ox = (byte) toLong(Math.log10(ix));<a name="line.26152"></a>
<span class="sourceLineNo">26153</span> for (int j = 0; j &lt; is; j++) {<a name="line.26153"></a>
<span class="sourceLineNo">26154</span> oai8data[it.oIndex + j] = ox;<a name="line.26154"></a>
<span class="sourceLineNo">26155</span> }<a name="line.26155"></a>
<span class="sourceLineNo">26156</span> }<a name="line.26156"></a>
<span class="sourceLineNo">26157</span> } else {<a name="line.26157"></a>
<span class="sourceLineNo">26158</span> while (it.hasNext()) {<a name="line.26158"></a>
<span class="sourceLineNo">26159</span> final long ix = it.aLong;<a name="line.26159"></a>
<span class="sourceLineNo">26160</span> byte ox;<a name="line.26160"></a>
<span class="sourceLineNo">26161</span> ox = (byte) toLong(Math.log10(ix));<a name="line.26161"></a>
<span class="sourceLineNo">26162</span> for (int j = 0; j &lt; is; j++) {<a name="line.26162"></a>
<span class="sourceLineNo">26163</span> oai8data[it.oIndex + j] = ox;<a name="line.26163"></a>
<span class="sourceLineNo">26164</span> }<a name="line.26164"></a>
<span class="sourceLineNo">26165</span> }<a name="line.26165"></a>
<span class="sourceLineNo">26166</span> }<a name="line.26166"></a>
<span class="sourceLineNo">26167</span> } else {<a name="line.26167"></a>
<span class="sourceLineNo">26168</span> if (it.isOutputDouble()) {<a name="line.26168"></a>
<span class="sourceLineNo">26169</span> while (it.hasNext()) {<a name="line.26169"></a>
<span class="sourceLineNo">26170</span> for (int j = 0; j &lt; is; j++) {<a name="line.26170"></a>
<span class="sourceLineNo">26171</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.26171"></a>
<span class="sourceLineNo">26172</span> byte ox;<a name="line.26172"></a>
<span class="sourceLineNo">26173</span> ox = (byte) toLong(Math.log10(ix));<a name="line.26173"></a>
<span class="sourceLineNo">26174</span> oai8data[it.oIndex + j] = ox;<a name="line.26174"></a>
<span class="sourceLineNo">26175</span> }<a name="line.26175"></a>
<span class="sourceLineNo">26176</span> }<a name="line.26176"></a>
<span class="sourceLineNo">26177</span> } else {<a name="line.26177"></a>
<span class="sourceLineNo">26178</span> while (it.hasNext()) {<a name="line.26178"></a>
<span class="sourceLineNo">26179</span> for (int j = 0; j &lt; is; j++) {<a name="line.26179"></a>
<span class="sourceLineNo">26180</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.26180"></a>
<span class="sourceLineNo">26181</span> byte ox;<a name="line.26181"></a>
<span class="sourceLineNo">26182</span> ox = (byte) toLong(Math.log10(ix));<a name="line.26182"></a>
<span class="sourceLineNo">26183</span> oai8data[it.oIndex + j] = ox;<a name="line.26183"></a>
<span class="sourceLineNo">26184</span> }<a name="line.26184"></a>
<span class="sourceLineNo">26185</span> }<a name="line.26185"></a>
<span class="sourceLineNo">26186</span> }<a name="line.26186"></a>
<span class="sourceLineNo">26187</span> }<a name="line.26187"></a>
<span class="sourceLineNo">26188</span> break;<a name="line.26188"></a>
<span class="sourceLineNo">26189</span> case Dataset.ARRAYINT16:<a name="line.26189"></a>
<span class="sourceLineNo">26190</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.26190"></a>
<span class="sourceLineNo">26191</span> if (is == 1) {<a name="line.26191"></a>
<span class="sourceLineNo">26192</span> if (it.isOutputDouble()) {<a name="line.26192"></a>
<span class="sourceLineNo">26193</span> while (it.hasNext()) {<a name="line.26193"></a>
<span class="sourceLineNo">26194</span> final double ix = it.aDouble;<a name="line.26194"></a>
<span class="sourceLineNo">26195</span> short ox;<a name="line.26195"></a>
<span class="sourceLineNo">26196</span> ox = (short) toLong(Math.log10(ix));<a name="line.26196"></a>
<span class="sourceLineNo">26197</span> oai16data[it.oIndex] = ox;<a name="line.26197"></a>
<span class="sourceLineNo">26198</span> }<a name="line.26198"></a>
<span class="sourceLineNo">26199</span> } else {<a name="line.26199"></a>
<span class="sourceLineNo">26200</span> while (it.hasNext()) {<a name="line.26200"></a>
<span class="sourceLineNo">26201</span> final long ix = it.aLong;<a name="line.26201"></a>
<span class="sourceLineNo">26202</span> short ox;<a name="line.26202"></a>
<span class="sourceLineNo">26203</span> ox = (short) toLong(Math.log10(ix));<a name="line.26203"></a>
<span class="sourceLineNo">26204</span> oai16data[it.oIndex] = ox;<a name="line.26204"></a>
<span class="sourceLineNo">26205</span> }<a name="line.26205"></a>
<span class="sourceLineNo">26206</span> }<a name="line.26206"></a>
<span class="sourceLineNo">26207</span> } else if (as == 1) {<a name="line.26207"></a>
<span class="sourceLineNo">26208</span> if (it.isOutputDouble()) {<a name="line.26208"></a>
<span class="sourceLineNo">26209</span> while (it.hasNext()) {<a name="line.26209"></a>
<span class="sourceLineNo">26210</span> final double ix = it.aDouble;<a name="line.26210"></a>
<span class="sourceLineNo">26211</span> short ox;<a name="line.26211"></a>
<span class="sourceLineNo">26212</span> ox = (short) toLong(Math.log10(ix));<a name="line.26212"></a>
<span class="sourceLineNo">26213</span> for (int j = 0; j &lt; is; j++) {<a name="line.26213"></a>
<span class="sourceLineNo">26214</span> oai16data[it.oIndex + j] = ox;<a name="line.26214"></a>
<span class="sourceLineNo">26215</span> }<a name="line.26215"></a>
<span class="sourceLineNo">26216</span> }<a name="line.26216"></a>
<span class="sourceLineNo">26217</span> } else {<a name="line.26217"></a>
<span class="sourceLineNo">26218</span> while (it.hasNext()) {<a name="line.26218"></a>
<span class="sourceLineNo">26219</span> final long ix = it.aLong;<a name="line.26219"></a>
<span class="sourceLineNo">26220</span> short ox;<a name="line.26220"></a>
<span class="sourceLineNo">26221</span> ox = (short) toLong(Math.log10(ix));<a name="line.26221"></a>
<span class="sourceLineNo">26222</span> for (int j = 0; j &lt; is; j++) {<a name="line.26222"></a>
<span class="sourceLineNo">26223</span> oai16data[it.oIndex + j] = ox;<a name="line.26223"></a>
<span class="sourceLineNo">26224</span> }<a name="line.26224"></a>
<span class="sourceLineNo">26225</span> }<a name="line.26225"></a>
<span class="sourceLineNo">26226</span> }<a name="line.26226"></a>
<span class="sourceLineNo">26227</span> } else {<a name="line.26227"></a>
<span class="sourceLineNo">26228</span> if (it.isOutputDouble()) {<a name="line.26228"></a>
<span class="sourceLineNo">26229</span> while (it.hasNext()) {<a name="line.26229"></a>
<span class="sourceLineNo">26230</span> for (int j = 0; j &lt; is; j++) {<a name="line.26230"></a>
<span class="sourceLineNo">26231</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.26231"></a>
<span class="sourceLineNo">26232</span> short ox;<a name="line.26232"></a>
<span class="sourceLineNo">26233</span> ox = (short) toLong(Math.log10(ix));<a name="line.26233"></a>
<span class="sourceLineNo">26234</span> oai16data[it.oIndex + j] = ox;<a name="line.26234"></a>
<span class="sourceLineNo">26235</span> }<a name="line.26235"></a>
<span class="sourceLineNo">26236</span> }<a name="line.26236"></a>
<span class="sourceLineNo">26237</span> } else {<a name="line.26237"></a>
<span class="sourceLineNo">26238</span> while (it.hasNext()) {<a name="line.26238"></a>
<span class="sourceLineNo">26239</span> for (int j = 0; j &lt; is; j++) {<a name="line.26239"></a>
<span class="sourceLineNo">26240</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.26240"></a>
<span class="sourceLineNo">26241</span> short ox;<a name="line.26241"></a>
<span class="sourceLineNo">26242</span> ox = (short) toLong(Math.log10(ix));<a name="line.26242"></a>
<span class="sourceLineNo">26243</span> oai16data[it.oIndex + j] = ox;<a name="line.26243"></a>
<span class="sourceLineNo">26244</span> }<a name="line.26244"></a>
<span class="sourceLineNo">26245</span> }<a name="line.26245"></a>
<span class="sourceLineNo">26246</span> }<a name="line.26246"></a>
<span class="sourceLineNo">26247</span> }<a name="line.26247"></a>
<span class="sourceLineNo">26248</span> break;<a name="line.26248"></a>
<span class="sourceLineNo">26249</span> case Dataset.ARRAYINT64:<a name="line.26249"></a>
<span class="sourceLineNo">26250</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.26250"></a>
<span class="sourceLineNo">26251</span> if (is == 1) {<a name="line.26251"></a>
<span class="sourceLineNo">26252</span> if (it.isOutputDouble()) {<a name="line.26252"></a>
<span class="sourceLineNo">26253</span> while (it.hasNext()) {<a name="line.26253"></a>
<span class="sourceLineNo">26254</span> final double ix = it.aDouble;<a name="line.26254"></a>
<span class="sourceLineNo">26255</span> long ox;<a name="line.26255"></a>
<span class="sourceLineNo">26256</span> ox = toLong(Math.log10(ix));<a name="line.26256"></a>
<span class="sourceLineNo">26257</span> oai64data[it.oIndex] = ox;<a name="line.26257"></a>
<span class="sourceLineNo">26258</span> }<a name="line.26258"></a>
<span class="sourceLineNo">26259</span> } else {<a name="line.26259"></a>
<span class="sourceLineNo">26260</span> while (it.hasNext()) {<a name="line.26260"></a>
<span class="sourceLineNo">26261</span> final long ix = it.aLong;<a name="line.26261"></a>
<span class="sourceLineNo">26262</span> long ox;<a name="line.26262"></a>
<span class="sourceLineNo">26263</span> ox = toLong(Math.log10(ix));<a name="line.26263"></a>
<span class="sourceLineNo">26264</span> oai64data[it.oIndex] = ox;<a name="line.26264"></a>
<span class="sourceLineNo">26265</span> }<a name="line.26265"></a>
<span class="sourceLineNo">26266</span> }<a name="line.26266"></a>
<span class="sourceLineNo">26267</span> } else if (as == 1) {<a name="line.26267"></a>
<span class="sourceLineNo">26268</span> if (it.isOutputDouble()) {<a name="line.26268"></a>
<span class="sourceLineNo">26269</span> while (it.hasNext()) {<a name="line.26269"></a>
<span class="sourceLineNo">26270</span> final double ix = it.aDouble;<a name="line.26270"></a>
<span class="sourceLineNo">26271</span> long ox;<a name="line.26271"></a>
<span class="sourceLineNo">26272</span> ox = toLong(Math.log10(ix));<a name="line.26272"></a>
<span class="sourceLineNo">26273</span> for (int j = 0; j &lt; is; j++) {<a name="line.26273"></a>
<span class="sourceLineNo">26274</span> oai64data[it.oIndex + j] = ox;<a name="line.26274"></a>
<span class="sourceLineNo">26275</span> }<a name="line.26275"></a>
<span class="sourceLineNo">26276</span> }<a name="line.26276"></a>
<span class="sourceLineNo">26277</span> } else {<a name="line.26277"></a>
<span class="sourceLineNo">26278</span> while (it.hasNext()) {<a name="line.26278"></a>
<span class="sourceLineNo">26279</span> final long ix = it.aLong;<a name="line.26279"></a>
<span class="sourceLineNo">26280</span> long ox;<a name="line.26280"></a>
<span class="sourceLineNo">26281</span> ox = toLong(Math.log10(ix));<a name="line.26281"></a>
<span class="sourceLineNo">26282</span> for (int j = 0; j &lt; is; j++) {<a name="line.26282"></a>
<span class="sourceLineNo">26283</span> oai64data[it.oIndex + j] = ox;<a name="line.26283"></a>
<span class="sourceLineNo">26284</span> }<a name="line.26284"></a>
<span class="sourceLineNo">26285</span> }<a name="line.26285"></a>
<span class="sourceLineNo">26286</span> }<a name="line.26286"></a>
<span class="sourceLineNo">26287</span> } else {<a name="line.26287"></a>
<span class="sourceLineNo">26288</span> if (it.isOutputDouble()) {<a name="line.26288"></a>
<span class="sourceLineNo">26289</span> while (it.hasNext()) {<a name="line.26289"></a>
<span class="sourceLineNo">26290</span> for (int j = 0; j &lt; is; j++) {<a name="line.26290"></a>
<span class="sourceLineNo">26291</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.26291"></a>
<span class="sourceLineNo">26292</span> long ox;<a name="line.26292"></a>
<span class="sourceLineNo">26293</span> ox = toLong(Math.log10(ix));<a name="line.26293"></a>
<span class="sourceLineNo">26294</span> oai64data[it.oIndex + j] = ox;<a name="line.26294"></a>
<span class="sourceLineNo">26295</span> }<a name="line.26295"></a>
<span class="sourceLineNo">26296</span> }<a name="line.26296"></a>
<span class="sourceLineNo">26297</span> } else {<a name="line.26297"></a>
<span class="sourceLineNo">26298</span> while (it.hasNext()) {<a name="line.26298"></a>
<span class="sourceLineNo">26299</span> for (int j = 0; j &lt; is; j++) {<a name="line.26299"></a>
<span class="sourceLineNo">26300</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.26300"></a>
<span class="sourceLineNo">26301</span> long ox;<a name="line.26301"></a>
<span class="sourceLineNo">26302</span> ox = toLong(Math.log10(ix));<a name="line.26302"></a>
<span class="sourceLineNo">26303</span> oai64data[it.oIndex + j] = ox;<a name="line.26303"></a>
<span class="sourceLineNo">26304</span> }<a name="line.26304"></a>
<span class="sourceLineNo">26305</span> }<a name="line.26305"></a>
<span class="sourceLineNo">26306</span> }<a name="line.26306"></a>
<span class="sourceLineNo">26307</span> }<a name="line.26307"></a>
<span class="sourceLineNo">26308</span> break;<a name="line.26308"></a>
<span class="sourceLineNo">26309</span> case Dataset.ARRAYINT32:<a name="line.26309"></a>
<span class="sourceLineNo">26310</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.26310"></a>
<span class="sourceLineNo">26311</span> if (is == 1) {<a name="line.26311"></a>
<span class="sourceLineNo">26312</span> if (it.isOutputDouble()) {<a name="line.26312"></a>
<span class="sourceLineNo">26313</span> while (it.hasNext()) {<a name="line.26313"></a>
<span class="sourceLineNo">26314</span> final double ix = it.aDouble;<a name="line.26314"></a>
<span class="sourceLineNo">26315</span> int ox;<a name="line.26315"></a>
<span class="sourceLineNo">26316</span> ox = (int) toLong(Math.log10(ix));<a name="line.26316"></a>
<span class="sourceLineNo">26317</span> oai32data[it.oIndex] = ox;<a name="line.26317"></a>
<span class="sourceLineNo">26318</span> }<a name="line.26318"></a>
<span class="sourceLineNo">26319</span> } else {<a name="line.26319"></a>
<span class="sourceLineNo">26320</span> while (it.hasNext()) {<a name="line.26320"></a>
<span class="sourceLineNo">26321</span> final long ix = it.aLong;<a name="line.26321"></a>
<span class="sourceLineNo">26322</span> int ox;<a name="line.26322"></a>
<span class="sourceLineNo">26323</span> ox = (int) toLong(Math.log10(ix));<a name="line.26323"></a>
<span class="sourceLineNo">26324</span> oai32data[it.oIndex] = ox;<a name="line.26324"></a>
<span class="sourceLineNo">26325</span> }<a name="line.26325"></a>
<span class="sourceLineNo">26326</span> }<a name="line.26326"></a>
<span class="sourceLineNo">26327</span> } else if (as == 1) {<a name="line.26327"></a>
<span class="sourceLineNo">26328</span> if (it.isOutputDouble()) {<a name="line.26328"></a>
<span class="sourceLineNo">26329</span> while (it.hasNext()) {<a name="line.26329"></a>
<span class="sourceLineNo">26330</span> final double ix = it.aDouble;<a name="line.26330"></a>
<span class="sourceLineNo">26331</span> int ox;<a name="line.26331"></a>
<span class="sourceLineNo">26332</span> ox = (int) toLong(Math.log10(ix));<a name="line.26332"></a>
<span class="sourceLineNo">26333</span> for (int j = 0; j &lt; is; j++) {<a name="line.26333"></a>
<span class="sourceLineNo">26334</span> oai32data[it.oIndex + j] = ox;<a name="line.26334"></a>
<span class="sourceLineNo">26335</span> }<a name="line.26335"></a>
<span class="sourceLineNo">26336</span> }<a name="line.26336"></a>
<span class="sourceLineNo">26337</span> } else {<a name="line.26337"></a>
<span class="sourceLineNo">26338</span> while (it.hasNext()) {<a name="line.26338"></a>
<span class="sourceLineNo">26339</span> final long ix = it.aLong;<a name="line.26339"></a>
<span class="sourceLineNo">26340</span> int ox;<a name="line.26340"></a>
<span class="sourceLineNo">26341</span> ox = (int) toLong(Math.log10(ix));<a name="line.26341"></a>
<span class="sourceLineNo">26342</span> for (int j = 0; j &lt; is; j++) {<a name="line.26342"></a>
<span class="sourceLineNo">26343</span> oai32data[it.oIndex + j] = ox;<a name="line.26343"></a>
<span class="sourceLineNo">26344</span> }<a name="line.26344"></a>
<span class="sourceLineNo">26345</span> }<a name="line.26345"></a>
<span class="sourceLineNo">26346</span> }<a name="line.26346"></a>
<span class="sourceLineNo">26347</span> } else {<a name="line.26347"></a>
<span class="sourceLineNo">26348</span> if (it.isOutputDouble()) {<a name="line.26348"></a>
<span class="sourceLineNo">26349</span> while (it.hasNext()) {<a name="line.26349"></a>
<span class="sourceLineNo">26350</span> for (int j = 0; j &lt; is; j++) {<a name="line.26350"></a>
<span class="sourceLineNo">26351</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.26351"></a>
<span class="sourceLineNo">26352</span> int ox;<a name="line.26352"></a>
<span class="sourceLineNo">26353</span> ox = (int) toLong(Math.log10(ix));<a name="line.26353"></a>
<span class="sourceLineNo">26354</span> oai32data[it.oIndex + j] = ox;<a name="line.26354"></a>
<span class="sourceLineNo">26355</span> }<a name="line.26355"></a>
<span class="sourceLineNo">26356</span> }<a name="line.26356"></a>
<span class="sourceLineNo">26357</span> } else {<a name="line.26357"></a>
<span class="sourceLineNo">26358</span> while (it.hasNext()) {<a name="line.26358"></a>
<span class="sourceLineNo">26359</span> for (int j = 0; j &lt; is; j++) {<a name="line.26359"></a>
<span class="sourceLineNo">26360</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.26360"></a>
<span class="sourceLineNo">26361</span> int ox;<a name="line.26361"></a>
<span class="sourceLineNo">26362</span> ox = (int) toLong(Math.log10(ix));<a name="line.26362"></a>
<span class="sourceLineNo">26363</span> oai32data[it.oIndex + j] = ox;<a name="line.26363"></a>
<span class="sourceLineNo">26364</span> }<a name="line.26364"></a>
<span class="sourceLineNo">26365</span> }<a name="line.26365"></a>
<span class="sourceLineNo">26366</span> }<a name="line.26366"></a>
<span class="sourceLineNo">26367</span> }<a name="line.26367"></a>
<span class="sourceLineNo">26368</span> break;<a name="line.26368"></a>
<span class="sourceLineNo">26369</span> case Dataset.FLOAT32:<a name="line.26369"></a>
<span class="sourceLineNo">26370</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.26370"></a>
<span class="sourceLineNo">26371</span> if (it.isOutputDouble()) {<a name="line.26371"></a>
<span class="sourceLineNo">26372</span> while (it.hasNext()) {<a name="line.26372"></a>
<span class="sourceLineNo">26373</span> final double ix = it.aDouble;<a name="line.26373"></a>
<span class="sourceLineNo">26374</span> float ox;<a name="line.26374"></a>
<span class="sourceLineNo">26375</span> ox = (float) (Math.log10(ix));<a name="line.26375"></a>
<span class="sourceLineNo">26376</span> of32data[it.oIndex] = ox;<a name="line.26376"></a>
<span class="sourceLineNo">26377</span> }<a name="line.26377"></a>
<span class="sourceLineNo">26378</span> } else {<a name="line.26378"></a>
<span class="sourceLineNo">26379</span> while (it.hasNext()) {<a name="line.26379"></a>
<span class="sourceLineNo">26380</span> final long ix = it.aLong;<a name="line.26380"></a>
<span class="sourceLineNo">26381</span> float ox;<a name="line.26381"></a>
<span class="sourceLineNo">26382</span> ox = (float) (Math.log10(ix));<a name="line.26382"></a>
<span class="sourceLineNo">26383</span> of32data[it.oIndex] = ox;<a name="line.26383"></a>
<span class="sourceLineNo">26384</span> }<a name="line.26384"></a>
<span class="sourceLineNo">26385</span> }<a name="line.26385"></a>
<span class="sourceLineNo">26386</span> break;<a name="line.26386"></a>
<span class="sourceLineNo">26387</span> case Dataset.FLOAT64:<a name="line.26387"></a>
<span class="sourceLineNo">26388</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.26388"></a>
<span class="sourceLineNo">26389</span> if (it.isOutputDouble()) {<a name="line.26389"></a>
<span class="sourceLineNo">26390</span> while (it.hasNext()) {<a name="line.26390"></a>
<span class="sourceLineNo">26391</span> final double ix = it.aDouble;<a name="line.26391"></a>
<span class="sourceLineNo">26392</span> double ox;<a name="line.26392"></a>
<span class="sourceLineNo">26393</span> ox = (Math.log10(ix));<a name="line.26393"></a>
<span class="sourceLineNo">26394</span> of64data[it.oIndex] = ox;<a name="line.26394"></a>
<span class="sourceLineNo">26395</span> }<a name="line.26395"></a>
<span class="sourceLineNo">26396</span> } else {<a name="line.26396"></a>
<span class="sourceLineNo">26397</span> while (it.hasNext()) {<a name="line.26397"></a>
<span class="sourceLineNo">26398</span> final long ix = it.aLong;<a name="line.26398"></a>
<span class="sourceLineNo">26399</span> double ox;<a name="line.26399"></a>
<span class="sourceLineNo">26400</span> ox = (Math.log10(ix));<a name="line.26400"></a>
<span class="sourceLineNo">26401</span> of64data[it.oIndex] = ox;<a name="line.26401"></a>
<span class="sourceLineNo">26402</span> }<a name="line.26402"></a>
<span class="sourceLineNo">26403</span> }<a name="line.26403"></a>
<span class="sourceLineNo">26404</span> break;<a name="line.26404"></a>
<span class="sourceLineNo">26405</span> case Dataset.ARRAYFLOAT32:<a name="line.26405"></a>
<span class="sourceLineNo">26406</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.26406"></a>
<span class="sourceLineNo">26407</span> if (is == 1) {<a name="line.26407"></a>
<span class="sourceLineNo">26408</span> if (it.isOutputDouble()) {<a name="line.26408"></a>
<span class="sourceLineNo">26409</span> while (it.hasNext()) {<a name="line.26409"></a>
<span class="sourceLineNo">26410</span> final double ix = it.aDouble;<a name="line.26410"></a>
<span class="sourceLineNo">26411</span> float ox;<a name="line.26411"></a>
<span class="sourceLineNo">26412</span> ox = (float) (Math.log10(ix));<a name="line.26412"></a>
<span class="sourceLineNo">26413</span> oaf32data[it.oIndex] = ox;<a name="line.26413"></a>
<span class="sourceLineNo">26414</span> }<a name="line.26414"></a>
<span class="sourceLineNo">26415</span> } else {<a name="line.26415"></a>
<span class="sourceLineNo">26416</span> while (it.hasNext()) {<a name="line.26416"></a>
<span class="sourceLineNo">26417</span> final long ix = it.aLong;<a name="line.26417"></a>
<span class="sourceLineNo">26418</span> float ox;<a name="line.26418"></a>
<span class="sourceLineNo">26419</span> ox = (float) (Math.log10(ix));<a name="line.26419"></a>
<span class="sourceLineNo">26420</span> oaf32data[it.oIndex] = ox;<a name="line.26420"></a>
<span class="sourceLineNo">26421</span> }<a name="line.26421"></a>
<span class="sourceLineNo">26422</span> }<a name="line.26422"></a>
<span class="sourceLineNo">26423</span> } else if (as == 1) {<a name="line.26423"></a>
<span class="sourceLineNo">26424</span> if (it.isOutputDouble()) {<a name="line.26424"></a>
<span class="sourceLineNo">26425</span> while (it.hasNext()) {<a name="line.26425"></a>
<span class="sourceLineNo">26426</span> final double ix = it.aDouble;<a name="line.26426"></a>
<span class="sourceLineNo">26427</span> float ox;<a name="line.26427"></a>
<span class="sourceLineNo">26428</span> ox = (float) (Math.log10(ix));<a name="line.26428"></a>
<span class="sourceLineNo">26429</span> for (int j = 0; j &lt; is; j++) {<a name="line.26429"></a>
<span class="sourceLineNo">26430</span> oaf32data[it.oIndex + j] = ox;<a name="line.26430"></a>
<span class="sourceLineNo">26431</span> }<a name="line.26431"></a>
<span class="sourceLineNo">26432</span> }<a name="line.26432"></a>
<span class="sourceLineNo">26433</span> } else {<a name="line.26433"></a>
<span class="sourceLineNo">26434</span> while (it.hasNext()) {<a name="line.26434"></a>
<span class="sourceLineNo">26435</span> final long ix = it.aLong;<a name="line.26435"></a>
<span class="sourceLineNo">26436</span> float ox;<a name="line.26436"></a>
<span class="sourceLineNo">26437</span> ox = (float) (Math.log10(ix));<a name="line.26437"></a>
<span class="sourceLineNo">26438</span> for (int j = 0; j &lt; is; j++) {<a name="line.26438"></a>
<span class="sourceLineNo">26439</span> oaf32data[it.oIndex + j] = ox;<a name="line.26439"></a>
<span class="sourceLineNo">26440</span> }<a name="line.26440"></a>
<span class="sourceLineNo">26441</span> }<a name="line.26441"></a>
<span class="sourceLineNo">26442</span> }<a name="line.26442"></a>
<span class="sourceLineNo">26443</span> } else {<a name="line.26443"></a>
<span class="sourceLineNo">26444</span> if (it.isOutputDouble()) {<a name="line.26444"></a>
<span class="sourceLineNo">26445</span> while (it.hasNext()) {<a name="line.26445"></a>
<span class="sourceLineNo">26446</span> for (int j = 0; j &lt; is; j++) {<a name="line.26446"></a>
<span class="sourceLineNo">26447</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.26447"></a>
<span class="sourceLineNo">26448</span> float ox;<a name="line.26448"></a>
<span class="sourceLineNo">26449</span> ox = (float) (Math.log10(ix));<a name="line.26449"></a>
<span class="sourceLineNo">26450</span> oaf32data[it.oIndex + j] = ox;<a name="line.26450"></a>
<span class="sourceLineNo">26451</span> }<a name="line.26451"></a>
<span class="sourceLineNo">26452</span> }<a name="line.26452"></a>
<span class="sourceLineNo">26453</span> } else {<a name="line.26453"></a>
<span class="sourceLineNo">26454</span> while (it.hasNext()) {<a name="line.26454"></a>
<span class="sourceLineNo">26455</span> for (int j = 0; j &lt; is; j++) {<a name="line.26455"></a>
<span class="sourceLineNo">26456</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.26456"></a>
<span class="sourceLineNo">26457</span> float ox;<a name="line.26457"></a>
<span class="sourceLineNo">26458</span> ox = (float) (Math.log10(ix));<a name="line.26458"></a>
<span class="sourceLineNo">26459</span> oaf32data[it.oIndex + j] = ox;<a name="line.26459"></a>
<span class="sourceLineNo">26460</span> }<a name="line.26460"></a>
<span class="sourceLineNo">26461</span> }<a name="line.26461"></a>
<span class="sourceLineNo">26462</span> }<a name="line.26462"></a>
<span class="sourceLineNo">26463</span> }<a name="line.26463"></a>
<span class="sourceLineNo">26464</span> break;<a name="line.26464"></a>
<span class="sourceLineNo">26465</span> case Dataset.ARRAYFLOAT64:<a name="line.26465"></a>
<span class="sourceLineNo">26466</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.26466"></a>
<span class="sourceLineNo">26467</span> if (is == 1) {<a name="line.26467"></a>
<span class="sourceLineNo">26468</span> if (it.isOutputDouble()) {<a name="line.26468"></a>
<span class="sourceLineNo">26469</span> while (it.hasNext()) {<a name="line.26469"></a>
<span class="sourceLineNo">26470</span> final double ix = it.aDouble;<a name="line.26470"></a>
<span class="sourceLineNo">26471</span> double ox;<a name="line.26471"></a>
<span class="sourceLineNo">26472</span> ox = (Math.log10(ix));<a name="line.26472"></a>
<span class="sourceLineNo">26473</span> oaf64data[it.oIndex] = ox;<a name="line.26473"></a>
<span class="sourceLineNo">26474</span> }<a name="line.26474"></a>
<span class="sourceLineNo">26475</span> } else {<a name="line.26475"></a>
<span class="sourceLineNo">26476</span> while (it.hasNext()) {<a name="line.26476"></a>
<span class="sourceLineNo">26477</span> final long ix = it.aLong;<a name="line.26477"></a>
<span class="sourceLineNo">26478</span> double ox;<a name="line.26478"></a>
<span class="sourceLineNo">26479</span> ox = (Math.log10(ix));<a name="line.26479"></a>
<span class="sourceLineNo">26480</span> oaf64data[it.oIndex] = ox;<a name="line.26480"></a>
<span class="sourceLineNo">26481</span> }<a name="line.26481"></a>
<span class="sourceLineNo">26482</span> }<a name="line.26482"></a>
<span class="sourceLineNo">26483</span> } else if (as == 1) {<a name="line.26483"></a>
<span class="sourceLineNo">26484</span> if (it.isOutputDouble()) {<a name="line.26484"></a>
<span class="sourceLineNo">26485</span> while (it.hasNext()) {<a name="line.26485"></a>
<span class="sourceLineNo">26486</span> final double ix = it.aDouble;<a name="line.26486"></a>
<span class="sourceLineNo">26487</span> double ox;<a name="line.26487"></a>
<span class="sourceLineNo">26488</span> ox = (Math.log10(ix));<a name="line.26488"></a>
<span class="sourceLineNo">26489</span> for (int j = 0; j &lt; is; j++) {<a name="line.26489"></a>
<span class="sourceLineNo">26490</span> oaf64data[it.oIndex + j] = ox;<a name="line.26490"></a>
<span class="sourceLineNo">26491</span> }<a name="line.26491"></a>
<span class="sourceLineNo">26492</span> }<a name="line.26492"></a>
<span class="sourceLineNo">26493</span> } else {<a name="line.26493"></a>
<span class="sourceLineNo">26494</span> while (it.hasNext()) {<a name="line.26494"></a>
<span class="sourceLineNo">26495</span> final long ix = it.aLong;<a name="line.26495"></a>
<span class="sourceLineNo">26496</span> double ox;<a name="line.26496"></a>
<span class="sourceLineNo">26497</span> ox = (Math.log10(ix));<a name="line.26497"></a>
<span class="sourceLineNo">26498</span> for (int j = 0; j &lt; is; j++) {<a name="line.26498"></a>
<span class="sourceLineNo">26499</span> oaf64data[it.oIndex + j] = ox;<a name="line.26499"></a>
<span class="sourceLineNo">26500</span> }<a name="line.26500"></a>
<span class="sourceLineNo">26501</span> }<a name="line.26501"></a>
<span class="sourceLineNo">26502</span> }<a name="line.26502"></a>
<span class="sourceLineNo">26503</span> } else {<a name="line.26503"></a>
<span class="sourceLineNo">26504</span> if (it.isOutputDouble()) {<a name="line.26504"></a>
<span class="sourceLineNo">26505</span> while (it.hasNext()) {<a name="line.26505"></a>
<span class="sourceLineNo">26506</span> for (int j = 0; j &lt; is; j++) {<a name="line.26506"></a>
<span class="sourceLineNo">26507</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.26507"></a>
<span class="sourceLineNo">26508</span> double ox;<a name="line.26508"></a>
<span class="sourceLineNo">26509</span> ox = (Math.log10(ix));<a name="line.26509"></a>
<span class="sourceLineNo">26510</span> oaf64data[it.oIndex + j] = ox;<a name="line.26510"></a>
<span class="sourceLineNo">26511</span> }<a name="line.26511"></a>
<span class="sourceLineNo">26512</span> }<a name="line.26512"></a>
<span class="sourceLineNo">26513</span> } else {<a name="line.26513"></a>
<span class="sourceLineNo">26514</span> while (it.hasNext()) {<a name="line.26514"></a>
<span class="sourceLineNo">26515</span> for (int j = 0; j &lt; is; j++) {<a name="line.26515"></a>
<span class="sourceLineNo">26516</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.26516"></a>
<span class="sourceLineNo">26517</span> double ox;<a name="line.26517"></a>
<span class="sourceLineNo">26518</span> ox = (Math.log10(ix));<a name="line.26518"></a>
<span class="sourceLineNo">26519</span> oaf64data[it.oIndex + j] = ox;<a name="line.26519"></a>
<span class="sourceLineNo">26520</span> }<a name="line.26520"></a>
<span class="sourceLineNo">26521</span> }<a name="line.26521"></a>
<span class="sourceLineNo">26522</span> }<a name="line.26522"></a>
<span class="sourceLineNo">26523</span> }<a name="line.26523"></a>
<span class="sourceLineNo">26524</span> break;<a name="line.26524"></a>
<span class="sourceLineNo">26525</span> case Dataset.COMPLEX64:<a name="line.26525"></a>
<span class="sourceLineNo">26526</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.26526"></a>
<span class="sourceLineNo">26527</span> if (!da.isComplex()) {<a name="line.26527"></a>
<span class="sourceLineNo">26528</span> if (it.isOutputDouble()) {<a name="line.26528"></a>
<span class="sourceLineNo">26529</span> final double iy = 0;<a name="line.26529"></a>
<span class="sourceLineNo">26530</span> while (it.hasNext()) {<a name="line.26530"></a>
<span class="sourceLineNo">26531</span> final double ix = it.aDouble;<a name="line.26531"></a>
<span class="sourceLineNo">26532</span> float ox;<a name="line.26532"></a>
<span class="sourceLineNo">26533</span> float oy;<a name="line.26533"></a>
<span class="sourceLineNo">26534</span> ox = (float) (Math.log10(Math.hypot(ix, iy)));<a name="line.26534"></a>
<span class="sourceLineNo">26535</span> oy = (float) (Math.atan2(iy, ix));<a name="line.26535"></a>
<span class="sourceLineNo">26536</span> oc64data[it.oIndex] = ox;<a name="line.26536"></a>
<span class="sourceLineNo">26537</span> oc64data[it.oIndex + 1] = oy;<a name="line.26537"></a>
<span class="sourceLineNo">26538</span> }<a name="line.26538"></a>
<span class="sourceLineNo">26539</span> } else {<a name="line.26539"></a>
<span class="sourceLineNo">26540</span> final long iy = 0;<a name="line.26540"></a>
<span class="sourceLineNo">26541</span> while (it.hasNext()) {<a name="line.26541"></a>
<span class="sourceLineNo">26542</span> final long ix = it.aLong;<a name="line.26542"></a>
<span class="sourceLineNo">26543</span> float ox;<a name="line.26543"></a>
<span class="sourceLineNo">26544</span> float oy;<a name="line.26544"></a>
<span class="sourceLineNo">26545</span> ox = (float) toLong(Math.log10(Math.hypot(ix, iy)));<a name="line.26545"></a>
<span class="sourceLineNo">26546</span> oy = (float) toLong(Math.atan2(iy, ix));<a name="line.26546"></a>
<span class="sourceLineNo">26547</span> oc64data[it.oIndex] = ox;<a name="line.26547"></a>
<span class="sourceLineNo">26548</span> oc64data[it.oIndex + 1] = oy;<a name="line.26548"></a>
<span class="sourceLineNo">26549</span> }<a name="line.26549"></a>
<span class="sourceLineNo">26550</span> }<a name="line.26550"></a>
<span class="sourceLineNo">26551</span> } else {<a name="line.26551"></a>
<span class="sourceLineNo">26552</span> while (it.hasNext()) {<a name="line.26552"></a>
<span class="sourceLineNo">26553</span> final double ix = it.aDouble;<a name="line.26553"></a>
<span class="sourceLineNo">26554</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.26554"></a>
<span class="sourceLineNo">26555</span> float ox;<a name="line.26555"></a>
<span class="sourceLineNo">26556</span> float oy;<a name="line.26556"></a>
<span class="sourceLineNo">26557</span> ox = (float) (Math.log10(Math.hypot(ix, iy)));<a name="line.26557"></a>
<span class="sourceLineNo">26558</span> oy = (float) (Math.atan2(iy, ix));<a name="line.26558"></a>
<span class="sourceLineNo">26559</span> oc64data[it.oIndex] = ox;<a name="line.26559"></a>
<span class="sourceLineNo">26560</span> oc64data[it.oIndex + 1] = oy;<a name="line.26560"></a>
<span class="sourceLineNo">26561</span> }<a name="line.26561"></a>
<span class="sourceLineNo">26562</span> }<a name="line.26562"></a>
<span class="sourceLineNo">26563</span> break;<a name="line.26563"></a>
<span class="sourceLineNo">26564</span> case Dataset.COMPLEX128:<a name="line.26564"></a>
<span class="sourceLineNo">26565</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.26565"></a>
<span class="sourceLineNo">26566</span> if (!da.isComplex()) {<a name="line.26566"></a>
<span class="sourceLineNo">26567</span> if (it.isOutputDouble()) {<a name="line.26567"></a>
<span class="sourceLineNo">26568</span> final double iy = 0;<a name="line.26568"></a>
<span class="sourceLineNo">26569</span> while (it.hasNext()) {<a name="line.26569"></a>
<span class="sourceLineNo">26570</span> final double ix = it.aDouble;<a name="line.26570"></a>
<span class="sourceLineNo">26571</span> double ox;<a name="line.26571"></a>
<span class="sourceLineNo">26572</span> double oy;<a name="line.26572"></a>
<span class="sourceLineNo">26573</span> ox = (Math.log10(Math.hypot(ix, iy)));<a name="line.26573"></a>
<span class="sourceLineNo">26574</span> oy = (Math.atan2(iy, ix));<a name="line.26574"></a>
<span class="sourceLineNo">26575</span> oc128data[it.oIndex] = ox;<a name="line.26575"></a>
<span class="sourceLineNo">26576</span> oc128data[it.oIndex + 1] = oy;<a name="line.26576"></a>
<span class="sourceLineNo">26577</span> }<a name="line.26577"></a>
<span class="sourceLineNo">26578</span> } else {<a name="line.26578"></a>
<span class="sourceLineNo">26579</span> final long iy = 0;<a name="line.26579"></a>
<span class="sourceLineNo">26580</span> while (it.hasNext()) {<a name="line.26580"></a>
<span class="sourceLineNo">26581</span> final long ix = it.aLong;<a name="line.26581"></a>
<span class="sourceLineNo">26582</span> double ox;<a name="line.26582"></a>
<span class="sourceLineNo">26583</span> double oy;<a name="line.26583"></a>
<span class="sourceLineNo">26584</span> ox = (double) (Math.log10(Math.hypot(ix, iy)));<a name="line.26584"></a>
<span class="sourceLineNo">26585</span> oy = (double) (Math.atan2(iy, ix));<a name="line.26585"></a>
<span class="sourceLineNo">26586</span> oc128data[it.oIndex] = ox;<a name="line.26586"></a>
<span class="sourceLineNo">26587</span> oc128data[it.oIndex + 1] = oy;<a name="line.26587"></a>
<span class="sourceLineNo">26588</span> }<a name="line.26588"></a>
<span class="sourceLineNo">26589</span> }<a name="line.26589"></a>
<span class="sourceLineNo">26590</span> } else {<a name="line.26590"></a>
<span class="sourceLineNo">26591</span> while (it.hasNext()) {<a name="line.26591"></a>
<span class="sourceLineNo">26592</span> final double ix = it.aDouble;<a name="line.26592"></a>
<span class="sourceLineNo">26593</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.26593"></a>
<span class="sourceLineNo">26594</span> double ox;<a name="line.26594"></a>
<span class="sourceLineNo">26595</span> double oy;<a name="line.26595"></a>
<span class="sourceLineNo">26596</span> ox = (Math.log10(Math.hypot(ix, iy)));<a name="line.26596"></a>
<span class="sourceLineNo">26597</span> oy = (Math.atan2(iy, ix));<a name="line.26597"></a>
<span class="sourceLineNo">26598</span> oc128data[it.oIndex] = ox;<a name="line.26598"></a>
<span class="sourceLineNo">26599</span> oc128data[it.oIndex + 1] = oy;<a name="line.26599"></a>
<span class="sourceLineNo">26600</span> }<a name="line.26600"></a>
<span class="sourceLineNo">26601</span> }<a name="line.26601"></a>
<span class="sourceLineNo">26602</span> break;<a name="line.26602"></a>
<span class="sourceLineNo">26603</span> default:<a name="line.26603"></a>
<span class="sourceLineNo">26604</span> throw new IllegalArgumentException("log10 supports integer, compound integer, real, compound real, complex datasets only");<a name="line.26604"></a>
<span class="sourceLineNo">26605</span> }<a name="line.26605"></a>
<span class="sourceLineNo">26606</span><a name="line.26606"></a>
<span class="sourceLineNo">26607</span> addFunctionName(result, "log10");<a name="line.26607"></a>
<span class="sourceLineNo">26608</span> return result;<a name="line.26608"></a>
<span class="sourceLineNo">26609</span> }<a name="line.26609"></a>
<span class="sourceLineNo">26610</span><a name="line.26610"></a>
<span class="sourceLineNo">26611</span> /**<a name="line.26611"></a>
<span class="sourceLineNo">26612</span> * log1p - evaluate the logarithm function of 1 plus on each element of the dataset<a name="line.26612"></a>
<span class="sourceLineNo">26613</span> * @param a<a name="line.26613"></a>
<span class="sourceLineNo">26614</span> * @return dataset<a name="line.26614"></a>
<span class="sourceLineNo">26615</span> */<a name="line.26615"></a>
<span class="sourceLineNo">26616</span> public static Dataset log1p(final Object a) {<a name="line.26616"></a>
<span class="sourceLineNo">26617</span> return log1p(a, null);<a name="line.26617"></a>
<span class="sourceLineNo">26618</span> }<a name="line.26618"></a>
<span class="sourceLineNo">26619</span><a name="line.26619"></a>
<span class="sourceLineNo">26620</span> /**<a name="line.26620"></a>
<span class="sourceLineNo">26621</span> * log1p - evaluate the logarithm function of 1 plus on each element of the dataset<a name="line.26621"></a>
<span class="sourceLineNo">26622</span> * @param a<a name="line.26622"></a>
<span class="sourceLineNo">26623</span> * @param o output can be null - in which case, a new dataset is created<a name="line.26623"></a>
<span class="sourceLineNo">26624</span> * @return dataset<a name="line.26624"></a>
<span class="sourceLineNo">26625</span> */<a name="line.26625"></a>
<span class="sourceLineNo">26626</span> public static Dataset log1p(final Object a, final Dataset o) {<a name="line.26626"></a>
<span class="sourceLineNo">26627</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.26627"></a>
<span class="sourceLineNo">26628</span> SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true);<a name="line.26628"></a>
<span class="sourceLineNo">26629</span> final Dataset result = it.getOutput();<a name="line.26629"></a>
<span class="sourceLineNo">26630</span> if (!result.isComplex()) {<a name="line.26630"></a>
<span class="sourceLineNo">26631</span> if (da.isComplex()) {<a name="line.26631"></a>
<span class="sourceLineNo">26632</span> da = da.getRealView();<a name="line.26632"></a>
<span class="sourceLineNo">26633</span> it = new SingleInputBroadcastIterator(da, result, true);<a name="line.26633"></a>
<span class="sourceLineNo">26634</span> }<a name="line.26634"></a>
<span class="sourceLineNo">26635</span> }<a name="line.26635"></a>
<span class="sourceLineNo">26636</span> final int is = result.getElementsPerItem();<a name="line.26636"></a>
<span class="sourceLineNo">26637</span> final int as = da.getElementsPerItem();<a name="line.26637"></a>
<span class="sourceLineNo">26638</span> final int dt = result.getDType();<a name="line.26638"></a>
<span class="sourceLineNo">26639</span><a name="line.26639"></a>
<span class="sourceLineNo">26640</span> switch(dt) {<a name="line.26640"></a>
<span class="sourceLineNo">26641</span> case Dataset.INT8:<a name="line.26641"></a>
<span class="sourceLineNo">26642</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.26642"></a>
<span class="sourceLineNo">26643</span> if (it.isOutputDouble()) {<a name="line.26643"></a>
<span class="sourceLineNo">26644</span> while (it.hasNext()) {<a name="line.26644"></a>
<span class="sourceLineNo">26645</span> final double ix = it.aDouble;<a name="line.26645"></a>
<span class="sourceLineNo">26646</span> byte ox;<a name="line.26646"></a>
<span class="sourceLineNo">26647</span> ox = (byte) toLong(Math.log1p(ix));<a name="line.26647"></a>
<span class="sourceLineNo">26648</span> oi8data[it.oIndex] = ox;<a name="line.26648"></a>
<span class="sourceLineNo">26649</span> }<a name="line.26649"></a>
<span class="sourceLineNo">26650</span> } else {<a name="line.26650"></a>
<span class="sourceLineNo">26651</span> while (it.hasNext()) {<a name="line.26651"></a>
<span class="sourceLineNo">26652</span> final long ix = it.aLong;<a name="line.26652"></a>
<span class="sourceLineNo">26653</span> byte ox;<a name="line.26653"></a>
<span class="sourceLineNo">26654</span> ox = (byte) toLong(Math.log1p(ix));<a name="line.26654"></a>
<span class="sourceLineNo">26655</span> oi8data[it.oIndex] = ox;<a name="line.26655"></a>
<span class="sourceLineNo">26656</span> }<a name="line.26656"></a>
<span class="sourceLineNo">26657</span> }<a name="line.26657"></a>
<span class="sourceLineNo">26658</span> break;<a name="line.26658"></a>
<span class="sourceLineNo">26659</span> case Dataset.INT16:<a name="line.26659"></a>
<span class="sourceLineNo">26660</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.26660"></a>
<span class="sourceLineNo">26661</span> if (it.isOutputDouble()) {<a name="line.26661"></a>
<span class="sourceLineNo">26662</span> while (it.hasNext()) {<a name="line.26662"></a>
<span class="sourceLineNo">26663</span> final double ix = it.aDouble;<a name="line.26663"></a>
<span class="sourceLineNo">26664</span> short ox;<a name="line.26664"></a>
<span class="sourceLineNo">26665</span> ox = (short) toLong(Math.log1p(ix));<a name="line.26665"></a>
<span class="sourceLineNo">26666</span> oi16data[it.oIndex] = ox;<a name="line.26666"></a>
<span class="sourceLineNo">26667</span> }<a name="line.26667"></a>
<span class="sourceLineNo">26668</span> } else {<a name="line.26668"></a>
<span class="sourceLineNo">26669</span> while (it.hasNext()) {<a name="line.26669"></a>
<span class="sourceLineNo">26670</span> final long ix = it.aLong;<a name="line.26670"></a>
<span class="sourceLineNo">26671</span> short ox;<a name="line.26671"></a>
<span class="sourceLineNo">26672</span> ox = (short) toLong(Math.log1p(ix));<a name="line.26672"></a>
<span class="sourceLineNo">26673</span> oi16data[it.oIndex] = ox;<a name="line.26673"></a>
<span class="sourceLineNo">26674</span> }<a name="line.26674"></a>
<span class="sourceLineNo">26675</span> }<a name="line.26675"></a>
<span class="sourceLineNo">26676</span> break;<a name="line.26676"></a>
<span class="sourceLineNo">26677</span> case Dataset.INT64:<a name="line.26677"></a>
<span class="sourceLineNo">26678</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.26678"></a>
<span class="sourceLineNo">26679</span> if (it.isOutputDouble()) {<a name="line.26679"></a>
<span class="sourceLineNo">26680</span> while (it.hasNext()) {<a name="line.26680"></a>
<span class="sourceLineNo">26681</span> final double ix = it.aDouble;<a name="line.26681"></a>
<span class="sourceLineNo">26682</span> long ox;<a name="line.26682"></a>
<span class="sourceLineNo">26683</span> ox = toLong(Math.log1p(ix));<a name="line.26683"></a>
<span class="sourceLineNo">26684</span> oi64data[it.oIndex] = ox;<a name="line.26684"></a>
<span class="sourceLineNo">26685</span> }<a name="line.26685"></a>
<span class="sourceLineNo">26686</span> } else {<a name="line.26686"></a>
<span class="sourceLineNo">26687</span> while (it.hasNext()) {<a name="line.26687"></a>
<span class="sourceLineNo">26688</span> final long ix = it.aLong;<a name="line.26688"></a>
<span class="sourceLineNo">26689</span> long ox;<a name="line.26689"></a>
<span class="sourceLineNo">26690</span> ox = toLong(Math.log1p(ix));<a name="line.26690"></a>
<span class="sourceLineNo">26691</span> oi64data[it.oIndex] = ox;<a name="line.26691"></a>
<span class="sourceLineNo">26692</span> }<a name="line.26692"></a>
<span class="sourceLineNo">26693</span> }<a name="line.26693"></a>
<span class="sourceLineNo">26694</span> break;<a name="line.26694"></a>
<span class="sourceLineNo">26695</span> case Dataset.INT32:<a name="line.26695"></a>
<span class="sourceLineNo">26696</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.26696"></a>
<span class="sourceLineNo">26697</span> if (it.isOutputDouble()) {<a name="line.26697"></a>
<span class="sourceLineNo">26698</span> while (it.hasNext()) {<a name="line.26698"></a>
<span class="sourceLineNo">26699</span> final double ix = it.aDouble;<a name="line.26699"></a>
<span class="sourceLineNo">26700</span> int ox;<a name="line.26700"></a>
<span class="sourceLineNo">26701</span> ox = (int) toLong(Math.log1p(ix));<a name="line.26701"></a>
<span class="sourceLineNo">26702</span> oi32data[it.oIndex] = ox;<a name="line.26702"></a>
<span class="sourceLineNo">26703</span> }<a name="line.26703"></a>
<span class="sourceLineNo">26704</span> } else {<a name="line.26704"></a>
<span class="sourceLineNo">26705</span> while (it.hasNext()) {<a name="line.26705"></a>
<span class="sourceLineNo">26706</span> final long ix = it.aLong;<a name="line.26706"></a>
<span class="sourceLineNo">26707</span> int ox;<a name="line.26707"></a>
<span class="sourceLineNo">26708</span> ox = (int) toLong(Math.log1p(ix));<a name="line.26708"></a>
<span class="sourceLineNo">26709</span> oi32data[it.oIndex] = ox;<a name="line.26709"></a>
<span class="sourceLineNo">26710</span> }<a name="line.26710"></a>
<span class="sourceLineNo">26711</span> }<a name="line.26711"></a>
<span class="sourceLineNo">26712</span> break;<a name="line.26712"></a>
<span class="sourceLineNo">26713</span> case Dataset.ARRAYINT8:<a name="line.26713"></a>
<span class="sourceLineNo">26714</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.26714"></a>
<span class="sourceLineNo">26715</span> if (is == 1) {<a name="line.26715"></a>
<span class="sourceLineNo">26716</span> if (it.isOutputDouble()) {<a name="line.26716"></a>
<span class="sourceLineNo">26717</span> while (it.hasNext()) {<a name="line.26717"></a>
<span class="sourceLineNo">26718</span> final double ix = it.aDouble;<a name="line.26718"></a>
<span class="sourceLineNo">26719</span> byte ox;<a name="line.26719"></a>
<span class="sourceLineNo">26720</span> ox = (byte) toLong(Math.log1p(ix));<a name="line.26720"></a>
<span class="sourceLineNo">26721</span> oai8data[it.oIndex] = ox;<a name="line.26721"></a>
<span class="sourceLineNo">26722</span> }<a name="line.26722"></a>
<span class="sourceLineNo">26723</span> } else {<a name="line.26723"></a>
<span class="sourceLineNo">26724</span> while (it.hasNext()) {<a name="line.26724"></a>
<span class="sourceLineNo">26725</span> final long ix = it.aLong;<a name="line.26725"></a>
<span class="sourceLineNo">26726</span> byte ox;<a name="line.26726"></a>
<span class="sourceLineNo">26727</span> ox = (byte) toLong(Math.log1p(ix));<a name="line.26727"></a>
<span class="sourceLineNo">26728</span> oai8data[it.oIndex] = ox;<a name="line.26728"></a>
<span class="sourceLineNo">26729</span> }<a name="line.26729"></a>
<span class="sourceLineNo">26730</span> }<a name="line.26730"></a>
<span class="sourceLineNo">26731</span> } else if (as == 1) {<a name="line.26731"></a>
<span class="sourceLineNo">26732</span> if (it.isOutputDouble()) {<a name="line.26732"></a>
<span class="sourceLineNo">26733</span> while (it.hasNext()) {<a name="line.26733"></a>
<span class="sourceLineNo">26734</span> final double ix = it.aDouble;<a name="line.26734"></a>
<span class="sourceLineNo">26735</span> byte ox;<a name="line.26735"></a>
<span class="sourceLineNo">26736</span> ox = (byte) toLong(Math.log1p(ix));<a name="line.26736"></a>
<span class="sourceLineNo">26737</span> for (int j = 0; j &lt; is; j++) {<a name="line.26737"></a>
<span class="sourceLineNo">26738</span> oai8data[it.oIndex + j] = ox;<a name="line.26738"></a>
<span class="sourceLineNo">26739</span> }<a name="line.26739"></a>
<span class="sourceLineNo">26740</span> }<a name="line.26740"></a>
<span class="sourceLineNo">26741</span> } else {<a name="line.26741"></a>
<span class="sourceLineNo">26742</span> while (it.hasNext()) {<a name="line.26742"></a>
<span class="sourceLineNo">26743</span> final long ix = it.aLong;<a name="line.26743"></a>
<span class="sourceLineNo">26744</span> byte ox;<a name="line.26744"></a>
<span class="sourceLineNo">26745</span> ox = (byte) toLong(Math.log1p(ix));<a name="line.26745"></a>
<span class="sourceLineNo">26746</span> for (int j = 0; j &lt; is; j++) {<a name="line.26746"></a>
<span class="sourceLineNo">26747</span> oai8data[it.oIndex + j] = ox;<a name="line.26747"></a>
<span class="sourceLineNo">26748</span> }<a name="line.26748"></a>
<span class="sourceLineNo">26749</span> }<a name="line.26749"></a>
<span class="sourceLineNo">26750</span> }<a name="line.26750"></a>
<span class="sourceLineNo">26751</span> } else {<a name="line.26751"></a>
<span class="sourceLineNo">26752</span> if (it.isOutputDouble()) {<a name="line.26752"></a>
<span class="sourceLineNo">26753</span> while (it.hasNext()) {<a name="line.26753"></a>
<span class="sourceLineNo">26754</span> for (int j = 0; j &lt; is; j++) {<a name="line.26754"></a>
<span class="sourceLineNo">26755</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.26755"></a>
<span class="sourceLineNo">26756</span> byte ox;<a name="line.26756"></a>
<span class="sourceLineNo">26757</span> ox = (byte) toLong(Math.log1p(ix));<a name="line.26757"></a>
<span class="sourceLineNo">26758</span> oai8data[it.oIndex + j] = ox;<a name="line.26758"></a>
<span class="sourceLineNo">26759</span> }<a name="line.26759"></a>
<span class="sourceLineNo">26760</span> }<a name="line.26760"></a>
<span class="sourceLineNo">26761</span> } else {<a name="line.26761"></a>
<span class="sourceLineNo">26762</span> while (it.hasNext()) {<a name="line.26762"></a>
<span class="sourceLineNo">26763</span> for (int j = 0; j &lt; is; j++) {<a name="line.26763"></a>
<span class="sourceLineNo">26764</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.26764"></a>
<span class="sourceLineNo">26765</span> byte ox;<a name="line.26765"></a>
<span class="sourceLineNo">26766</span> ox = (byte) toLong(Math.log1p(ix));<a name="line.26766"></a>
<span class="sourceLineNo">26767</span> oai8data[it.oIndex + j] = ox;<a name="line.26767"></a>
<span class="sourceLineNo">26768</span> }<a name="line.26768"></a>
<span class="sourceLineNo">26769</span> }<a name="line.26769"></a>
<span class="sourceLineNo">26770</span> }<a name="line.26770"></a>
<span class="sourceLineNo">26771</span> }<a name="line.26771"></a>
<span class="sourceLineNo">26772</span> break;<a name="line.26772"></a>
<span class="sourceLineNo">26773</span> case Dataset.ARRAYINT16:<a name="line.26773"></a>
<span class="sourceLineNo">26774</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.26774"></a>
<span class="sourceLineNo">26775</span> if (is == 1) {<a name="line.26775"></a>
<span class="sourceLineNo">26776</span> if (it.isOutputDouble()) {<a name="line.26776"></a>
<span class="sourceLineNo">26777</span> while (it.hasNext()) {<a name="line.26777"></a>
<span class="sourceLineNo">26778</span> final double ix = it.aDouble;<a name="line.26778"></a>
<span class="sourceLineNo">26779</span> short ox;<a name="line.26779"></a>
<span class="sourceLineNo">26780</span> ox = (short) toLong(Math.log1p(ix));<a name="line.26780"></a>
<span class="sourceLineNo">26781</span> oai16data[it.oIndex] = ox;<a name="line.26781"></a>
<span class="sourceLineNo">26782</span> }<a name="line.26782"></a>
<span class="sourceLineNo">26783</span> } else {<a name="line.26783"></a>
<span class="sourceLineNo">26784</span> while (it.hasNext()) {<a name="line.26784"></a>
<span class="sourceLineNo">26785</span> final long ix = it.aLong;<a name="line.26785"></a>
<span class="sourceLineNo">26786</span> short ox;<a name="line.26786"></a>
<span class="sourceLineNo">26787</span> ox = (short) toLong(Math.log1p(ix));<a name="line.26787"></a>
<span class="sourceLineNo">26788</span> oai16data[it.oIndex] = ox;<a name="line.26788"></a>
<span class="sourceLineNo">26789</span> }<a name="line.26789"></a>
<span class="sourceLineNo">26790</span> }<a name="line.26790"></a>
<span class="sourceLineNo">26791</span> } else if (as == 1) {<a name="line.26791"></a>
<span class="sourceLineNo">26792</span> if (it.isOutputDouble()) {<a name="line.26792"></a>
<span class="sourceLineNo">26793</span> while (it.hasNext()) {<a name="line.26793"></a>
<span class="sourceLineNo">26794</span> final double ix = it.aDouble;<a name="line.26794"></a>
<span class="sourceLineNo">26795</span> short ox;<a name="line.26795"></a>
<span class="sourceLineNo">26796</span> ox = (short) toLong(Math.log1p(ix));<a name="line.26796"></a>
<span class="sourceLineNo">26797</span> for (int j = 0; j &lt; is; j++) {<a name="line.26797"></a>
<span class="sourceLineNo">26798</span> oai16data[it.oIndex + j] = ox;<a name="line.26798"></a>
<span class="sourceLineNo">26799</span> }<a name="line.26799"></a>
<span class="sourceLineNo">26800</span> }<a name="line.26800"></a>
<span class="sourceLineNo">26801</span> } else {<a name="line.26801"></a>
<span class="sourceLineNo">26802</span> while (it.hasNext()) {<a name="line.26802"></a>
<span class="sourceLineNo">26803</span> final long ix = it.aLong;<a name="line.26803"></a>
<span class="sourceLineNo">26804</span> short ox;<a name="line.26804"></a>
<span class="sourceLineNo">26805</span> ox = (short) toLong(Math.log1p(ix));<a name="line.26805"></a>
<span class="sourceLineNo">26806</span> for (int j = 0; j &lt; is; j++) {<a name="line.26806"></a>
<span class="sourceLineNo">26807</span> oai16data[it.oIndex + j] = ox;<a name="line.26807"></a>
<span class="sourceLineNo">26808</span> }<a name="line.26808"></a>
<span class="sourceLineNo">26809</span> }<a name="line.26809"></a>
<span class="sourceLineNo">26810</span> }<a name="line.26810"></a>
<span class="sourceLineNo">26811</span> } else {<a name="line.26811"></a>
<span class="sourceLineNo">26812</span> if (it.isOutputDouble()) {<a name="line.26812"></a>
<span class="sourceLineNo">26813</span> while (it.hasNext()) {<a name="line.26813"></a>
<span class="sourceLineNo">26814</span> for (int j = 0; j &lt; is; j++) {<a name="line.26814"></a>
<span class="sourceLineNo">26815</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.26815"></a>
<span class="sourceLineNo">26816</span> short ox;<a name="line.26816"></a>
<span class="sourceLineNo">26817</span> ox = (short) toLong(Math.log1p(ix));<a name="line.26817"></a>
<span class="sourceLineNo">26818</span> oai16data[it.oIndex + j] = ox;<a name="line.26818"></a>
<span class="sourceLineNo">26819</span> }<a name="line.26819"></a>
<span class="sourceLineNo">26820</span> }<a name="line.26820"></a>
<span class="sourceLineNo">26821</span> } else {<a name="line.26821"></a>
<span class="sourceLineNo">26822</span> while (it.hasNext()) {<a name="line.26822"></a>
<span class="sourceLineNo">26823</span> for (int j = 0; j &lt; is; j++) {<a name="line.26823"></a>
<span class="sourceLineNo">26824</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.26824"></a>
<span class="sourceLineNo">26825</span> short ox;<a name="line.26825"></a>
<span class="sourceLineNo">26826</span> ox = (short) toLong(Math.log1p(ix));<a name="line.26826"></a>
<span class="sourceLineNo">26827</span> oai16data[it.oIndex + j] = ox;<a name="line.26827"></a>
<span class="sourceLineNo">26828</span> }<a name="line.26828"></a>
<span class="sourceLineNo">26829</span> }<a name="line.26829"></a>
<span class="sourceLineNo">26830</span> }<a name="line.26830"></a>
<span class="sourceLineNo">26831</span> }<a name="line.26831"></a>
<span class="sourceLineNo">26832</span> break;<a name="line.26832"></a>
<span class="sourceLineNo">26833</span> case Dataset.ARRAYINT64:<a name="line.26833"></a>
<span class="sourceLineNo">26834</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.26834"></a>
<span class="sourceLineNo">26835</span> if (is == 1) {<a name="line.26835"></a>
<span class="sourceLineNo">26836</span> if (it.isOutputDouble()) {<a name="line.26836"></a>
<span class="sourceLineNo">26837</span> while (it.hasNext()) {<a name="line.26837"></a>
<span class="sourceLineNo">26838</span> final double ix = it.aDouble;<a name="line.26838"></a>
<span class="sourceLineNo">26839</span> long ox;<a name="line.26839"></a>
<span class="sourceLineNo">26840</span> ox = toLong(Math.log1p(ix));<a name="line.26840"></a>
<span class="sourceLineNo">26841</span> oai64data[it.oIndex] = ox;<a name="line.26841"></a>
<span class="sourceLineNo">26842</span> }<a name="line.26842"></a>
<span class="sourceLineNo">26843</span> } else {<a name="line.26843"></a>
<span class="sourceLineNo">26844</span> while (it.hasNext()) {<a name="line.26844"></a>
<span class="sourceLineNo">26845</span> final long ix = it.aLong;<a name="line.26845"></a>
<span class="sourceLineNo">26846</span> long ox;<a name="line.26846"></a>
<span class="sourceLineNo">26847</span> ox = toLong(Math.log1p(ix));<a name="line.26847"></a>
<span class="sourceLineNo">26848</span> oai64data[it.oIndex] = ox;<a name="line.26848"></a>
<span class="sourceLineNo">26849</span> }<a name="line.26849"></a>
<span class="sourceLineNo">26850</span> }<a name="line.26850"></a>
<span class="sourceLineNo">26851</span> } else if (as == 1) {<a name="line.26851"></a>
<span class="sourceLineNo">26852</span> if (it.isOutputDouble()) {<a name="line.26852"></a>
<span class="sourceLineNo">26853</span> while (it.hasNext()) {<a name="line.26853"></a>
<span class="sourceLineNo">26854</span> final double ix = it.aDouble;<a name="line.26854"></a>
<span class="sourceLineNo">26855</span> long ox;<a name="line.26855"></a>
<span class="sourceLineNo">26856</span> ox = toLong(Math.log1p(ix));<a name="line.26856"></a>
<span class="sourceLineNo">26857</span> for (int j = 0; j &lt; is; j++) {<a name="line.26857"></a>
<span class="sourceLineNo">26858</span> oai64data[it.oIndex + j] = ox;<a name="line.26858"></a>
<span class="sourceLineNo">26859</span> }<a name="line.26859"></a>
<span class="sourceLineNo">26860</span> }<a name="line.26860"></a>
<span class="sourceLineNo">26861</span> } else {<a name="line.26861"></a>
<span class="sourceLineNo">26862</span> while (it.hasNext()) {<a name="line.26862"></a>
<span class="sourceLineNo">26863</span> final long ix = it.aLong;<a name="line.26863"></a>
<span class="sourceLineNo">26864</span> long ox;<a name="line.26864"></a>
<span class="sourceLineNo">26865</span> ox = toLong(Math.log1p(ix));<a name="line.26865"></a>
<span class="sourceLineNo">26866</span> for (int j = 0; j &lt; is; j++) {<a name="line.26866"></a>
<span class="sourceLineNo">26867</span> oai64data[it.oIndex + j] = ox;<a name="line.26867"></a>
<span class="sourceLineNo">26868</span> }<a name="line.26868"></a>
<span class="sourceLineNo">26869</span> }<a name="line.26869"></a>
<span class="sourceLineNo">26870</span> }<a name="line.26870"></a>
<span class="sourceLineNo">26871</span> } else {<a name="line.26871"></a>
<span class="sourceLineNo">26872</span> if (it.isOutputDouble()) {<a name="line.26872"></a>
<span class="sourceLineNo">26873</span> while (it.hasNext()) {<a name="line.26873"></a>
<span class="sourceLineNo">26874</span> for (int j = 0; j &lt; is; j++) {<a name="line.26874"></a>
<span class="sourceLineNo">26875</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.26875"></a>
<span class="sourceLineNo">26876</span> long ox;<a name="line.26876"></a>
<span class="sourceLineNo">26877</span> ox = toLong(Math.log1p(ix));<a name="line.26877"></a>
<span class="sourceLineNo">26878</span> oai64data[it.oIndex + j] = ox;<a name="line.26878"></a>
<span class="sourceLineNo">26879</span> }<a name="line.26879"></a>
<span class="sourceLineNo">26880</span> }<a name="line.26880"></a>
<span class="sourceLineNo">26881</span> } else {<a name="line.26881"></a>
<span class="sourceLineNo">26882</span> while (it.hasNext()) {<a name="line.26882"></a>
<span class="sourceLineNo">26883</span> for (int j = 0; j &lt; is; j++) {<a name="line.26883"></a>
<span class="sourceLineNo">26884</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.26884"></a>
<span class="sourceLineNo">26885</span> long ox;<a name="line.26885"></a>
<span class="sourceLineNo">26886</span> ox = toLong(Math.log1p(ix));<a name="line.26886"></a>
<span class="sourceLineNo">26887</span> oai64data[it.oIndex + j] = ox;<a name="line.26887"></a>
<span class="sourceLineNo">26888</span> }<a name="line.26888"></a>
<span class="sourceLineNo">26889</span> }<a name="line.26889"></a>
<span class="sourceLineNo">26890</span> }<a name="line.26890"></a>
<span class="sourceLineNo">26891</span> }<a name="line.26891"></a>
<span class="sourceLineNo">26892</span> break;<a name="line.26892"></a>
<span class="sourceLineNo">26893</span> case Dataset.ARRAYINT32:<a name="line.26893"></a>
<span class="sourceLineNo">26894</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.26894"></a>
<span class="sourceLineNo">26895</span> if (is == 1) {<a name="line.26895"></a>
<span class="sourceLineNo">26896</span> if (it.isOutputDouble()) {<a name="line.26896"></a>
<span class="sourceLineNo">26897</span> while (it.hasNext()) {<a name="line.26897"></a>
<span class="sourceLineNo">26898</span> final double ix = it.aDouble;<a name="line.26898"></a>
<span class="sourceLineNo">26899</span> int ox;<a name="line.26899"></a>
<span class="sourceLineNo">26900</span> ox = (int) toLong(Math.log1p(ix));<a name="line.26900"></a>
<span class="sourceLineNo">26901</span> oai32data[it.oIndex] = ox;<a name="line.26901"></a>
<span class="sourceLineNo">26902</span> }<a name="line.26902"></a>
<span class="sourceLineNo">26903</span> } else {<a name="line.26903"></a>
<span class="sourceLineNo">26904</span> while (it.hasNext()) {<a name="line.26904"></a>
<span class="sourceLineNo">26905</span> final long ix = it.aLong;<a name="line.26905"></a>
<span class="sourceLineNo">26906</span> int ox;<a name="line.26906"></a>
<span class="sourceLineNo">26907</span> ox = (int) toLong(Math.log1p(ix));<a name="line.26907"></a>
<span class="sourceLineNo">26908</span> oai32data[it.oIndex] = ox;<a name="line.26908"></a>
<span class="sourceLineNo">26909</span> }<a name="line.26909"></a>
<span class="sourceLineNo">26910</span> }<a name="line.26910"></a>
<span class="sourceLineNo">26911</span> } else if (as == 1) {<a name="line.26911"></a>
<span class="sourceLineNo">26912</span> if (it.isOutputDouble()) {<a name="line.26912"></a>
<span class="sourceLineNo">26913</span> while (it.hasNext()) {<a name="line.26913"></a>
<span class="sourceLineNo">26914</span> final double ix = it.aDouble;<a name="line.26914"></a>
<span class="sourceLineNo">26915</span> int ox;<a name="line.26915"></a>
<span class="sourceLineNo">26916</span> ox = (int) toLong(Math.log1p(ix));<a name="line.26916"></a>
<span class="sourceLineNo">26917</span> for (int j = 0; j &lt; is; j++) {<a name="line.26917"></a>
<span class="sourceLineNo">26918</span> oai32data[it.oIndex + j] = ox;<a name="line.26918"></a>
<span class="sourceLineNo">26919</span> }<a name="line.26919"></a>
<span class="sourceLineNo">26920</span> }<a name="line.26920"></a>
<span class="sourceLineNo">26921</span> } else {<a name="line.26921"></a>
<span class="sourceLineNo">26922</span> while (it.hasNext()) {<a name="line.26922"></a>
<span class="sourceLineNo">26923</span> final long ix = it.aLong;<a name="line.26923"></a>
<span class="sourceLineNo">26924</span> int ox;<a name="line.26924"></a>
<span class="sourceLineNo">26925</span> ox = (int) toLong(Math.log1p(ix));<a name="line.26925"></a>
<span class="sourceLineNo">26926</span> for (int j = 0; j &lt; is; j++) {<a name="line.26926"></a>
<span class="sourceLineNo">26927</span> oai32data[it.oIndex + j] = ox;<a name="line.26927"></a>
<span class="sourceLineNo">26928</span> }<a name="line.26928"></a>
<span class="sourceLineNo">26929</span> }<a name="line.26929"></a>
<span class="sourceLineNo">26930</span> }<a name="line.26930"></a>
<span class="sourceLineNo">26931</span> } else {<a name="line.26931"></a>
<span class="sourceLineNo">26932</span> if (it.isOutputDouble()) {<a name="line.26932"></a>
<span class="sourceLineNo">26933</span> while (it.hasNext()) {<a name="line.26933"></a>
<span class="sourceLineNo">26934</span> for (int j = 0; j &lt; is; j++) {<a name="line.26934"></a>
<span class="sourceLineNo">26935</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.26935"></a>
<span class="sourceLineNo">26936</span> int ox;<a name="line.26936"></a>
<span class="sourceLineNo">26937</span> ox = (int) toLong(Math.log1p(ix));<a name="line.26937"></a>
<span class="sourceLineNo">26938</span> oai32data[it.oIndex + j] = ox;<a name="line.26938"></a>
<span class="sourceLineNo">26939</span> }<a name="line.26939"></a>
<span class="sourceLineNo">26940</span> }<a name="line.26940"></a>
<span class="sourceLineNo">26941</span> } else {<a name="line.26941"></a>
<span class="sourceLineNo">26942</span> while (it.hasNext()) {<a name="line.26942"></a>
<span class="sourceLineNo">26943</span> for (int j = 0; j &lt; is; j++) {<a name="line.26943"></a>
<span class="sourceLineNo">26944</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.26944"></a>
<span class="sourceLineNo">26945</span> int ox;<a name="line.26945"></a>
<span class="sourceLineNo">26946</span> ox = (int) toLong(Math.log1p(ix));<a name="line.26946"></a>
<span class="sourceLineNo">26947</span> oai32data[it.oIndex + j] = ox;<a name="line.26947"></a>
<span class="sourceLineNo">26948</span> }<a name="line.26948"></a>
<span class="sourceLineNo">26949</span> }<a name="line.26949"></a>
<span class="sourceLineNo">26950</span> }<a name="line.26950"></a>
<span class="sourceLineNo">26951</span> }<a name="line.26951"></a>
<span class="sourceLineNo">26952</span> break;<a name="line.26952"></a>
<span class="sourceLineNo">26953</span> case Dataset.FLOAT32:<a name="line.26953"></a>
<span class="sourceLineNo">26954</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.26954"></a>
<span class="sourceLineNo">26955</span> if (it.isOutputDouble()) {<a name="line.26955"></a>
<span class="sourceLineNo">26956</span> while (it.hasNext()) {<a name="line.26956"></a>
<span class="sourceLineNo">26957</span> final double ix = it.aDouble;<a name="line.26957"></a>
<span class="sourceLineNo">26958</span> float ox;<a name="line.26958"></a>
<span class="sourceLineNo">26959</span> ox = (float) (Math.log1p(ix));<a name="line.26959"></a>
<span class="sourceLineNo">26960</span> of32data[it.oIndex] = ox;<a name="line.26960"></a>
<span class="sourceLineNo">26961</span> }<a name="line.26961"></a>
<span class="sourceLineNo">26962</span> } else {<a name="line.26962"></a>
<span class="sourceLineNo">26963</span> while (it.hasNext()) {<a name="line.26963"></a>
<span class="sourceLineNo">26964</span> final long ix = it.aLong;<a name="line.26964"></a>
<span class="sourceLineNo">26965</span> float ox;<a name="line.26965"></a>
<span class="sourceLineNo">26966</span> ox = (float) (Math.log1p(ix));<a name="line.26966"></a>
<span class="sourceLineNo">26967</span> of32data[it.oIndex] = ox;<a name="line.26967"></a>
<span class="sourceLineNo">26968</span> }<a name="line.26968"></a>
<span class="sourceLineNo">26969</span> }<a name="line.26969"></a>
<span class="sourceLineNo">26970</span> break;<a name="line.26970"></a>
<span class="sourceLineNo">26971</span> case Dataset.FLOAT64:<a name="line.26971"></a>
<span class="sourceLineNo">26972</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.26972"></a>
<span class="sourceLineNo">26973</span> if (it.isOutputDouble()) {<a name="line.26973"></a>
<span class="sourceLineNo">26974</span> while (it.hasNext()) {<a name="line.26974"></a>
<span class="sourceLineNo">26975</span> final double ix = it.aDouble;<a name="line.26975"></a>
<span class="sourceLineNo">26976</span> double ox;<a name="line.26976"></a>
<span class="sourceLineNo">26977</span> ox = (Math.log1p(ix));<a name="line.26977"></a>
<span class="sourceLineNo">26978</span> of64data[it.oIndex] = ox;<a name="line.26978"></a>
<span class="sourceLineNo">26979</span> }<a name="line.26979"></a>
<span class="sourceLineNo">26980</span> } else {<a name="line.26980"></a>
<span class="sourceLineNo">26981</span> while (it.hasNext()) {<a name="line.26981"></a>
<span class="sourceLineNo">26982</span> final long ix = it.aLong;<a name="line.26982"></a>
<span class="sourceLineNo">26983</span> double ox;<a name="line.26983"></a>
<span class="sourceLineNo">26984</span> ox = (Math.log1p(ix));<a name="line.26984"></a>
<span class="sourceLineNo">26985</span> of64data[it.oIndex] = ox;<a name="line.26985"></a>
<span class="sourceLineNo">26986</span> }<a name="line.26986"></a>
<span class="sourceLineNo">26987</span> }<a name="line.26987"></a>
<span class="sourceLineNo">26988</span> break;<a name="line.26988"></a>
<span class="sourceLineNo">26989</span> case Dataset.ARRAYFLOAT32:<a name="line.26989"></a>
<span class="sourceLineNo">26990</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.26990"></a>
<span class="sourceLineNo">26991</span> if (is == 1) {<a name="line.26991"></a>
<span class="sourceLineNo">26992</span> if (it.isOutputDouble()) {<a name="line.26992"></a>
<span class="sourceLineNo">26993</span> while (it.hasNext()) {<a name="line.26993"></a>
<span class="sourceLineNo">26994</span> final double ix = it.aDouble;<a name="line.26994"></a>
<span class="sourceLineNo">26995</span> float ox;<a name="line.26995"></a>
<span class="sourceLineNo">26996</span> ox = (float) (Math.log1p(ix));<a name="line.26996"></a>
<span class="sourceLineNo">26997</span> oaf32data[it.oIndex] = ox;<a name="line.26997"></a>
<span class="sourceLineNo">26998</span> }<a name="line.26998"></a>
<span class="sourceLineNo">26999</span> } else {<a name="line.26999"></a>
<span class="sourceLineNo">27000</span> while (it.hasNext()) {<a name="line.27000"></a>
<span class="sourceLineNo">27001</span> final long ix = it.aLong;<a name="line.27001"></a>
<span class="sourceLineNo">27002</span> float ox;<a name="line.27002"></a>
<span class="sourceLineNo">27003</span> ox = (float) (Math.log1p(ix));<a name="line.27003"></a>
<span class="sourceLineNo">27004</span> oaf32data[it.oIndex] = ox;<a name="line.27004"></a>
<span class="sourceLineNo">27005</span> }<a name="line.27005"></a>
<span class="sourceLineNo">27006</span> }<a name="line.27006"></a>
<span class="sourceLineNo">27007</span> } else if (as == 1) {<a name="line.27007"></a>
<span class="sourceLineNo">27008</span> if (it.isOutputDouble()) {<a name="line.27008"></a>
<span class="sourceLineNo">27009</span> while (it.hasNext()) {<a name="line.27009"></a>
<span class="sourceLineNo">27010</span> final double ix = it.aDouble;<a name="line.27010"></a>
<span class="sourceLineNo">27011</span> float ox;<a name="line.27011"></a>
<span class="sourceLineNo">27012</span> ox = (float) (Math.log1p(ix));<a name="line.27012"></a>
<span class="sourceLineNo">27013</span> for (int j = 0; j &lt; is; j++) {<a name="line.27013"></a>
<span class="sourceLineNo">27014</span> oaf32data[it.oIndex + j] = ox;<a name="line.27014"></a>
<span class="sourceLineNo">27015</span> }<a name="line.27015"></a>
<span class="sourceLineNo">27016</span> }<a name="line.27016"></a>
<span class="sourceLineNo">27017</span> } else {<a name="line.27017"></a>
<span class="sourceLineNo">27018</span> while (it.hasNext()) {<a name="line.27018"></a>
<span class="sourceLineNo">27019</span> final long ix = it.aLong;<a name="line.27019"></a>
<span class="sourceLineNo">27020</span> float ox;<a name="line.27020"></a>
<span class="sourceLineNo">27021</span> ox = (float) (Math.log1p(ix));<a name="line.27021"></a>
<span class="sourceLineNo">27022</span> for (int j = 0; j &lt; is; j++) {<a name="line.27022"></a>
<span class="sourceLineNo">27023</span> oaf32data[it.oIndex + j] = ox;<a name="line.27023"></a>
<span class="sourceLineNo">27024</span> }<a name="line.27024"></a>
<span class="sourceLineNo">27025</span> }<a name="line.27025"></a>
<span class="sourceLineNo">27026</span> }<a name="line.27026"></a>
<span class="sourceLineNo">27027</span> } else {<a name="line.27027"></a>
<span class="sourceLineNo">27028</span> if (it.isOutputDouble()) {<a name="line.27028"></a>
<span class="sourceLineNo">27029</span> while (it.hasNext()) {<a name="line.27029"></a>
<span class="sourceLineNo">27030</span> for (int j = 0; j &lt; is; j++) {<a name="line.27030"></a>
<span class="sourceLineNo">27031</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.27031"></a>
<span class="sourceLineNo">27032</span> float ox;<a name="line.27032"></a>
<span class="sourceLineNo">27033</span> ox = (float) (Math.log1p(ix));<a name="line.27033"></a>
<span class="sourceLineNo">27034</span> oaf32data[it.oIndex + j] = ox;<a name="line.27034"></a>
<span class="sourceLineNo">27035</span> }<a name="line.27035"></a>
<span class="sourceLineNo">27036</span> }<a name="line.27036"></a>
<span class="sourceLineNo">27037</span> } else {<a name="line.27037"></a>
<span class="sourceLineNo">27038</span> while (it.hasNext()) {<a name="line.27038"></a>
<span class="sourceLineNo">27039</span> for (int j = 0; j &lt; is; j++) {<a name="line.27039"></a>
<span class="sourceLineNo">27040</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.27040"></a>
<span class="sourceLineNo">27041</span> float ox;<a name="line.27041"></a>
<span class="sourceLineNo">27042</span> ox = (float) (Math.log1p(ix));<a name="line.27042"></a>
<span class="sourceLineNo">27043</span> oaf32data[it.oIndex + j] = ox;<a name="line.27043"></a>
<span class="sourceLineNo">27044</span> }<a name="line.27044"></a>
<span class="sourceLineNo">27045</span> }<a name="line.27045"></a>
<span class="sourceLineNo">27046</span> }<a name="line.27046"></a>
<span class="sourceLineNo">27047</span> }<a name="line.27047"></a>
<span class="sourceLineNo">27048</span> break;<a name="line.27048"></a>
<span class="sourceLineNo">27049</span> case Dataset.ARRAYFLOAT64:<a name="line.27049"></a>
<span class="sourceLineNo">27050</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.27050"></a>
<span class="sourceLineNo">27051</span> if (is == 1) {<a name="line.27051"></a>
<span class="sourceLineNo">27052</span> if (it.isOutputDouble()) {<a name="line.27052"></a>
<span class="sourceLineNo">27053</span> while (it.hasNext()) {<a name="line.27053"></a>
<span class="sourceLineNo">27054</span> final double ix = it.aDouble;<a name="line.27054"></a>
<span class="sourceLineNo">27055</span> double ox;<a name="line.27055"></a>
<span class="sourceLineNo">27056</span> ox = (Math.log1p(ix));<a name="line.27056"></a>
<span class="sourceLineNo">27057</span> oaf64data[it.oIndex] = ox;<a name="line.27057"></a>
<span class="sourceLineNo">27058</span> }<a name="line.27058"></a>
<span class="sourceLineNo">27059</span> } else {<a name="line.27059"></a>
<span class="sourceLineNo">27060</span> while (it.hasNext()) {<a name="line.27060"></a>
<span class="sourceLineNo">27061</span> final long ix = it.aLong;<a name="line.27061"></a>
<span class="sourceLineNo">27062</span> double ox;<a name="line.27062"></a>
<span class="sourceLineNo">27063</span> ox = (Math.log1p(ix));<a name="line.27063"></a>
<span class="sourceLineNo">27064</span> oaf64data[it.oIndex] = ox;<a name="line.27064"></a>
<span class="sourceLineNo">27065</span> }<a name="line.27065"></a>
<span class="sourceLineNo">27066</span> }<a name="line.27066"></a>
<span class="sourceLineNo">27067</span> } else if (as == 1) {<a name="line.27067"></a>
<span class="sourceLineNo">27068</span> if (it.isOutputDouble()) {<a name="line.27068"></a>
<span class="sourceLineNo">27069</span> while (it.hasNext()) {<a name="line.27069"></a>
<span class="sourceLineNo">27070</span> final double ix = it.aDouble;<a name="line.27070"></a>
<span class="sourceLineNo">27071</span> double ox;<a name="line.27071"></a>
<span class="sourceLineNo">27072</span> ox = (Math.log1p(ix));<a name="line.27072"></a>
<span class="sourceLineNo">27073</span> for (int j = 0; j &lt; is; j++) {<a name="line.27073"></a>
<span class="sourceLineNo">27074</span> oaf64data[it.oIndex + j] = ox;<a name="line.27074"></a>
<span class="sourceLineNo">27075</span> }<a name="line.27075"></a>
<span class="sourceLineNo">27076</span> }<a name="line.27076"></a>
<span class="sourceLineNo">27077</span> } else {<a name="line.27077"></a>
<span class="sourceLineNo">27078</span> while (it.hasNext()) {<a name="line.27078"></a>
<span class="sourceLineNo">27079</span> final long ix = it.aLong;<a name="line.27079"></a>
<span class="sourceLineNo">27080</span> double ox;<a name="line.27080"></a>
<span class="sourceLineNo">27081</span> ox = (Math.log1p(ix));<a name="line.27081"></a>
<span class="sourceLineNo">27082</span> for (int j = 0; j &lt; is; j++) {<a name="line.27082"></a>
<span class="sourceLineNo">27083</span> oaf64data[it.oIndex + j] = ox;<a name="line.27083"></a>
<span class="sourceLineNo">27084</span> }<a name="line.27084"></a>
<span class="sourceLineNo">27085</span> }<a name="line.27085"></a>
<span class="sourceLineNo">27086</span> }<a name="line.27086"></a>
<span class="sourceLineNo">27087</span> } else {<a name="line.27087"></a>
<span class="sourceLineNo">27088</span> if (it.isOutputDouble()) {<a name="line.27088"></a>
<span class="sourceLineNo">27089</span> while (it.hasNext()) {<a name="line.27089"></a>
<span class="sourceLineNo">27090</span> for (int j = 0; j &lt; is; j++) {<a name="line.27090"></a>
<span class="sourceLineNo">27091</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.27091"></a>
<span class="sourceLineNo">27092</span> double ox;<a name="line.27092"></a>
<span class="sourceLineNo">27093</span> ox = (Math.log1p(ix));<a name="line.27093"></a>
<span class="sourceLineNo">27094</span> oaf64data[it.oIndex + j] = ox;<a name="line.27094"></a>
<span class="sourceLineNo">27095</span> }<a name="line.27095"></a>
<span class="sourceLineNo">27096</span> }<a name="line.27096"></a>
<span class="sourceLineNo">27097</span> } else {<a name="line.27097"></a>
<span class="sourceLineNo">27098</span> while (it.hasNext()) {<a name="line.27098"></a>
<span class="sourceLineNo">27099</span> for (int j = 0; j &lt; is; j++) {<a name="line.27099"></a>
<span class="sourceLineNo">27100</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.27100"></a>
<span class="sourceLineNo">27101</span> double ox;<a name="line.27101"></a>
<span class="sourceLineNo">27102</span> ox = (Math.log1p(ix));<a name="line.27102"></a>
<span class="sourceLineNo">27103</span> oaf64data[it.oIndex + j] = ox;<a name="line.27103"></a>
<span class="sourceLineNo">27104</span> }<a name="line.27104"></a>
<span class="sourceLineNo">27105</span> }<a name="line.27105"></a>
<span class="sourceLineNo">27106</span> }<a name="line.27106"></a>
<span class="sourceLineNo">27107</span> }<a name="line.27107"></a>
<span class="sourceLineNo">27108</span> break;<a name="line.27108"></a>
<span class="sourceLineNo">27109</span> case Dataset.COMPLEX64:<a name="line.27109"></a>
<span class="sourceLineNo">27110</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.27110"></a>
<span class="sourceLineNo">27111</span> if (!da.isComplex()) {<a name="line.27111"></a>
<span class="sourceLineNo">27112</span> if (it.isOutputDouble()) {<a name="line.27112"></a>
<span class="sourceLineNo">27113</span> final double iy = 0;<a name="line.27113"></a>
<span class="sourceLineNo">27114</span> while (it.hasNext()) {<a name="line.27114"></a>
<span class="sourceLineNo">27115</span> final double ix = it.aDouble;<a name="line.27115"></a>
<span class="sourceLineNo">27116</span> float ox;<a name="line.27116"></a>
<span class="sourceLineNo">27117</span> float oy;<a name="line.27117"></a>
<span class="sourceLineNo">27118</span> ox = (float) (0.5*Math.log1p(ix*ix + 2.*ix + iy*iy));<a name="line.27118"></a>
<span class="sourceLineNo">27119</span> oy = (float) (Math.atan2(iy, ix+1));<a name="line.27119"></a>
<span class="sourceLineNo">27120</span> oc64data[it.oIndex] = ox;<a name="line.27120"></a>
<span class="sourceLineNo">27121</span> oc64data[it.oIndex + 1] = oy;<a name="line.27121"></a>
<span class="sourceLineNo">27122</span> }<a name="line.27122"></a>
<span class="sourceLineNo">27123</span> } else {<a name="line.27123"></a>
<span class="sourceLineNo">27124</span> final long iy = 0;<a name="line.27124"></a>
<span class="sourceLineNo">27125</span> while (it.hasNext()) {<a name="line.27125"></a>
<span class="sourceLineNo">27126</span> final long ix = it.aLong;<a name="line.27126"></a>
<span class="sourceLineNo">27127</span> float ox;<a name="line.27127"></a>
<span class="sourceLineNo">27128</span> float oy;<a name="line.27128"></a>
<span class="sourceLineNo">27129</span> ox = (float) toLong(0.5*Math.log1p(ix*ix + 2.*ix + iy*iy));<a name="line.27129"></a>
<span class="sourceLineNo">27130</span> oy = (float) toLong(Math.atan2(iy, ix+1));<a name="line.27130"></a>
<span class="sourceLineNo">27131</span> oc64data[it.oIndex] = ox;<a name="line.27131"></a>
<span class="sourceLineNo">27132</span> oc64data[it.oIndex + 1] = oy;<a name="line.27132"></a>
<span class="sourceLineNo">27133</span> }<a name="line.27133"></a>
<span class="sourceLineNo">27134</span> }<a name="line.27134"></a>
<span class="sourceLineNo">27135</span> } else {<a name="line.27135"></a>
<span class="sourceLineNo">27136</span> while (it.hasNext()) {<a name="line.27136"></a>
<span class="sourceLineNo">27137</span> final double ix = it.aDouble;<a name="line.27137"></a>
<span class="sourceLineNo">27138</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.27138"></a>
<span class="sourceLineNo">27139</span> float ox;<a name="line.27139"></a>
<span class="sourceLineNo">27140</span> float oy;<a name="line.27140"></a>
<span class="sourceLineNo">27141</span> ox = (float) (0.5*Math.log1p(ix*ix + 2.*ix + iy*iy));<a name="line.27141"></a>
<span class="sourceLineNo">27142</span> oy = (float) (Math.atan2(iy, ix+1));<a name="line.27142"></a>
<span class="sourceLineNo">27143</span> oc64data[it.oIndex] = ox;<a name="line.27143"></a>
<span class="sourceLineNo">27144</span> oc64data[it.oIndex + 1] = oy;<a name="line.27144"></a>
<span class="sourceLineNo">27145</span> }<a name="line.27145"></a>
<span class="sourceLineNo">27146</span> }<a name="line.27146"></a>
<span class="sourceLineNo">27147</span> break;<a name="line.27147"></a>
<span class="sourceLineNo">27148</span> case Dataset.COMPLEX128:<a name="line.27148"></a>
<span class="sourceLineNo">27149</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.27149"></a>
<span class="sourceLineNo">27150</span> if (!da.isComplex()) {<a name="line.27150"></a>
<span class="sourceLineNo">27151</span> if (it.isOutputDouble()) {<a name="line.27151"></a>
<span class="sourceLineNo">27152</span> final double iy = 0;<a name="line.27152"></a>
<span class="sourceLineNo">27153</span> while (it.hasNext()) {<a name="line.27153"></a>
<span class="sourceLineNo">27154</span> final double ix = it.aDouble;<a name="line.27154"></a>
<span class="sourceLineNo">27155</span> double ox;<a name="line.27155"></a>
<span class="sourceLineNo">27156</span> double oy;<a name="line.27156"></a>
<span class="sourceLineNo">27157</span> ox = (0.5*Math.log1p(ix*ix + 2.*ix + iy*iy));<a name="line.27157"></a>
<span class="sourceLineNo">27158</span> oy = (Math.atan2(iy, ix+1));<a name="line.27158"></a>
<span class="sourceLineNo">27159</span> oc128data[it.oIndex] = ox;<a name="line.27159"></a>
<span class="sourceLineNo">27160</span> oc128data[it.oIndex + 1] = oy;<a name="line.27160"></a>
<span class="sourceLineNo">27161</span> }<a name="line.27161"></a>
<span class="sourceLineNo">27162</span> } else {<a name="line.27162"></a>
<span class="sourceLineNo">27163</span> final long iy = 0;<a name="line.27163"></a>
<span class="sourceLineNo">27164</span> while (it.hasNext()) {<a name="line.27164"></a>
<span class="sourceLineNo">27165</span> final long ix = it.aLong;<a name="line.27165"></a>
<span class="sourceLineNo">27166</span> double ox;<a name="line.27166"></a>
<span class="sourceLineNo">27167</span> double oy;<a name="line.27167"></a>
<span class="sourceLineNo">27168</span> ox = (double) (0.5*Math.log1p(ix*ix + 2.*ix + iy*iy));<a name="line.27168"></a>
<span class="sourceLineNo">27169</span> oy = (double) (Math.atan2(iy, ix+1));<a name="line.27169"></a>
<span class="sourceLineNo">27170</span> oc128data[it.oIndex] = ox;<a name="line.27170"></a>
<span class="sourceLineNo">27171</span> oc128data[it.oIndex + 1] = oy;<a name="line.27171"></a>
<span class="sourceLineNo">27172</span> }<a name="line.27172"></a>
<span class="sourceLineNo">27173</span> }<a name="line.27173"></a>
<span class="sourceLineNo">27174</span> } else {<a name="line.27174"></a>
<span class="sourceLineNo">27175</span> while (it.hasNext()) {<a name="line.27175"></a>
<span class="sourceLineNo">27176</span> final double ix = it.aDouble;<a name="line.27176"></a>
<span class="sourceLineNo">27177</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.27177"></a>
<span class="sourceLineNo">27178</span> double ox;<a name="line.27178"></a>
<span class="sourceLineNo">27179</span> double oy;<a name="line.27179"></a>
<span class="sourceLineNo">27180</span> ox = (0.5*Math.log1p(ix*ix + 2.*ix + iy*iy));<a name="line.27180"></a>
<span class="sourceLineNo">27181</span> oy = (Math.atan2(iy, ix+1));<a name="line.27181"></a>
<span class="sourceLineNo">27182</span> oc128data[it.oIndex] = ox;<a name="line.27182"></a>
<span class="sourceLineNo">27183</span> oc128data[it.oIndex + 1] = oy;<a name="line.27183"></a>
<span class="sourceLineNo">27184</span> }<a name="line.27184"></a>
<span class="sourceLineNo">27185</span> }<a name="line.27185"></a>
<span class="sourceLineNo">27186</span> break;<a name="line.27186"></a>
<span class="sourceLineNo">27187</span> default:<a name="line.27187"></a>
<span class="sourceLineNo">27188</span> throw new IllegalArgumentException("log1p supports integer, compound integer, real, compound real, complex datasets only");<a name="line.27188"></a>
<span class="sourceLineNo">27189</span> }<a name="line.27189"></a>
<span class="sourceLineNo">27190</span><a name="line.27190"></a>
<span class="sourceLineNo">27191</span> addFunctionName(result, "log1p");<a name="line.27191"></a>
<span class="sourceLineNo">27192</span> return result;<a name="line.27192"></a>
<span class="sourceLineNo">27193</span> }<a name="line.27193"></a>
<span class="sourceLineNo">27194</span><a name="line.27194"></a>
<span class="sourceLineNo">27195</span> /**<a name="line.27195"></a>
<span class="sourceLineNo">27196</span> * exp - evaluate the exponential function on each element of the dataset<a name="line.27196"></a>
<span class="sourceLineNo">27197</span> * @param a<a name="line.27197"></a>
<span class="sourceLineNo">27198</span> * @return dataset<a name="line.27198"></a>
<span class="sourceLineNo">27199</span> */<a name="line.27199"></a>
<span class="sourceLineNo">27200</span> public static Dataset exp(final Object a) {<a name="line.27200"></a>
<span class="sourceLineNo">27201</span> return exp(a, null);<a name="line.27201"></a>
<span class="sourceLineNo">27202</span> }<a name="line.27202"></a>
<span class="sourceLineNo">27203</span><a name="line.27203"></a>
<span class="sourceLineNo">27204</span> /**<a name="line.27204"></a>
<span class="sourceLineNo">27205</span> * exp - evaluate the exponential function on each element of the dataset<a name="line.27205"></a>
<span class="sourceLineNo">27206</span> * @param a<a name="line.27206"></a>
<span class="sourceLineNo">27207</span> * @param o output can be null - in which case, a new dataset is created<a name="line.27207"></a>
<span class="sourceLineNo">27208</span> * @return dataset<a name="line.27208"></a>
<span class="sourceLineNo">27209</span> */<a name="line.27209"></a>
<span class="sourceLineNo">27210</span> public static Dataset exp(final Object a, final Dataset o) {<a name="line.27210"></a>
<span class="sourceLineNo">27211</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.27211"></a>
<span class="sourceLineNo">27212</span> SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true);<a name="line.27212"></a>
<span class="sourceLineNo">27213</span> final Dataset result = it.getOutput();<a name="line.27213"></a>
<span class="sourceLineNo">27214</span> if (!result.isComplex()) {<a name="line.27214"></a>
<span class="sourceLineNo">27215</span> if (da.isComplex()) {<a name="line.27215"></a>
<span class="sourceLineNo">27216</span> da = da.getRealView();<a name="line.27216"></a>
<span class="sourceLineNo">27217</span> it = new SingleInputBroadcastIterator(da, result, true);<a name="line.27217"></a>
<span class="sourceLineNo">27218</span> }<a name="line.27218"></a>
<span class="sourceLineNo">27219</span> }<a name="line.27219"></a>
<span class="sourceLineNo">27220</span> final int is = result.getElementsPerItem();<a name="line.27220"></a>
<span class="sourceLineNo">27221</span> final int as = da.getElementsPerItem();<a name="line.27221"></a>
<span class="sourceLineNo">27222</span> final int dt = result.getDType();<a name="line.27222"></a>
<span class="sourceLineNo">27223</span><a name="line.27223"></a>
<span class="sourceLineNo">27224</span> switch(dt) {<a name="line.27224"></a>
<span class="sourceLineNo">27225</span> case Dataset.INT8:<a name="line.27225"></a>
<span class="sourceLineNo">27226</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.27226"></a>
<span class="sourceLineNo">27227</span> if (it.isOutputDouble()) {<a name="line.27227"></a>
<span class="sourceLineNo">27228</span> while (it.hasNext()) {<a name="line.27228"></a>
<span class="sourceLineNo">27229</span> final double ix = it.aDouble;<a name="line.27229"></a>
<span class="sourceLineNo">27230</span> byte ox;<a name="line.27230"></a>
<span class="sourceLineNo">27231</span> ox = (byte) toLong(Math.exp(ix));<a name="line.27231"></a>
<span class="sourceLineNo">27232</span> oi8data[it.oIndex] = ox;<a name="line.27232"></a>
<span class="sourceLineNo">27233</span> }<a name="line.27233"></a>
<span class="sourceLineNo">27234</span> } else {<a name="line.27234"></a>
<span class="sourceLineNo">27235</span> while (it.hasNext()) {<a name="line.27235"></a>
<span class="sourceLineNo">27236</span> final long ix = it.aLong;<a name="line.27236"></a>
<span class="sourceLineNo">27237</span> byte ox;<a name="line.27237"></a>
<span class="sourceLineNo">27238</span> ox = (byte) toLong(Math.exp(ix));<a name="line.27238"></a>
<span class="sourceLineNo">27239</span> oi8data[it.oIndex] = ox;<a name="line.27239"></a>
<span class="sourceLineNo">27240</span> }<a name="line.27240"></a>
<span class="sourceLineNo">27241</span> }<a name="line.27241"></a>
<span class="sourceLineNo">27242</span> break;<a name="line.27242"></a>
<span class="sourceLineNo">27243</span> case Dataset.INT16:<a name="line.27243"></a>
<span class="sourceLineNo">27244</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.27244"></a>
<span class="sourceLineNo">27245</span> if (it.isOutputDouble()) {<a name="line.27245"></a>
<span class="sourceLineNo">27246</span> while (it.hasNext()) {<a name="line.27246"></a>
<span class="sourceLineNo">27247</span> final double ix = it.aDouble;<a name="line.27247"></a>
<span class="sourceLineNo">27248</span> short ox;<a name="line.27248"></a>
<span class="sourceLineNo">27249</span> ox = (short) toLong(Math.exp(ix));<a name="line.27249"></a>
<span class="sourceLineNo">27250</span> oi16data[it.oIndex] = ox;<a name="line.27250"></a>
<span class="sourceLineNo">27251</span> }<a name="line.27251"></a>
<span class="sourceLineNo">27252</span> } else {<a name="line.27252"></a>
<span class="sourceLineNo">27253</span> while (it.hasNext()) {<a name="line.27253"></a>
<span class="sourceLineNo">27254</span> final long ix = it.aLong;<a name="line.27254"></a>
<span class="sourceLineNo">27255</span> short ox;<a name="line.27255"></a>
<span class="sourceLineNo">27256</span> ox = (short) toLong(Math.exp(ix));<a name="line.27256"></a>
<span class="sourceLineNo">27257</span> oi16data[it.oIndex] = ox;<a name="line.27257"></a>
<span class="sourceLineNo">27258</span> }<a name="line.27258"></a>
<span class="sourceLineNo">27259</span> }<a name="line.27259"></a>
<span class="sourceLineNo">27260</span> break;<a name="line.27260"></a>
<span class="sourceLineNo">27261</span> case Dataset.INT64:<a name="line.27261"></a>
<span class="sourceLineNo">27262</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.27262"></a>
<span class="sourceLineNo">27263</span> if (it.isOutputDouble()) {<a name="line.27263"></a>
<span class="sourceLineNo">27264</span> while (it.hasNext()) {<a name="line.27264"></a>
<span class="sourceLineNo">27265</span> final double ix = it.aDouble;<a name="line.27265"></a>
<span class="sourceLineNo">27266</span> long ox;<a name="line.27266"></a>
<span class="sourceLineNo">27267</span> ox = toLong(Math.exp(ix));<a name="line.27267"></a>
<span class="sourceLineNo">27268</span> oi64data[it.oIndex] = ox;<a name="line.27268"></a>
<span class="sourceLineNo">27269</span> }<a name="line.27269"></a>
<span class="sourceLineNo">27270</span> } else {<a name="line.27270"></a>
<span class="sourceLineNo">27271</span> while (it.hasNext()) {<a name="line.27271"></a>
<span class="sourceLineNo">27272</span> final long ix = it.aLong;<a name="line.27272"></a>
<span class="sourceLineNo">27273</span> long ox;<a name="line.27273"></a>
<span class="sourceLineNo">27274</span> ox = toLong(Math.exp(ix));<a name="line.27274"></a>
<span class="sourceLineNo">27275</span> oi64data[it.oIndex] = ox;<a name="line.27275"></a>
<span class="sourceLineNo">27276</span> }<a name="line.27276"></a>
<span class="sourceLineNo">27277</span> }<a name="line.27277"></a>
<span class="sourceLineNo">27278</span> break;<a name="line.27278"></a>
<span class="sourceLineNo">27279</span> case Dataset.INT32:<a name="line.27279"></a>
<span class="sourceLineNo">27280</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.27280"></a>
<span class="sourceLineNo">27281</span> if (it.isOutputDouble()) {<a name="line.27281"></a>
<span class="sourceLineNo">27282</span> while (it.hasNext()) {<a name="line.27282"></a>
<span class="sourceLineNo">27283</span> final double ix = it.aDouble;<a name="line.27283"></a>
<span class="sourceLineNo">27284</span> int ox;<a name="line.27284"></a>
<span class="sourceLineNo">27285</span> ox = (int) toLong(Math.exp(ix));<a name="line.27285"></a>
<span class="sourceLineNo">27286</span> oi32data[it.oIndex] = ox;<a name="line.27286"></a>
<span class="sourceLineNo">27287</span> }<a name="line.27287"></a>
<span class="sourceLineNo">27288</span> } else {<a name="line.27288"></a>
<span class="sourceLineNo">27289</span> while (it.hasNext()) {<a name="line.27289"></a>
<span class="sourceLineNo">27290</span> final long ix = it.aLong;<a name="line.27290"></a>
<span class="sourceLineNo">27291</span> int ox;<a name="line.27291"></a>
<span class="sourceLineNo">27292</span> ox = (int) toLong(Math.exp(ix));<a name="line.27292"></a>
<span class="sourceLineNo">27293</span> oi32data[it.oIndex] = ox;<a name="line.27293"></a>
<span class="sourceLineNo">27294</span> }<a name="line.27294"></a>
<span class="sourceLineNo">27295</span> }<a name="line.27295"></a>
<span class="sourceLineNo">27296</span> break;<a name="line.27296"></a>
<span class="sourceLineNo">27297</span> case Dataset.ARRAYINT8:<a name="line.27297"></a>
<span class="sourceLineNo">27298</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.27298"></a>
<span class="sourceLineNo">27299</span> if (is == 1) {<a name="line.27299"></a>
<span class="sourceLineNo">27300</span> if (it.isOutputDouble()) {<a name="line.27300"></a>
<span class="sourceLineNo">27301</span> while (it.hasNext()) {<a name="line.27301"></a>
<span class="sourceLineNo">27302</span> final double ix = it.aDouble;<a name="line.27302"></a>
<span class="sourceLineNo">27303</span> byte ox;<a name="line.27303"></a>
<span class="sourceLineNo">27304</span> ox = (byte) toLong(Math.exp(ix));<a name="line.27304"></a>
<span class="sourceLineNo">27305</span> oai8data[it.oIndex] = ox;<a name="line.27305"></a>
<span class="sourceLineNo">27306</span> }<a name="line.27306"></a>
<span class="sourceLineNo">27307</span> } else {<a name="line.27307"></a>
<span class="sourceLineNo">27308</span> while (it.hasNext()) {<a name="line.27308"></a>
<span class="sourceLineNo">27309</span> final long ix = it.aLong;<a name="line.27309"></a>
<span class="sourceLineNo">27310</span> byte ox;<a name="line.27310"></a>
<span class="sourceLineNo">27311</span> ox = (byte) toLong(Math.exp(ix));<a name="line.27311"></a>
<span class="sourceLineNo">27312</span> oai8data[it.oIndex] = ox;<a name="line.27312"></a>
<span class="sourceLineNo">27313</span> }<a name="line.27313"></a>
<span class="sourceLineNo">27314</span> }<a name="line.27314"></a>
<span class="sourceLineNo">27315</span> } else if (as == 1) {<a name="line.27315"></a>
<span class="sourceLineNo">27316</span> if (it.isOutputDouble()) {<a name="line.27316"></a>
<span class="sourceLineNo">27317</span> while (it.hasNext()) {<a name="line.27317"></a>
<span class="sourceLineNo">27318</span> final double ix = it.aDouble;<a name="line.27318"></a>
<span class="sourceLineNo">27319</span> byte ox;<a name="line.27319"></a>
<span class="sourceLineNo">27320</span> ox = (byte) toLong(Math.exp(ix));<a name="line.27320"></a>
<span class="sourceLineNo">27321</span> for (int j = 0; j &lt; is; j++) {<a name="line.27321"></a>
<span class="sourceLineNo">27322</span> oai8data[it.oIndex + j] = ox;<a name="line.27322"></a>
<span class="sourceLineNo">27323</span> }<a name="line.27323"></a>
<span class="sourceLineNo">27324</span> }<a name="line.27324"></a>
<span class="sourceLineNo">27325</span> } else {<a name="line.27325"></a>
<span class="sourceLineNo">27326</span> while (it.hasNext()) {<a name="line.27326"></a>
<span class="sourceLineNo">27327</span> final long ix = it.aLong;<a name="line.27327"></a>
<span class="sourceLineNo">27328</span> byte ox;<a name="line.27328"></a>
<span class="sourceLineNo">27329</span> ox = (byte) toLong(Math.exp(ix));<a name="line.27329"></a>
<span class="sourceLineNo">27330</span> for (int j = 0; j &lt; is; j++) {<a name="line.27330"></a>
<span class="sourceLineNo">27331</span> oai8data[it.oIndex + j] = ox;<a name="line.27331"></a>
<span class="sourceLineNo">27332</span> }<a name="line.27332"></a>
<span class="sourceLineNo">27333</span> }<a name="line.27333"></a>
<span class="sourceLineNo">27334</span> }<a name="line.27334"></a>
<span class="sourceLineNo">27335</span> } else {<a name="line.27335"></a>
<span class="sourceLineNo">27336</span> if (it.isOutputDouble()) {<a name="line.27336"></a>
<span class="sourceLineNo">27337</span> while (it.hasNext()) {<a name="line.27337"></a>
<span class="sourceLineNo">27338</span> for (int j = 0; j &lt; is; j++) {<a name="line.27338"></a>
<span class="sourceLineNo">27339</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.27339"></a>
<span class="sourceLineNo">27340</span> byte ox;<a name="line.27340"></a>
<span class="sourceLineNo">27341</span> ox = (byte) toLong(Math.exp(ix));<a name="line.27341"></a>
<span class="sourceLineNo">27342</span> oai8data[it.oIndex + j] = ox;<a name="line.27342"></a>
<span class="sourceLineNo">27343</span> }<a name="line.27343"></a>
<span class="sourceLineNo">27344</span> }<a name="line.27344"></a>
<span class="sourceLineNo">27345</span> } else {<a name="line.27345"></a>
<span class="sourceLineNo">27346</span> while (it.hasNext()) {<a name="line.27346"></a>
<span class="sourceLineNo">27347</span> for (int j = 0; j &lt; is; j++) {<a name="line.27347"></a>
<span class="sourceLineNo">27348</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.27348"></a>
<span class="sourceLineNo">27349</span> byte ox;<a name="line.27349"></a>
<span class="sourceLineNo">27350</span> ox = (byte) toLong(Math.exp(ix));<a name="line.27350"></a>
<span class="sourceLineNo">27351</span> oai8data[it.oIndex + j] = ox;<a name="line.27351"></a>
<span class="sourceLineNo">27352</span> }<a name="line.27352"></a>
<span class="sourceLineNo">27353</span> }<a name="line.27353"></a>
<span class="sourceLineNo">27354</span> }<a name="line.27354"></a>
<span class="sourceLineNo">27355</span> }<a name="line.27355"></a>
<span class="sourceLineNo">27356</span> break;<a name="line.27356"></a>
<span class="sourceLineNo">27357</span> case Dataset.ARRAYINT16:<a name="line.27357"></a>
<span class="sourceLineNo">27358</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.27358"></a>
<span class="sourceLineNo">27359</span> if (is == 1) {<a name="line.27359"></a>
<span class="sourceLineNo">27360</span> if (it.isOutputDouble()) {<a name="line.27360"></a>
<span class="sourceLineNo">27361</span> while (it.hasNext()) {<a name="line.27361"></a>
<span class="sourceLineNo">27362</span> final double ix = it.aDouble;<a name="line.27362"></a>
<span class="sourceLineNo">27363</span> short ox;<a name="line.27363"></a>
<span class="sourceLineNo">27364</span> ox = (short) toLong(Math.exp(ix));<a name="line.27364"></a>
<span class="sourceLineNo">27365</span> oai16data[it.oIndex] = ox;<a name="line.27365"></a>
<span class="sourceLineNo">27366</span> }<a name="line.27366"></a>
<span class="sourceLineNo">27367</span> } else {<a name="line.27367"></a>
<span class="sourceLineNo">27368</span> while (it.hasNext()) {<a name="line.27368"></a>
<span class="sourceLineNo">27369</span> final long ix = it.aLong;<a name="line.27369"></a>
<span class="sourceLineNo">27370</span> short ox;<a name="line.27370"></a>
<span class="sourceLineNo">27371</span> ox = (short) toLong(Math.exp(ix));<a name="line.27371"></a>
<span class="sourceLineNo">27372</span> oai16data[it.oIndex] = ox;<a name="line.27372"></a>
<span class="sourceLineNo">27373</span> }<a name="line.27373"></a>
<span class="sourceLineNo">27374</span> }<a name="line.27374"></a>
<span class="sourceLineNo">27375</span> } else if (as == 1) {<a name="line.27375"></a>
<span class="sourceLineNo">27376</span> if (it.isOutputDouble()) {<a name="line.27376"></a>
<span class="sourceLineNo">27377</span> while (it.hasNext()) {<a name="line.27377"></a>
<span class="sourceLineNo">27378</span> final double ix = it.aDouble;<a name="line.27378"></a>
<span class="sourceLineNo">27379</span> short ox;<a name="line.27379"></a>
<span class="sourceLineNo">27380</span> ox = (short) toLong(Math.exp(ix));<a name="line.27380"></a>
<span class="sourceLineNo">27381</span> for (int j = 0; j &lt; is; j++) {<a name="line.27381"></a>
<span class="sourceLineNo">27382</span> oai16data[it.oIndex + j] = ox;<a name="line.27382"></a>
<span class="sourceLineNo">27383</span> }<a name="line.27383"></a>
<span class="sourceLineNo">27384</span> }<a name="line.27384"></a>
<span class="sourceLineNo">27385</span> } else {<a name="line.27385"></a>
<span class="sourceLineNo">27386</span> while (it.hasNext()) {<a name="line.27386"></a>
<span class="sourceLineNo">27387</span> final long ix = it.aLong;<a name="line.27387"></a>
<span class="sourceLineNo">27388</span> short ox;<a name="line.27388"></a>
<span class="sourceLineNo">27389</span> ox = (short) toLong(Math.exp(ix));<a name="line.27389"></a>
<span class="sourceLineNo">27390</span> for (int j = 0; j &lt; is; j++) {<a name="line.27390"></a>
<span class="sourceLineNo">27391</span> oai16data[it.oIndex + j] = ox;<a name="line.27391"></a>
<span class="sourceLineNo">27392</span> }<a name="line.27392"></a>
<span class="sourceLineNo">27393</span> }<a name="line.27393"></a>
<span class="sourceLineNo">27394</span> }<a name="line.27394"></a>
<span class="sourceLineNo">27395</span> } else {<a name="line.27395"></a>
<span class="sourceLineNo">27396</span> if (it.isOutputDouble()) {<a name="line.27396"></a>
<span class="sourceLineNo">27397</span> while (it.hasNext()) {<a name="line.27397"></a>
<span class="sourceLineNo">27398</span> for (int j = 0; j &lt; is; j++) {<a name="line.27398"></a>
<span class="sourceLineNo">27399</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.27399"></a>
<span class="sourceLineNo">27400</span> short ox;<a name="line.27400"></a>
<span class="sourceLineNo">27401</span> ox = (short) toLong(Math.exp(ix));<a name="line.27401"></a>
<span class="sourceLineNo">27402</span> oai16data[it.oIndex + j] = ox;<a name="line.27402"></a>
<span class="sourceLineNo">27403</span> }<a name="line.27403"></a>
<span class="sourceLineNo">27404</span> }<a name="line.27404"></a>
<span class="sourceLineNo">27405</span> } else {<a name="line.27405"></a>
<span class="sourceLineNo">27406</span> while (it.hasNext()) {<a name="line.27406"></a>
<span class="sourceLineNo">27407</span> for (int j = 0; j &lt; is; j++) {<a name="line.27407"></a>
<span class="sourceLineNo">27408</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.27408"></a>
<span class="sourceLineNo">27409</span> short ox;<a name="line.27409"></a>
<span class="sourceLineNo">27410</span> ox = (short) toLong(Math.exp(ix));<a name="line.27410"></a>
<span class="sourceLineNo">27411</span> oai16data[it.oIndex + j] = ox;<a name="line.27411"></a>
<span class="sourceLineNo">27412</span> }<a name="line.27412"></a>
<span class="sourceLineNo">27413</span> }<a name="line.27413"></a>
<span class="sourceLineNo">27414</span> }<a name="line.27414"></a>
<span class="sourceLineNo">27415</span> }<a name="line.27415"></a>
<span class="sourceLineNo">27416</span> break;<a name="line.27416"></a>
<span class="sourceLineNo">27417</span> case Dataset.ARRAYINT64:<a name="line.27417"></a>
<span class="sourceLineNo">27418</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.27418"></a>
<span class="sourceLineNo">27419</span> if (is == 1) {<a name="line.27419"></a>
<span class="sourceLineNo">27420</span> if (it.isOutputDouble()) {<a name="line.27420"></a>
<span class="sourceLineNo">27421</span> while (it.hasNext()) {<a name="line.27421"></a>
<span class="sourceLineNo">27422</span> final double ix = it.aDouble;<a name="line.27422"></a>
<span class="sourceLineNo">27423</span> long ox;<a name="line.27423"></a>
<span class="sourceLineNo">27424</span> ox = toLong(Math.exp(ix));<a name="line.27424"></a>
<span class="sourceLineNo">27425</span> oai64data[it.oIndex] = ox;<a name="line.27425"></a>
<span class="sourceLineNo">27426</span> }<a name="line.27426"></a>
<span class="sourceLineNo">27427</span> } else {<a name="line.27427"></a>
<span class="sourceLineNo">27428</span> while (it.hasNext()) {<a name="line.27428"></a>
<span class="sourceLineNo">27429</span> final long ix = it.aLong;<a name="line.27429"></a>
<span class="sourceLineNo">27430</span> long ox;<a name="line.27430"></a>
<span class="sourceLineNo">27431</span> ox = toLong(Math.exp(ix));<a name="line.27431"></a>
<span class="sourceLineNo">27432</span> oai64data[it.oIndex] = ox;<a name="line.27432"></a>
<span class="sourceLineNo">27433</span> }<a name="line.27433"></a>
<span class="sourceLineNo">27434</span> }<a name="line.27434"></a>
<span class="sourceLineNo">27435</span> } else if (as == 1) {<a name="line.27435"></a>
<span class="sourceLineNo">27436</span> if (it.isOutputDouble()) {<a name="line.27436"></a>
<span class="sourceLineNo">27437</span> while (it.hasNext()) {<a name="line.27437"></a>
<span class="sourceLineNo">27438</span> final double ix = it.aDouble;<a name="line.27438"></a>
<span class="sourceLineNo">27439</span> long ox;<a name="line.27439"></a>
<span class="sourceLineNo">27440</span> ox = toLong(Math.exp(ix));<a name="line.27440"></a>
<span class="sourceLineNo">27441</span> for (int j = 0; j &lt; is; j++) {<a name="line.27441"></a>
<span class="sourceLineNo">27442</span> oai64data[it.oIndex + j] = ox;<a name="line.27442"></a>
<span class="sourceLineNo">27443</span> }<a name="line.27443"></a>
<span class="sourceLineNo">27444</span> }<a name="line.27444"></a>
<span class="sourceLineNo">27445</span> } else {<a name="line.27445"></a>
<span class="sourceLineNo">27446</span> while (it.hasNext()) {<a name="line.27446"></a>
<span class="sourceLineNo">27447</span> final long ix = it.aLong;<a name="line.27447"></a>
<span class="sourceLineNo">27448</span> long ox;<a name="line.27448"></a>
<span class="sourceLineNo">27449</span> ox = toLong(Math.exp(ix));<a name="line.27449"></a>
<span class="sourceLineNo">27450</span> for (int j = 0; j &lt; is; j++) {<a name="line.27450"></a>
<span class="sourceLineNo">27451</span> oai64data[it.oIndex + j] = ox;<a name="line.27451"></a>
<span class="sourceLineNo">27452</span> }<a name="line.27452"></a>
<span class="sourceLineNo">27453</span> }<a name="line.27453"></a>
<span class="sourceLineNo">27454</span> }<a name="line.27454"></a>
<span class="sourceLineNo">27455</span> } else {<a name="line.27455"></a>
<span class="sourceLineNo">27456</span> if (it.isOutputDouble()) {<a name="line.27456"></a>
<span class="sourceLineNo">27457</span> while (it.hasNext()) {<a name="line.27457"></a>
<span class="sourceLineNo">27458</span> for (int j = 0; j &lt; is; j++) {<a name="line.27458"></a>
<span class="sourceLineNo">27459</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.27459"></a>
<span class="sourceLineNo">27460</span> long ox;<a name="line.27460"></a>
<span class="sourceLineNo">27461</span> ox = toLong(Math.exp(ix));<a name="line.27461"></a>
<span class="sourceLineNo">27462</span> oai64data[it.oIndex + j] = ox;<a name="line.27462"></a>
<span class="sourceLineNo">27463</span> }<a name="line.27463"></a>
<span class="sourceLineNo">27464</span> }<a name="line.27464"></a>
<span class="sourceLineNo">27465</span> } else {<a name="line.27465"></a>
<span class="sourceLineNo">27466</span> while (it.hasNext()) {<a name="line.27466"></a>
<span class="sourceLineNo">27467</span> for (int j = 0; j &lt; is; j++) {<a name="line.27467"></a>
<span class="sourceLineNo">27468</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.27468"></a>
<span class="sourceLineNo">27469</span> long ox;<a name="line.27469"></a>
<span class="sourceLineNo">27470</span> ox = toLong(Math.exp(ix));<a name="line.27470"></a>
<span class="sourceLineNo">27471</span> oai64data[it.oIndex + j] = ox;<a name="line.27471"></a>
<span class="sourceLineNo">27472</span> }<a name="line.27472"></a>
<span class="sourceLineNo">27473</span> }<a name="line.27473"></a>
<span class="sourceLineNo">27474</span> }<a name="line.27474"></a>
<span class="sourceLineNo">27475</span> }<a name="line.27475"></a>
<span class="sourceLineNo">27476</span> break;<a name="line.27476"></a>
<span class="sourceLineNo">27477</span> case Dataset.ARRAYINT32:<a name="line.27477"></a>
<span class="sourceLineNo">27478</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.27478"></a>
<span class="sourceLineNo">27479</span> if (is == 1) {<a name="line.27479"></a>
<span class="sourceLineNo">27480</span> if (it.isOutputDouble()) {<a name="line.27480"></a>
<span class="sourceLineNo">27481</span> while (it.hasNext()) {<a name="line.27481"></a>
<span class="sourceLineNo">27482</span> final double ix = it.aDouble;<a name="line.27482"></a>
<span class="sourceLineNo">27483</span> int ox;<a name="line.27483"></a>
<span class="sourceLineNo">27484</span> ox = (int) toLong(Math.exp(ix));<a name="line.27484"></a>
<span class="sourceLineNo">27485</span> oai32data[it.oIndex] = ox;<a name="line.27485"></a>
<span class="sourceLineNo">27486</span> }<a name="line.27486"></a>
<span class="sourceLineNo">27487</span> } else {<a name="line.27487"></a>
<span class="sourceLineNo">27488</span> while (it.hasNext()) {<a name="line.27488"></a>
<span class="sourceLineNo">27489</span> final long ix = it.aLong;<a name="line.27489"></a>
<span class="sourceLineNo">27490</span> int ox;<a name="line.27490"></a>
<span class="sourceLineNo">27491</span> ox = (int) toLong(Math.exp(ix));<a name="line.27491"></a>
<span class="sourceLineNo">27492</span> oai32data[it.oIndex] = ox;<a name="line.27492"></a>
<span class="sourceLineNo">27493</span> }<a name="line.27493"></a>
<span class="sourceLineNo">27494</span> }<a name="line.27494"></a>
<span class="sourceLineNo">27495</span> } else if (as == 1) {<a name="line.27495"></a>
<span class="sourceLineNo">27496</span> if (it.isOutputDouble()) {<a name="line.27496"></a>
<span class="sourceLineNo">27497</span> while (it.hasNext()) {<a name="line.27497"></a>
<span class="sourceLineNo">27498</span> final double ix = it.aDouble;<a name="line.27498"></a>
<span class="sourceLineNo">27499</span> int ox;<a name="line.27499"></a>
<span class="sourceLineNo">27500</span> ox = (int) toLong(Math.exp(ix));<a name="line.27500"></a>
<span class="sourceLineNo">27501</span> for (int j = 0; j &lt; is; j++) {<a name="line.27501"></a>
<span class="sourceLineNo">27502</span> oai32data[it.oIndex + j] = ox;<a name="line.27502"></a>
<span class="sourceLineNo">27503</span> }<a name="line.27503"></a>
<span class="sourceLineNo">27504</span> }<a name="line.27504"></a>
<span class="sourceLineNo">27505</span> } else {<a name="line.27505"></a>
<span class="sourceLineNo">27506</span> while (it.hasNext()) {<a name="line.27506"></a>
<span class="sourceLineNo">27507</span> final long ix = it.aLong;<a name="line.27507"></a>
<span class="sourceLineNo">27508</span> int ox;<a name="line.27508"></a>
<span class="sourceLineNo">27509</span> ox = (int) toLong(Math.exp(ix));<a name="line.27509"></a>
<span class="sourceLineNo">27510</span> for (int j = 0; j &lt; is; j++) {<a name="line.27510"></a>
<span class="sourceLineNo">27511</span> oai32data[it.oIndex + j] = ox;<a name="line.27511"></a>
<span class="sourceLineNo">27512</span> }<a name="line.27512"></a>
<span class="sourceLineNo">27513</span> }<a name="line.27513"></a>
<span class="sourceLineNo">27514</span> }<a name="line.27514"></a>
<span class="sourceLineNo">27515</span> } else {<a name="line.27515"></a>
<span class="sourceLineNo">27516</span> if (it.isOutputDouble()) {<a name="line.27516"></a>
<span class="sourceLineNo">27517</span> while (it.hasNext()) {<a name="line.27517"></a>
<span class="sourceLineNo">27518</span> for (int j = 0; j &lt; is; j++) {<a name="line.27518"></a>
<span class="sourceLineNo">27519</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.27519"></a>
<span class="sourceLineNo">27520</span> int ox;<a name="line.27520"></a>
<span class="sourceLineNo">27521</span> ox = (int) toLong(Math.exp(ix));<a name="line.27521"></a>
<span class="sourceLineNo">27522</span> oai32data[it.oIndex + j] = ox;<a name="line.27522"></a>
<span class="sourceLineNo">27523</span> }<a name="line.27523"></a>
<span class="sourceLineNo">27524</span> }<a name="line.27524"></a>
<span class="sourceLineNo">27525</span> } else {<a name="line.27525"></a>
<span class="sourceLineNo">27526</span> while (it.hasNext()) {<a name="line.27526"></a>
<span class="sourceLineNo">27527</span> for (int j = 0; j &lt; is; j++) {<a name="line.27527"></a>
<span class="sourceLineNo">27528</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.27528"></a>
<span class="sourceLineNo">27529</span> int ox;<a name="line.27529"></a>
<span class="sourceLineNo">27530</span> ox = (int) toLong(Math.exp(ix));<a name="line.27530"></a>
<span class="sourceLineNo">27531</span> oai32data[it.oIndex + j] = ox;<a name="line.27531"></a>
<span class="sourceLineNo">27532</span> }<a name="line.27532"></a>
<span class="sourceLineNo">27533</span> }<a name="line.27533"></a>
<span class="sourceLineNo">27534</span> }<a name="line.27534"></a>
<span class="sourceLineNo">27535</span> }<a name="line.27535"></a>
<span class="sourceLineNo">27536</span> break;<a name="line.27536"></a>
<span class="sourceLineNo">27537</span> case Dataset.FLOAT32:<a name="line.27537"></a>
<span class="sourceLineNo">27538</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.27538"></a>
<span class="sourceLineNo">27539</span> if (it.isOutputDouble()) {<a name="line.27539"></a>
<span class="sourceLineNo">27540</span> while (it.hasNext()) {<a name="line.27540"></a>
<span class="sourceLineNo">27541</span> final double ix = it.aDouble;<a name="line.27541"></a>
<span class="sourceLineNo">27542</span> float ox;<a name="line.27542"></a>
<span class="sourceLineNo">27543</span> ox = (float) (Math.exp(ix));<a name="line.27543"></a>
<span class="sourceLineNo">27544</span> of32data[it.oIndex] = ox;<a name="line.27544"></a>
<span class="sourceLineNo">27545</span> }<a name="line.27545"></a>
<span class="sourceLineNo">27546</span> } else {<a name="line.27546"></a>
<span class="sourceLineNo">27547</span> while (it.hasNext()) {<a name="line.27547"></a>
<span class="sourceLineNo">27548</span> final long ix = it.aLong;<a name="line.27548"></a>
<span class="sourceLineNo">27549</span> float ox;<a name="line.27549"></a>
<span class="sourceLineNo">27550</span> ox = (float) (Math.exp(ix));<a name="line.27550"></a>
<span class="sourceLineNo">27551</span> of32data[it.oIndex] = ox;<a name="line.27551"></a>
<span class="sourceLineNo">27552</span> }<a name="line.27552"></a>
<span class="sourceLineNo">27553</span> }<a name="line.27553"></a>
<span class="sourceLineNo">27554</span> break;<a name="line.27554"></a>
<span class="sourceLineNo">27555</span> case Dataset.FLOAT64:<a name="line.27555"></a>
<span class="sourceLineNo">27556</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.27556"></a>
<span class="sourceLineNo">27557</span> if (it.isOutputDouble()) {<a name="line.27557"></a>
<span class="sourceLineNo">27558</span> while (it.hasNext()) {<a name="line.27558"></a>
<span class="sourceLineNo">27559</span> final double ix = it.aDouble;<a name="line.27559"></a>
<span class="sourceLineNo">27560</span> double ox;<a name="line.27560"></a>
<span class="sourceLineNo">27561</span> ox = (Math.exp(ix));<a name="line.27561"></a>
<span class="sourceLineNo">27562</span> of64data[it.oIndex] = ox;<a name="line.27562"></a>
<span class="sourceLineNo">27563</span> }<a name="line.27563"></a>
<span class="sourceLineNo">27564</span> } else {<a name="line.27564"></a>
<span class="sourceLineNo">27565</span> while (it.hasNext()) {<a name="line.27565"></a>
<span class="sourceLineNo">27566</span> final long ix = it.aLong;<a name="line.27566"></a>
<span class="sourceLineNo">27567</span> double ox;<a name="line.27567"></a>
<span class="sourceLineNo">27568</span> ox = (Math.exp(ix));<a name="line.27568"></a>
<span class="sourceLineNo">27569</span> of64data[it.oIndex] = ox;<a name="line.27569"></a>
<span class="sourceLineNo">27570</span> }<a name="line.27570"></a>
<span class="sourceLineNo">27571</span> }<a name="line.27571"></a>
<span class="sourceLineNo">27572</span> break;<a name="line.27572"></a>
<span class="sourceLineNo">27573</span> case Dataset.ARRAYFLOAT32:<a name="line.27573"></a>
<span class="sourceLineNo">27574</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.27574"></a>
<span class="sourceLineNo">27575</span> if (is == 1) {<a name="line.27575"></a>
<span class="sourceLineNo">27576</span> if (it.isOutputDouble()) {<a name="line.27576"></a>
<span class="sourceLineNo">27577</span> while (it.hasNext()) {<a name="line.27577"></a>
<span class="sourceLineNo">27578</span> final double ix = it.aDouble;<a name="line.27578"></a>
<span class="sourceLineNo">27579</span> float ox;<a name="line.27579"></a>
<span class="sourceLineNo">27580</span> ox = (float) (Math.exp(ix));<a name="line.27580"></a>
<span class="sourceLineNo">27581</span> oaf32data[it.oIndex] = ox;<a name="line.27581"></a>
<span class="sourceLineNo">27582</span> }<a name="line.27582"></a>
<span class="sourceLineNo">27583</span> } else {<a name="line.27583"></a>
<span class="sourceLineNo">27584</span> while (it.hasNext()) {<a name="line.27584"></a>
<span class="sourceLineNo">27585</span> final long ix = it.aLong;<a name="line.27585"></a>
<span class="sourceLineNo">27586</span> float ox;<a name="line.27586"></a>
<span class="sourceLineNo">27587</span> ox = (float) (Math.exp(ix));<a name="line.27587"></a>
<span class="sourceLineNo">27588</span> oaf32data[it.oIndex] = ox;<a name="line.27588"></a>
<span class="sourceLineNo">27589</span> }<a name="line.27589"></a>
<span class="sourceLineNo">27590</span> }<a name="line.27590"></a>
<span class="sourceLineNo">27591</span> } else if (as == 1) {<a name="line.27591"></a>
<span class="sourceLineNo">27592</span> if (it.isOutputDouble()) {<a name="line.27592"></a>
<span class="sourceLineNo">27593</span> while (it.hasNext()) {<a name="line.27593"></a>
<span class="sourceLineNo">27594</span> final double ix = it.aDouble;<a name="line.27594"></a>
<span class="sourceLineNo">27595</span> float ox;<a name="line.27595"></a>
<span class="sourceLineNo">27596</span> ox = (float) (Math.exp(ix));<a name="line.27596"></a>
<span class="sourceLineNo">27597</span> for (int j = 0; j &lt; is; j++) {<a name="line.27597"></a>
<span class="sourceLineNo">27598</span> oaf32data[it.oIndex + j] = ox;<a name="line.27598"></a>
<span class="sourceLineNo">27599</span> }<a name="line.27599"></a>
<span class="sourceLineNo">27600</span> }<a name="line.27600"></a>
<span class="sourceLineNo">27601</span> } else {<a name="line.27601"></a>
<span class="sourceLineNo">27602</span> while (it.hasNext()) {<a name="line.27602"></a>
<span class="sourceLineNo">27603</span> final long ix = it.aLong;<a name="line.27603"></a>
<span class="sourceLineNo">27604</span> float ox;<a name="line.27604"></a>
<span class="sourceLineNo">27605</span> ox = (float) (Math.exp(ix));<a name="line.27605"></a>
<span class="sourceLineNo">27606</span> for (int j = 0; j &lt; is; j++) {<a name="line.27606"></a>
<span class="sourceLineNo">27607</span> oaf32data[it.oIndex + j] = ox;<a name="line.27607"></a>
<span class="sourceLineNo">27608</span> }<a name="line.27608"></a>
<span class="sourceLineNo">27609</span> }<a name="line.27609"></a>
<span class="sourceLineNo">27610</span> }<a name="line.27610"></a>
<span class="sourceLineNo">27611</span> } else {<a name="line.27611"></a>
<span class="sourceLineNo">27612</span> if (it.isOutputDouble()) {<a name="line.27612"></a>
<span class="sourceLineNo">27613</span> while (it.hasNext()) {<a name="line.27613"></a>
<span class="sourceLineNo">27614</span> for (int j = 0; j &lt; is; j++) {<a name="line.27614"></a>
<span class="sourceLineNo">27615</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.27615"></a>
<span class="sourceLineNo">27616</span> float ox;<a name="line.27616"></a>
<span class="sourceLineNo">27617</span> ox = (float) (Math.exp(ix));<a name="line.27617"></a>
<span class="sourceLineNo">27618</span> oaf32data[it.oIndex + j] = ox;<a name="line.27618"></a>
<span class="sourceLineNo">27619</span> }<a name="line.27619"></a>
<span class="sourceLineNo">27620</span> }<a name="line.27620"></a>
<span class="sourceLineNo">27621</span> } else {<a name="line.27621"></a>
<span class="sourceLineNo">27622</span> while (it.hasNext()) {<a name="line.27622"></a>
<span class="sourceLineNo">27623</span> for (int j = 0; j &lt; is; j++) {<a name="line.27623"></a>
<span class="sourceLineNo">27624</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.27624"></a>
<span class="sourceLineNo">27625</span> float ox;<a name="line.27625"></a>
<span class="sourceLineNo">27626</span> ox = (float) (Math.exp(ix));<a name="line.27626"></a>
<span class="sourceLineNo">27627</span> oaf32data[it.oIndex + j] = ox;<a name="line.27627"></a>
<span class="sourceLineNo">27628</span> }<a name="line.27628"></a>
<span class="sourceLineNo">27629</span> }<a name="line.27629"></a>
<span class="sourceLineNo">27630</span> }<a name="line.27630"></a>
<span class="sourceLineNo">27631</span> }<a name="line.27631"></a>
<span class="sourceLineNo">27632</span> break;<a name="line.27632"></a>
<span class="sourceLineNo">27633</span> case Dataset.ARRAYFLOAT64:<a name="line.27633"></a>
<span class="sourceLineNo">27634</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.27634"></a>
<span class="sourceLineNo">27635</span> if (is == 1) {<a name="line.27635"></a>
<span class="sourceLineNo">27636</span> if (it.isOutputDouble()) {<a name="line.27636"></a>
<span class="sourceLineNo">27637</span> while (it.hasNext()) {<a name="line.27637"></a>
<span class="sourceLineNo">27638</span> final double ix = it.aDouble;<a name="line.27638"></a>
<span class="sourceLineNo">27639</span> double ox;<a name="line.27639"></a>
<span class="sourceLineNo">27640</span> ox = (Math.exp(ix));<a name="line.27640"></a>
<span class="sourceLineNo">27641</span> oaf64data[it.oIndex] = ox;<a name="line.27641"></a>
<span class="sourceLineNo">27642</span> }<a name="line.27642"></a>
<span class="sourceLineNo">27643</span> } else {<a name="line.27643"></a>
<span class="sourceLineNo">27644</span> while (it.hasNext()) {<a name="line.27644"></a>
<span class="sourceLineNo">27645</span> final long ix = it.aLong;<a name="line.27645"></a>
<span class="sourceLineNo">27646</span> double ox;<a name="line.27646"></a>
<span class="sourceLineNo">27647</span> ox = (Math.exp(ix));<a name="line.27647"></a>
<span class="sourceLineNo">27648</span> oaf64data[it.oIndex] = ox;<a name="line.27648"></a>
<span class="sourceLineNo">27649</span> }<a name="line.27649"></a>
<span class="sourceLineNo">27650</span> }<a name="line.27650"></a>
<span class="sourceLineNo">27651</span> } else if (as == 1) {<a name="line.27651"></a>
<span class="sourceLineNo">27652</span> if (it.isOutputDouble()) {<a name="line.27652"></a>
<span class="sourceLineNo">27653</span> while (it.hasNext()) {<a name="line.27653"></a>
<span class="sourceLineNo">27654</span> final double ix = it.aDouble;<a name="line.27654"></a>
<span class="sourceLineNo">27655</span> double ox;<a name="line.27655"></a>
<span class="sourceLineNo">27656</span> ox = (Math.exp(ix));<a name="line.27656"></a>
<span class="sourceLineNo">27657</span> for (int j = 0; j &lt; is; j++) {<a name="line.27657"></a>
<span class="sourceLineNo">27658</span> oaf64data[it.oIndex + j] = ox;<a name="line.27658"></a>
<span class="sourceLineNo">27659</span> }<a name="line.27659"></a>
<span class="sourceLineNo">27660</span> }<a name="line.27660"></a>
<span class="sourceLineNo">27661</span> } else {<a name="line.27661"></a>
<span class="sourceLineNo">27662</span> while (it.hasNext()) {<a name="line.27662"></a>
<span class="sourceLineNo">27663</span> final long ix = it.aLong;<a name="line.27663"></a>
<span class="sourceLineNo">27664</span> double ox;<a name="line.27664"></a>
<span class="sourceLineNo">27665</span> ox = (Math.exp(ix));<a name="line.27665"></a>
<span class="sourceLineNo">27666</span> for (int j = 0; j &lt; is; j++) {<a name="line.27666"></a>
<span class="sourceLineNo">27667</span> oaf64data[it.oIndex + j] = ox;<a name="line.27667"></a>
<span class="sourceLineNo">27668</span> }<a name="line.27668"></a>
<span class="sourceLineNo">27669</span> }<a name="line.27669"></a>
<span class="sourceLineNo">27670</span> }<a name="line.27670"></a>
<span class="sourceLineNo">27671</span> } else {<a name="line.27671"></a>
<span class="sourceLineNo">27672</span> if (it.isOutputDouble()) {<a name="line.27672"></a>
<span class="sourceLineNo">27673</span> while (it.hasNext()) {<a name="line.27673"></a>
<span class="sourceLineNo">27674</span> for (int j = 0; j &lt; is; j++) {<a name="line.27674"></a>
<span class="sourceLineNo">27675</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.27675"></a>
<span class="sourceLineNo">27676</span> double ox;<a name="line.27676"></a>
<span class="sourceLineNo">27677</span> ox = (Math.exp(ix));<a name="line.27677"></a>
<span class="sourceLineNo">27678</span> oaf64data[it.oIndex + j] = ox;<a name="line.27678"></a>
<span class="sourceLineNo">27679</span> }<a name="line.27679"></a>
<span class="sourceLineNo">27680</span> }<a name="line.27680"></a>
<span class="sourceLineNo">27681</span> } else {<a name="line.27681"></a>
<span class="sourceLineNo">27682</span> while (it.hasNext()) {<a name="line.27682"></a>
<span class="sourceLineNo">27683</span> for (int j = 0; j &lt; is; j++) {<a name="line.27683"></a>
<span class="sourceLineNo">27684</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.27684"></a>
<span class="sourceLineNo">27685</span> double ox;<a name="line.27685"></a>
<span class="sourceLineNo">27686</span> ox = (Math.exp(ix));<a name="line.27686"></a>
<span class="sourceLineNo">27687</span> oaf64data[it.oIndex + j] = ox;<a name="line.27687"></a>
<span class="sourceLineNo">27688</span> }<a name="line.27688"></a>
<span class="sourceLineNo">27689</span> }<a name="line.27689"></a>
<span class="sourceLineNo">27690</span> }<a name="line.27690"></a>
<span class="sourceLineNo">27691</span> }<a name="line.27691"></a>
<span class="sourceLineNo">27692</span> break;<a name="line.27692"></a>
<span class="sourceLineNo">27693</span> case Dataset.COMPLEX64:<a name="line.27693"></a>
<span class="sourceLineNo">27694</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.27694"></a>
<span class="sourceLineNo">27695</span> if (!da.isComplex()) {<a name="line.27695"></a>
<span class="sourceLineNo">27696</span> if (it.isOutputDouble()) {<a name="line.27696"></a>
<span class="sourceLineNo">27697</span> final double iy = 0;<a name="line.27697"></a>
<span class="sourceLineNo">27698</span> while (it.hasNext()) {<a name="line.27698"></a>
<span class="sourceLineNo">27699</span> final double ix = it.aDouble;<a name="line.27699"></a>
<span class="sourceLineNo">27700</span> float tf;<a name="line.27700"></a>
<span class="sourceLineNo">27701</span> float ox;<a name="line.27701"></a>
<span class="sourceLineNo">27702</span> float oy;<a name="line.27702"></a>
<span class="sourceLineNo">27703</span> tf = (float) (Math.exp(ix));<a name="line.27703"></a>
<span class="sourceLineNo">27704</span> ox = (float) (tf*Math.cos(iy));<a name="line.27704"></a>
<span class="sourceLineNo">27705</span> oy = (float) (tf*Math.sin(iy));<a name="line.27705"></a>
<span class="sourceLineNo">27706</span> oc64data[it.oIndex] = ox;<a name="line.27706"></a>
<span class="sourceLineNo">27707</span> oc64data[it.oIndex + 1] = oy;<a name="line.27707"></a>
<span class="sourceLineNo">27708</span> }<a name="line.27708"></a>
<span class="sourceLineNo">27709</span> } else {<a name="line.27709"></a>
<span class="sourceLineNo">27710</span> final long iy = 0;<a name="line.27710"></a>
<span class="sourceLineNo">27711</span> while (it.hasNext()) {<a name="line.27711"></a>
<span class="sourceLineNo">27712</span> final long ix = it.aLong;<a name="line.27712"></a>
<span class="sourceLineNo">27713</span> float tf;<a name="line.27713"></a>
<span class="sourceLineNo">27714</span> float ox;<a name="line.27714"></a>
<span class="sourceLineNo">27715</span> float oy;<a name="line.27715"></a>
<span class="sourceLineNo">27716</span> tf = (float) toLong(Math.exp(ix));<a name="line.27716"></a>
<span class="sourceLineNo">27717</span> ox = (float) toLong(tf*Math.cos(iy));<a name="line.27717"></a>
<span class="sourceLineNo">27718</span> oy = (float) toLong(tf*Math.sin(iy));<a name="line.27718"></a>
<span class="sourceLineNo">27719</span> oc64data[it.oIndex] = ox;<a name="line.27719"></a>
<span class="sourceLineNo">27720</span> oc64data[it.oIndex + 1] = oy;<a name="line.27720"></a>
<span class="sourceLineNo">27721</span> }<a name="line.27721"></a>
<span class="sourceLineNo">27722</span> }<a name="line.27722"></a>
<span class="sourceLineNo">27723</span> } else {<a name="line.27723"></a>
<span class="sourceLineNo">27724</span> while (it.hasNext()) {<a name="line.27724"></a>
<span class="sourceLineNo">27725</span> final double ix = it.aDouble;<a name="line.27725"></a>
<span class="sourceLineNo">27726</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.27726"></a>
<span class="sourceLineNo">27727</span> float tf;<a name="line.27727"></a>
<span class="sourceLineNo">27728</span> float ox;<a name="line.27728"></a>
<span class="sourceLineNo">27729</span> float oy;<a name="line.27729"></a>
<span class="sourceLineNo">27730</span> tf = (float) (Math.exp(ix));<a name="line.27730"></a>
<span class="sourceLineNo">27731</span> ox = (float) (tf*Math.cos(iy));<a name="line.27731"></a>
<span class="sourceLineNo">27732</span> oy = (float) (tf*Math.sin(iy));<a name="line.27732"></a>
<span class="sourceLineNo">27733</span> oc64data[it.oIndex] = ox;<a name="line.27733"></a>
<span class="sourceLineNo">27734</span> oc64data[it.oIndex + 1] = oy;<a name="line.27734"></a>
<span class="sourceLineNo">27735</span> }<a name="line.27735"></a>
<span class="sourceLineNo">27736</span> }<a name="line.27736"></a>
<span class="sourceLineNo">27737</span> break;<a name="line.27737"></a>
<span class="sourceLineNo">27738</span> case Dataset.COMPLEX128:<a name="line.27738"></a>
<span class="sourceLineNo">27739</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.27739"></a>
<span class="sourceLineNo">27740</span> if (!da.isComplex()) {<a name="line.27740"></a>
<span class="sourceLineNo">27741</span> if (it.isOutputDouble()) {<a name="line.27741"></a>
<span class="sourceLineNo">27742</span> final double iy = 0;<a name="line.27742"></a>
<span class="sourceLineNo">27743</span> while (it.hasNext()) {<a name="line.27743"></a>
<span class="sourceLineNo">27744</span> final double ix = it.aDouble;<a name="line.27744"></a>
<span class="sourceLineNo">27745</span> double tf;<a name="line.27745"></a>
<span class="sourceLineNo">27746</span> double ox;<a name="line.27746"></a>
<span class="sourceLineNo">27747</span> double oy;<a name="line.27747"></a>
<span class="sourceLineNo">27748</span> tf = (Math.exp(ix));<a name="line.27748"></a>
<span class="sourceLineNo">27749</span> ox = (tf*Math.cos(iy));<a name="line.27749"></a>
<span class="sourceLineNo">27750</span> oy = (tf*Math.sin(iy));<a name="line.27750"></a>
<span class="sourceLineNo">27751</span> oc128data[it.oIndex] = ox;<a name="line.27751"></a>
<span class="sourceLineNo">27752</span> oc128data[it.oIndex + 1] = oy;<a name="line.27752"></a>
<span class="sourceLineNo">27753</span> }<a name="line.27753"></a>
<span class="sourceLineNo">27754</span> } else {<a name="line.27754"></a>
<span class="sourceLineNo">27755</span> final long iy = 0;<a name="line.27755"></a>
<span class="sourceLineNo">27756</span> while (it.hasNext()) {<a name="line.27756"></a>
<span class="sourceLineNo">27757</span> final long ix = it.aLong;<a name="line.27757"></a>
<span class="sourceLineNo">27758</span> double tf;<a name="line.27758"></a>
<span class="sourceLineNo">27759</span> double ox;<a name="line.27759"></a>
<span class="sourceLineNo">27760</span> double oy;<a name="line.27760"></a>
<span class="sourceLineNo">27761</span> tf = (double) (Math.exp(ix));<a name="line.27761"></a>
<span class="sourceLineNo">27762</span> ox = (double) (tf*Math.cos(iy));<a name="line.27762"></a>
<span class="sourceLineNo">27763</span> oy = (double) (tf*Math.sin(iy));<a name="line.27763"></a>
<span class="sourceLineNo">27764</span> oc128data[it.oIndex] = ox;<a name="line.27764"></a>
<span class="sourceLineNo">27765</span> oc128data[it.oIndex + 1] = oy;<a name="line.27765"></a>
<span class="sourceLineNo">27766</span> }<a name="line.27766"></a>
<span class="sourceLineNo">27767</span> }<a name="line.27767"></a>
<span class="sourceLineNo">27768</span> } else {<a name="line.27768"></a>
<span class="sourceLineNo">27769</span> while (it.hasNext()) {<a name="line.27769"></a>
<span class="sourceLineNo">27770</span> final double ix = it.aDouble;<a name="line.27770"></a>
<span class="sourceLineNo">27771</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.27771"></a>
<span class="sourceLineNo">27772</span> double tf;<a name="line.27772"></a>
<span class="sourceLineNo">27773</span> double ox;<a name="line.27773"></a>
<span class="sourceLineNo">27774</span> double oy;<a name="line.27774"></a>
<span class="sourceLineNo">27775</span> tf = (Math.exp(ix));<a name="line.27775"></a>
<span class="sourceLineNo">27776</span> ox = (tf*Math.cos(iy));<a name="line.27776"></a>
<span class="sourceLineNo">27777</span> oy = (tf*Math.sin(iy));<a name="line.27777"></a>
<span class="sourceLineNo">27778</span> oc128data[it.oIndex] = ox;<a name="line.27778"></a>
<span class="sourceLineNo">27779</span> oc128data[it.oIndex + 1] = oy;<a name="line.27779"></a>
<span class="sourceLineNo">27780</span> }<a name="line.27780"></a>
<span class="sourceLineNo">27781</span> }<a name="line.27781"></a>
<span class="sourceLineNo">27782</span> break;<a name="line.27782"></a>
<span class="sourceLineNo">27783</span> default:<a name="line.27783"></a>
<span class="sourceLineNo">27784</span> throw new IllegalArgumentException("exp supports integer, compound integer, real, compound real, complex datasets only");<a name="line.27784"></a>
<span class="sourceLineNo">27785</span> }<a name="line.27785"></a>
<span class="sourceLineNo">27786</span><a name="line.27786"></a>
<span class="sourceLineNo">27787</span> addFunctionName(result, "exp");<a name="line.27787"></a>
<span class="sourceLineNo">27788</span> return result;<a name="line.27788"></a>
<span class="sourceLineNo">27789</span> }<a name="line.27789"></a>
<span class="sourceLineNo">27790</span><a name="line.27790"></a>
<span class="sourceLineNo">27791</span> /**<a name="line.27791"></a>
<span class="sourceLineNo">27792</span> * expm1 - evaluate the exponential function - 1 on each element of the dataset<a name="line.27792"></a>
<span class="sourceLineNo">27793</span> * @param a<a name="line.27793"></a>
<span class="sourceLineNo">27794</span> * @return dataset<a name="line.27794"></a>
<span class="sourceLineNo">27795</span> */<a name="line.27795"></a>
<span class="sourceLineNo">27796</span> public static Dataset expm1(final Object a) {<a name="line.27796"></a>
<span class="sourceLineNo">27797</span> return expm1(a, null);<a name="line.27797"></a>
<span class="sourceLineNo">27798</span> }<a name="line.27798"></a>
<span class="sourceLineNo">27799</span><a name="line.27799"></a>
<span class="sourceLineNo">27800</span> /**<a name="line.27800"></a>
<span class="sourceLineNo">27801</span> * expm1 - evaluate the exponential function - 1 on each element of the dataset<a name="line.27801"></a>
<span class="sourceLineNo">27802</span> * @param a<a name="line.27802"></a>
<span class="sourceLineNo">27803</span> * @param o output can be null - in which case, a new dataset is created<a name="line.27803"></a>
<span class="sourceLineNo">27804</span> * @return dataset<a name="line.27804"></a>
<span class="sourceLineNo">27805</span> */<a name="line.27805"></a>
<span class="sourceLineNo">27806</span> public static Dataset expm1(final Object a, final Dataset o) {<a name="line.27806"></a>
<span class="sourceLineNo">27807</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.27807"></a>
<span class="sourceLineNo">27808</span> SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true);<a name="line.27808"></a>
<span class="sourceLineNo">27809</span> final Dataset result = it.getOutput();<a name="line.27809"></a>
<span class="sourceLineNo">27810</span> if (!result.isComplex()) {<a name="line.27810"></a>
<span class="sourceLineNo">27811</span> if (da.isComplex()) {<a name="line.27811"></a>
<span class="sourceLineNo">27812</span> da = da.getRealView();<a name="line.27812"></a>
<span class="sourceLineNo">27813</span> it = new SingleInputBroadcastIterator(da, result, true);<a name="line.27813"></a>
<span class="sourceLineNo">27814</span> }<a name="line.27814"></a>
<span class="sourceLineNo">27815</span> }<a name="line.27815"></a>
<span class="sourceLineNo">27816</span> final int is = result.getElementsPerItem();<a name="line.27816"></a>
<span class="sourceLineNo">27817</span> final int as = da.getElementsPerItem();<a name="line.27817"></a>
<span class="sourceLineNo">27818</span> final int dt = result.getDType();<a name="line.27818"></a>
<span class="sourceLineNo">27819</span><a name="line.27819"></a>
<span class="sourceLineNo">27820</span> switch(dt) {<a name="line.27820"></a>
<span class="sourceLineNo">27821</span> case Dataset.INT8:<a name="line.27821"></a>
<span class="sourceLineNo">27822</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.27822"></a>
<span class="sourceLineNo">27823</span> if (it.isOutputDouble()) {<a name="line.27823"></a>
<span class="sourceLineNo">27824</span> while (it.hasNext()) {<a name="line.27824"></a>
<span class="sourceLineNo">27825</span> final double ix = it.aDouble;<a name="line.27825"></a>
<span class="sourceLineNo">27826</span> byte ox;<a name="line.27826"></a>
<span class="sourceLineNo">27827</span> ox = (byte) toLong(Math.expm1(ix));<a name="line.27827"></a>
<span class="sourceLineNo">27828</span> oi8data[it.oIndex] = ox;<a name="line.27828"></a>
<span class="sourceLineNo">27829</span> }<a name="line.27829"></a>
<span class="sourceLineNo">27830</span> } else {<a name="line.27830"></a>
<span class="sourceLineNo">27831</span> while (it.hasNext()) {<a name="line.27831"></a>
<span class="sourceLineNo">27832</span> final long ix = it.aLong;<a name="line.27832"></a>
<span class="sourceLineNo">27833</span> byte ox;<a name="line.27833"></a>
<span class="sourceLineNo">27834</span> ox = (byte) toLong(Math.expm1(ix));<a name="line.27834"></a>
<span class="sourceLineNo">27835</span> oi8data[it.oIndex] = ox;<a name="line.27835"></a>
<span class="sourceLineNo">27836</span> }<a name="line.27836"></a>
<span class="sourceLineNo">27837</span> }<a name="line.27837"></a>
<span class="sourceLineNo">27838</span> break;<a name="line.27838"></a>
<span class="sourceLineNo">27839</span> case Dataset.INT16:<a name="line.27839"></a>
<span class="sourceLineNo">27840</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.27840"></a>
<span class="sourceLineNo">27841</span> if (it.isOutputDouble()) {<a name="line.27841"></a>
<span class="sourceLineNo">27842</span> while (it.hasNext()) {<a name="line.27842"></a>
<span class="sourceLineNo">27843</span> final double ix = it.aDouble;<a name="line.27843"></a>
<span class="sourceLineNo">27844</span> short ox;<a name="line.27844"></a>
<span class="sourceLineNo">27845</span> ox = (short) toLong(Math.expm1(ix));<a name="line.27845"></a>
<span class="sourceLineNo">27846</span> oi16data[it.oIndex] = ox;<a name="line.27846"></a>
<span class="sourceLineNo">27847</span> }<a name="line.27847"></a>
<span class="sourceLineNo">27848</span> } else {<a name="line.27848"></a>
<span class="sourceLineNo">27849</span> while (it.hasNext()) {<a name="line.27849"></a>
<span class="sourceLineNo">27850</span> final long ix = it.aLong;<a name="line.27850"></a>
<span class="sourceLineNo">27851</span> short ox;<a name="line.27851"></a>
<span class="sourceLineNo">27852</span> ox = (short) toLong(Math.expm1(ix));<a name="line.27852"></a>
<span class="sourceLineNo">27853</span> oi16data[it.oIndex] = ox;<a name="line.27853"></a>
<span class="sourceLineNo">27854</span> }<a name="line.27854"></a>
<span class="sourceLineNo">27855</span> }<a name="line.27855"></a>
<span class="sourceLineNo">27856</span> break;<a name="line.27856"></a>
<span class="sourceLineNo">27857</span> case Dataset.INT64:<a name="line.27857"></a>
<span class="sourceLineNo">27858</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.27858"></a>
<span class="sourceLineNo">27859</span> if (it.isOutputDouble()) {<a name="line.27859"></a>
<span class="sourceLineNo">27860</span> while (it.hasNext()) {<a name="line.27860"></a>
<span class="sourceLineNo">27861</span> final double ix = it.aDouble;<a name="line.27861"></a>
<span class="sourceLineNo">27862</span> long ox;<a name="line.27862"></a>
<span class="sourceLineNo">27863</span> ox = toLong(Math.expm1(ix));<a name="line.27863"></a>
<span class="sourceLineNo">27864</span> oi64data[it.oIndex] = ox;<a name="line.27864"></a>
<span class="sourceLineNo">27865</span> }<a name="line.27865"></a>
<span class="sourceLineNo">27866</span> } else {<a name="line.27866"></a>
<span class="sourceLineNo">27867</span> while (it.hasNext()) {<a name="line.27867"></a>
<span class="sourceLineNo">27868</span> final long ix = it.aLong;<a name="line.27868"></a>
<span class="sourceLineNo">27869</span> long ox;<a name="line.27869"></a>
<span class="sourceLineNo">27870</span> ox = toLong(Math.expm1(ix));<a name="line.27870"></a>
<span class="sourceLineNo">27871</span> oi64data[it.oIndex] = ox;<a name="line.27871"></a>
<span class="sourceLineNo">27872</span> }<a name="line.27872"></a>
<span class="sourceLineNo">27873</span> }<a name="line.27873"></a>
<span class="sourceLineNo">27874</span> break;<a name="line.27874"></a>
<span class="sourceLineNo">27875</span> case Dataset.INT32:<a name="line.27875"></a>
<span class="sourceLineNo">27876</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.27876"></a>
<span class="sourceLineNo">27877</span> if (it.isOutputDouble()) {<a name="line.27877"></a>
<span class="sourceLineNo">27878</span> while (it.hasNext()) {<a name="line.27878"></a>
<span class="sourceLineNo">27879</span> final double ix = it.aDouble;<a name="line.27879"></a>
<span class="sourceLineNo">27880</span> int ox;<a name="line.27880"></a>
<span class="sourceLineNo">27881</span> ox = (int) toLong(Math.expm1(ix));<a name="line.27881"></a>
<span class="sourceLineNo">27882</span> oi32data[it.oIndex] = ox;<a name="line.27882"></a>
<span class="sourceLineNo">27883</span> }<a name="line.27883"></a>
<span class="sourceLineNo">27884</span> } else {<a name="line.27884"></a>
<span class="sourceLineNo">27885</span> while (it.hasNext()) {<a name="line.27885"></a>
<span class="sourceLineNo">27886</span> final long ix = it.aLong;<a name="line.27886"></a>
<span class="sourceLineNo">27887</span> int ox;<a name="line.27887"></a>
<span class="sourceLineNo">27888</span> ox = (int) toLong(Math.expm1(ix));<a name="line.27888"></a>
<span class="sourceLineNo">27889</span> oi32data[it.oIndex] = ox;<a name="line.27889"></a>
<span class="sourceLineNo">27890</span> }<a name="line.27890"></a>
<span class="sourceLineNo">27891</span> }<a name="line.27891"></a>
<span class="sourceLineNo">27892</span> break;<a name="line.27892"></a>
<span class="sourceLineNo">27893</span> case Dataset.ARRAYINT8:<a name="line.27893"></a>
<span class="sourceLineNo">27894</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.27894"></a>
<span class="sourceLineNo">27895</span> if (is == 1) {<a name="line.27895"></a>
<span class="sourceLineNo">27896</span> if (it.isOutputDouble()) {<a name="line.27896"></a>
<span class="sourceLineNo">27897</span> while (it.hasNext()) {<a name="line.27897"></a>
<span class="sourceLineNo">27898</span> final double ix = it.aDouble;<a name="line.27898"></a>
<span class="sourceLineNo">27899</span> byte ox;<a name="line.27899"></a>
<span class="sourceLineNo">27900</span> ox = (byte) toLong(Math.expm1(ix));<a name="line.27900"></a>
<span class="sourceLineNo">27901</span> oai8data[it.oIndex] = ox;<a name="line.27901"></a>
<span class="sourceLineNo">27902</span> }<a name="line.27902"></a>
<span class="sourceLineNo">27903</span> } else {<a name="line.27903"></a>
<span class="sourceLineNo">27904</span> while (it.hasNext()) {<a name="line.27904"></a>
<span class="sourceLineNo">27905</span> final long ix = it.aLong;<a name="line.27905"></a>
<span class="sourceLineNo">27906</span> byte ox;<a name="line.27906"></a>
<span class="sourceLineNo">27907</span> ox = (byte) toLong(Math.expm1(ix));<a name="line.27907"></a>
<span class="sourceLineNo">27908</span> oai8data[it.oIndex] = ox;<a name="line.27908"></a>
<span class="sourceLineNo">27909</span> }<a name="line.27909"></a>
<span class="sourceLineNo">27910</span> }<a name="line.27910"></a>
<span class="sourceLineNo">27911</span> } else if (as == 1) {<a name="line.27911"></a>
<span class="sourceLineNo">27912</span> if (it.isOutputDouble()) {<a name="line.27912"></a>
<span class="sourceLineNo">27913</span> while (it.hasNext()) {<a name="line.27913"></a>
<span class="sourceLineNo">27914</span> final double ix = it.aDouble;<a name="line.27914"></a>
<span class="sourceLineNo">27915</span> byte ox;<a name="line.27915"></a>
<span class="sourceLineNo">27916</span> ox = (byte) toLong(Math.expm1(ix));<a name="line.27916"></a>
<span class="sourceLineNo">27917</span> for (int j = 0; j &lt; is; j++) {<a name="line.27917"></a>
<span class="sourceLineNo">27918</span> oai8data[it.oIndex + j] = ox;<a name="line.27918"></a>
<span class="sourceLineNo">27919</span> }<a name="line.27919"></a>
<span class="sourceLineNo">27920</span> }<a name="line.27920"></a>
<span class="sourceLineNo">27921</span> } else {<a name="line.27921"></a>
<span class="sourceLineNo">27922</span> while (it.hasNext()) {<a name="line.27922"></a>
<span class="sourceLineNo">27923</span> final long ix = it.aLong;<a name="line.27923"></a>
<span class="sourceLineNo">27924</span> byte ox;<a name="line.27924"></a>
<span class="sourceLineNo">27925</span> ox = (byte) toLong(Math.expm1(ix));<a name="line.27925"></a>
<span class="sourceLineNo">27926</span> for (int j = 0; j &lt; is; j++) {<a name="line.27926"></a>
<span class="sourceLineNo">27927</span> oai8data[it.oIndex + j] = ox;<a name="line.27927"></a>
<span class="sourceLineNo">27928</span> }<a name="line.27928"></a>
<span class="sourceLineNo">27929</span> }<a name="line.27929"></a>
<span class="sourceLineNo">27930</span> }<a name="line.27930"></a>
<span class="sourceLineNo">27931</span> } else {<a name="line.27931"></a>
<span class="sourceLineNo">27932</span> if (it.isOutputDouble()) {<a name="line.27932"></a>
<span class="sourceLineNo">27933</span> while (it.hasNext()) {<a name="line.27933"></a>
<span class="sourceLineNo">27934</span> for (int j = 0; j &lt; is; j++) {<a name="line.27934"></a>
<span class="sourceLineNo">27935</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.27935"></a>
<span class="sourceLineNo">27936</span> byte ox;<a name="line.27936"></a>
<span class="sourceLineNo">27937</span> ox = (byte) toLong(Math.expm1(ix));<a name="line.27937"></a>
<span class="sourceLineNo">27938</span> oai8data[it.oIndex + j] = ox;<a name="line.27938"></a>
<span class="sourceLineNo">27939</span> }<a name="line.27939"></a>
<span class="sourceLineNo">27940</span> }<a name="line.27940"></a>
<span class="sourceLineNo">27941</span> } else {<a name="line.27941"></a>
<span class="sourceLineNo">27942</span> while (it.hasNext()) {<a name="line.27942"></a>
<span class="sourceLineNo">27943</span> for (int j = 0; j &lt; is; j++) {<a name="line.27943"></a>
<span class="sourceLineNo">27944</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.27944"></a>
<span class="sourceLineNo">27945</span> byte ox;<a name="line.27945"></a>
<span class="sourceLineNo">27946</span> ox = (byte) toLong(Math.expm1(ix));<a name="line.27946"></a>
<span class="sourceLineNo">27947</span> oai8data[it.oIndex + j] = ox;<a name="line.27947"></a>
<span class="sourceLineNo">27948</span> }<a name="line.27948"></a>
<span class="sourceLineNo">27949</span> }<a name="line.27949"></a>
<span class="sourceLineNo">27950</span> }<a name="line.27950"></a>
<span class="sourceLineNo">27951</span> }<a name="line.27951"></a>
<span class="sourceLineNo">27952</span> break;<a name="line.27952"></a>
<span class="sourceLineNo">27953</span> case Dataset.ARRAYINT16:<a name="line.27953"></a>
<span class="sourceLineNo">27954</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.27954"></a>
<span class="sourceLineNo">27955</span> if (is == 1) {<a name="line.27955"></a>
<span class="sourceLineNo">27956</span> if (it.isOutputDouble()) {<a name="line.27956"></a>
<span class="sourceLineNo">27957</span> while (it.hasNext()) {<a name="line.27957"></a>
<span class="sourceLineNo">27958</span> final double ix = it.aDouble;<a name="line.27958"></a>
<span class="sourceLineNo">27959</span> short ox;<a name="line.27959"></a>
<span class="sourceLineNo">27960</span> ox = (short) toLong(Math.expm1(ix));<a name="line.27960"></a>
<span class="sourceLineNo">27961</span> oai16data[it.oIndex] = ox;<a name="line.27961"></a>
<span class="sourceLineNo">27962</span> }<a name="line.27962"></a>
<span class="sourceLineNo">27963</span> } else {<a name="line.27963"></a>
<span class="sourceLineNo">27964</span> while (it.hasNext()) {<a name="line.27964"></a>
<span class="sourceLineNo">27965</span> final long ix = it.aLong;<a name="line.27965"></a>
<span class="sourceLineNo">27966</span> short ox;<a name="line.27966"></a>
<span class="sourceLineNo">27967</span> ox = (short) toLong(Math.expm1(ix));<a name="line.27967"></a>
<span class="sourceLineNo">27968</span> oai16data[it.oIndex] = ox;<a name="line.27968"></a>
<span class="sourceLineNo">27969</span> }<a name="line.27969"></a>
<span class="sourceLineNo">27970</span> }<a name="line.27970"></a>
<span class="sourceLineNo">27971</span> } else if (as == 1) {<a name="line.27971"></a>
<span class="sourceLineNo">27972</span> if (it.isOutputDouble()) {<a name="line.27972"></a>
<span class="sourceLineNo">27973</span> while (it.hasNext()) {<a name="line.27973"></a>
<span class="sourceLineNo">27974</span> final double ix = it.aDouble;<a name="line.27974"></a>
<span class="sourceLineNo">27975</span> short ox;<a name="line.27975"></a>
<span class="sourceLineNo">27976</span> ox = (short) toLong(Math.expm1(ix));<a name="line.27976"></a>
<span class="sourceLineNo">27977</span> for (int j = 0; j &lt; is; j++) {<a name="line.27977"></a>
<span class="sourceLineNo">27978</span> oai16data[it.oIndex + j] = ox;<a name="line.27978"></a>
<span class="sourceLineNo">27979</span> }<a name="line.27979"></a>
<span class="sourceLineNo">27980</span> }<a name="line.27980"></a>
<span class="sourceLineNo">27981</span> } else {<a name="line.27981"></a>
<span class="sourceLineNo">27982</span> while (it.hasNext()) {<a name="line.27982"></a>
<span class="sourceLineNo">27983</span> final long ix = it.aLong;<a name="line.27983"></a>
<span class="sourceLineNo">27984</span> short ox;<a name="line.27984"></a>
<span class="sourceLineNo">27985</span> ox = (short) toLong(Math.expm1(ix));<a name="line.27985"></a>
<span class="sourceLineNo">27986</span> for (int j = 0; j &lt; is; j++) {<a name="line.27986"></a>
<span class="sourceLineNo">27987</span> oai16data[it.oIndex + j] = ox;<a name="line.27987"></a>
<span class="sourceLineNo">27988</span> }<a name="line.27988"></a>
<span class="sourceLineNo">27989</span> }<a name="line.27989"></a>
<span class="sourceLineNo">27990</span> }<a name="line.27990"></a>
<span class="sourceLineNo">27991</span> } else {<a name="line.27991"></a>
<span class="sourceLineNo">27992</span> if (it.isOutputDouble()) {<a name="line.27992"></a>
<span class="sourceLineNo">27993</span> while (it.hasNext()) {<a name="line.27993"></a>
<span class="sourceLineNo">27994</span> for (int j = 0; j &lt; is; j++) {<a name="line.27994"></a>
<span class="sourceLineNo">27995</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.27995"></a>
<span class="sourceLineNo">27996</span> short ox;<a name="line.27996"></a>
<span class="sourceLineNo">27997</span> ox = (short) toLong(Math.expm1(ix));<a name="line.27997"></a>
<span class="sourceLineNo">27998</span> oai16data[it.oIndex + j] = ox;<a name="line.27998"></a>
<span class="sourceLineNo">27999</span> }<a name="line.27999"></a>
<span class="sourceLineNo">28000</span> }<a name="line.28000"></a>
<span class="sourceLineNo">28001</span> } else {<a name="line.28001"></a>
<span class="sourceLineNo">28002</span> while (it.hasNext()) {<a name="line.28002"></a>
<span class="sourceLineNo">28003</span> for (int j = 0; j &lt; is; j++) {<a name="line.28003"></a>
<span class="sourceLineNo">28004</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.28004"></a>
<span class="sourceLineNo">28005</span> short ox;<a name="line.28005"></a>
<span class="sourceLineNo">28006</span> ox = (short) toLong(Math.expm1(ix));<a name="line.28006"></a>
<span class="sourceLineNo">28007</span> oai16data[it.oIndex + j] = ox;<a name="line.28007"></a>
<span class="sourceLineNo">28008</span> }<a name="line.28008"></a>
<span class="sourceLineNo">28009</span> }<a name="line.28009"></a>
<span class="sourceLineNo">28010</span> }<a name="line.28010"></a>
<span class="sourceLineNo">28011</span> }<a name="line.28011"></a>
<span class="sourceLineNo">28012</span> break;<a name="line.28012"></a>
<span class="sourceLineNo">28013</span> case Dataset.ARRAYINT64:<a name="line.28013"></a>
<span class="sourceLineNo">28014</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.28014"></a>
<span class="sourceLineNo">28015</span> if (is == 1) {<a name="line.28015"></a>
<span class="sourceLineNo">28016</span> if (it.isOutputDouble()) {<a name="line.28016"></a>
<span class="sourceLineNo">28017</span> while (it.hasNext()) {<a name="line.28017"></a>
<span class="sourceLineNo">28018</span> final double ix = it.aDouble;<a name="line.28018"></a>
<span class="sourceLineNo">28019</span> long ox;<a name="line.28019"></a>
<span class="sourceLineNo">28020</span> ox = toLong(Math.expm1(ix));<a name="line.28020"></a>
<span class="sourceLineNo">28021</span> oai64data[it.oIndex] = ox;<a name="line.28021"></a>
<span class="sourceLineNo">28022</span> }<a name="line.28022"></a>
<span class="sourceLineNo">28023</span> } else {<a name="line.28023"></a>
<span class="sourceLineNo">28024</span> while (it.hasNext()) {<a name="line.28024"></a>
<span class="sourceLineNo">28025</span> final long ix = it.aLong;<a name="line.28025"></a>
<span class="sourceLineNo">28026</span> long ox;<a name="line.28026"></a>
<span class="sourceLineNo">28027</span> ox = toLong(Math.expm1(ix));<a name="line.28027"></a>
<span class="sourceLineNo">28028</span> oai64data[it.oIndex] = ox;<a name="line.28028"></a>
<span class="sourceLineNo">28029</span> }<a name="line.28029"></a>
<span class="sourceLineNo">28030</span> }<a name="line.28030"></a>
<span class="sourceLineNo">28031</span> } else if (as == 1) {<a name="line.28031"></a>
<span class="sourceLineNo">28032</span> if (it.isOutputDouble()) {<a name="line.28032"></a>
<span class="sourceLineNo">28033</span> while (it.hasNext()) {<a name="line.28033"></a>
<span class="sourceLineNo">28034</span> final double ix = it.aDouble;<a name="line.28034"></a>
<span class="sourceLineNo">28035</span> long ox;<a name="line.28035"></a>
<span class="sourceLineNo">28036</span> ox = toLong(Math.expm1(ix));<a name="line.28036"></a>
<span class="sourceLineNo">28037</span> for (int j = 0; j &lt; is; j++) {<a name="line.28037"></a>
<span class="sourceLineNo">28038</span> oai64data[it.oIndex + j] = ox;<a name="line.28038"></a>
<span class="sourceLineNo">28039</span> }<a name="line.28039"></a>
<span class="sourceLineNo">28040</span> }<a name="line.28040"></a>
<span class="sourceLineNo">28041</span> } else {<a name="line.28041"></a>
<span class="sourceLineNo">28042</span> while (it.hasNext()) {<a name="line.28042"></a>
<span class="sourceLineNo">28043</span> final long ix = it.aLong;<a name="line.28043"></a>
<span class="sourceLineNo">28044</span> long ox;<a name="line.28044"></a>
<span class="sourceLineNo">28045</span> ox = toLong(Math.expm1(ix));<a name="line.28045"></a>
<span class="sourceLineNo">28046</span> for (int j = 0; j &lt; is; j++) {<a name="line.28046"></a>
<span class="sourceLineNo">28047</span> oai64data[it.oIndex + j] = ox;<a name="line.28047"></a>
<span class="sourceLineNo">28048</span> }<a name="line.28048"></a>
<span class="sourceLineNo">28049</span> }<a name="line.28049"></a>
<span class="sourceLineNo">28050</span> }<a name="line.28050"></a>
<span class="sourceLineNo">28051</span> } else {<a name="line.28051"></a>
<span class="sourceLineNo">28052</span> if (it.isOutputDouble()) {<a name="line.28052"></a>
<span class="sourceLineNo">28053</span> while (it.hasNext()) {<a name="line.28053"></a>
<span class="sourceLineNo">28054</span> for (int j = 0; j &lt; is; j++) {<a name="line.28054"></a>
<span class="sourceLineNo">28055</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.28055"></a>
<span class="sourceLineNo">28056</span> long ox;<a name="line.28056"></a>
<span class="sourceLineNo">28057</span> ox = toLong(Math.expm1(ix));<a name="line.28057"></a>
<span class="sourceLineNo">28058</span> oai64data[it.oIndex + j] = ox;<a name="line.28058"></a>
<span class="sourceLineNo">28059</span> }<a name="line.28059"></a>
<span class="sourceLineNo">28060</span> }<a name="line.28060"></a>
<span class="sourceLineNo">28061</span> } else {<a name="line.28061"></a>
<span class="sourceLineNo">28062</span> while (it.hasNext()) {<a name="line.28062"></a>
<span class="sourceLineNo">28063</span> for (int j = 0; j &lt; is; j++) {<a name="line.28063"></a>
<span class="sourceLineNo">28064</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.28064"></a>
<span class="sourceLineNo">28065</span> long ox;<a name="line.28065"></a>
<span class="sourceLineNo">28066</span> ox = toLong(Math.expm1(ix));<a name="line.28066"></a>
<span class="sourceLineNo">28067</span> oai64data[it.oIndex + j] = ox;<a name="line.28067"></a>
<span class="sourceLineNo">28068</span> }<a name="line.28068"></a>
<span class="sourceLineNo">28069</span> }<a name="line.28069"></a>
<span class="sourceLineNo">28070</span> }<a name="line.28070"></a>
<span class="sourceLineNo">28071</span> }<a name="line.28071"></a>
<span class="sourceLineNo">28072</span> break;<a name="line.28072"></a>
<span class="sourceLineNo">28073</span> case Dataset.ARRAYINT32:<a name="line.28073"></a>
<span class="sourceLineNo">28074</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.28074"></a>
<span class="sourceLineNo">28075</span> if (is == 1) {<a name="line.28075"></a>
<span class="sourceLineNo">28076</span> if (it.isOutputDouble()) {<a name="line.28076"></a>
<span class="sourceLineNo">28077</span> while (it.hasNext()) {<a name="line.28077"></a>
<span class="sourceLineNo">28078</span> final double ix = it.aDouble;<a name="line.28078"></a>
<span class="sourceLineNo">28079</span> int ox;<a name="line.28079"></a>
<span class="sourceLineNo">28080</span> ox = (int) toLong(Math.expm1(ix));<a name="line.28080"></a>
<span class="sourceLineNo">28081</span> oai32data[it.oIndex] = ox;<a name="line.28081"></a>
<span class="sourceLineNo">28082</span> }<a name="line.28082"></a>
<span class="sourceLineNo">28083</span> } else {<a name="line.28083"></a>
<span class="sourceLineNo">28084</span> while (it.hasNext()) {<a name="line.28084"></a>
<span class="sourceLineNo">28085</span> final long ix = it.aLong;<a name="line.28085"></a>
<span class="sourceLineNo">28086</span> int ox;<a name="line.28086"></a>
<span class="sourceLineNo">28087</span> ox = (int) toLong(Math.expm1(ix));<a name="line.28087"></a>
<span class="sourceLineNo">28088</span> oai32data[it.oIndex] = ox;<a name="line.28088"></a>
<span class="sourceLineNo">28089</span> }<a name="line.28089"></a>
<span class="sourceLineNo">28090</span> }<a name="line.28090"></a>
<span class="sourceLineNo">28091</span> } else if (as == 1) {<a name="line.28091"></a>
<span class="sourceLineNo">28092</span> if (it.isOutputDouble()) {<a name="line.28092"></a>
<span class="sourceLineNo">28093</span> while (it.hasNext()) {<a name="line.28093"></a>
<span class="sourceLineNo">28094</span> final double ix = it.aDouble;<a name="line.28094"></a>
<span class="sourceLineNo">28095</span> int ox;<a name="line.28095"></a>
<span class="sourceLineNo">28096</span> ox = (int) toLong(Math.expm1(ix));<a name="line.28096"></a>
<span class="sourceLineNo">28097</span> for (int j = 0; j &lt; is; j++) {<a name="line.28097"></a>
<span class="sourceLineNo">28098</span> oai32data[it.oIndex + j] = ox;<a name="line.28098"></a>
<span class="sourceLineNo">28099</span> }<a name="line.28099"></a>
<span class="sourceLineNo">28100</span> }<a name="line.28100"></a>
<span class="sourceLineNo">28101</span> } else {<a name="line.28101"></a>
<span class="sourceLineNo">28102</span> while (it.hasNext()) {<a name="line.28102"></a>
<span class="sourceLineNo">28103</span> final long ix = it.aLong;<a name="line.28103"></a>
<span class="sourceLineNo">28104</span> int ox;<a name="line.28104"></a>
<span class="sourceLineNo">28105</span> ox = (int) toLong(Math.expm1(ix));<a name="line.28105"></a>
<span class="sourceLineNo">28106</span> for (int j = 0; j &lt; is; j++) {<a name="line.28106"></a>
<span class="sourceLineNo">28107</span> oai32data[it.oIndex + j] = ox;<a name="line.28107"></a>
<span class="sourceLineNo">28108</span> }<a name="line.28108"></a>
<span class="sourceLineNo">28109</span> }<a name="line.28109"></a>
<span class="sourceLineNo">28110</span> }<a name="line.28110"></a>
<span class="sourceLineNo">28111</span> } else {<a name="line.28111"></a>
<span class="sourceLineNo">28112</span> if (it.isOutputDouble()) {<a name="line.28112"></a>
<span class="sourceLineNo">28113</span> while (it.hasNext()) {<a name="line.28113"></a>
<span class="sourceLineNo">28114</span> for (int j = 0; j &lt; is; j++) {<a name="line.28114"></a>
<span class="sourceLineNo">28115</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.28115"></a>
<span class="sourceLineNo">28116</span> int ox;<a name="line.28116"></a>
<span class="sourceLineNo">28117</span> ox = (int) toLong(Math.expm1(ix));<a name="line.28117"></a>
<span class="sourceLineNo">28118</span> oai32data[it.oIndex + j] = ox;<a name="line.28118"></a>
<span class="sourceLineNo">28119</span> }<a name="line.28119"></a>
<span class="sourceLineNo">28120</span> }<a name="line.28120"></a>
<span class="sourceLineNo">28121</span> } else {<a name="line.28121"></a>
<span class="sourceLineNo">28122</span> while (it.hasNext()) {<a name="line.28122"></a>
<span class="sourceLineNo">28123</span> for (int j = 0; j &lt; is; j++) {<a name="line.28123"></a>
<span class="sourceLineNo">28124</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.28124"></a>
<span class="sourceLineNo">28125</span> int ox;<a name="line.28125"></a>
<span class="sourceLineNo">28126</span> ox = (int) toLong(Math.expm1(ix));<a name="line.28126"></a>
<span class="sourceLineNo">28127</span> oai32data[it.oIndex + j] = ox;<a name="line.28127"></a>
<span class="sourceLineNo">28128</span> }<a name="line.28128"></a>
<span class="sourceLineNo">28129</span> }<a name="line.28129"></a>
<span class="sourceLineNo">28130</span> }<a name="line.28130"></a>
<span class="sourceLineNo">28131</span> }<a name="line.28131"></a>
<span class="sourceLineNo">28132</span> break;<a name="line.28132"></a>
<span class="sourceLineNo">28133</span> case Dataset.FLOAT32:<a name="line.28133"></a>
<span class="sourceLineNo">28134</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.28134"></a>
<span class="sourceLineNo">28135</span> if (it.isOutputDouble()) {<a name="line.28135"></a>
<span class="sourceLineNo">28136</span> while (it.hasNext()) {<a name="line.28136"></a>
<span class="sourceLineNo">28137</span> final double ix = it.aDouble;<a name="line.28137"></a>
<span class="sourceLineNo">28138</span> float ox;<a name="line.28138"></a>
<span class="sourceLineNo">28139</span> ox = (float) (Math.expm1(ix));<a name="line.28139"></a>
<span class="sourceLineNo">28140</span> of32data[it.oIndex] = ox;<a name="line.28140"></a>
<span class="sourceLineNo">28141</span> }<a name="line.28141"></a>
<span class="sourceLineNo">28142</span> } else {<a name="line.28142"></a>
<span class="sourceLineNo">28143</span> while (it.hasNext()) {<a name="line.28143"></a>
<span class="sourceLineNo">28144</span> final long ix = it.aLong;<a name="line.28144"></a>
<span class="sourceLineNo">28145</span> float ox;<a name="line.28145"></a>
<span class="sourceLineNo">28146</span> ox = (float) (Math.expm1(ix));<a name="line.28146"></a>
<span class="sourceLineNo">28147</span> of32data[it.oIndex] = ox;<a name="line.28147"></a>
<span class="sourceLineNo">28148</span> }<a name="line.28148"></a>
<span class="sourceLineNo">28149</span> }<a name="line.28149"></a>
<span class="sourceLineNo">28150</span> break;<a name="line.28150"></a>
<span class="sourceLineNo">28151</span> case Dataset.FLOAT64:<a name="line.28151"></a>
<span class="sourceLineNo">28152</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.28152"></a>
<span class="sourceLineNo">28153</span> if (it.isOutputDouble()) {<a name="line.28153"></a>
<span class="sourceLineNo">28154</span> while (it.hasNext()) {<a name="line.28154"></a>
<span class="sourceLineNo">28155</span> final double ix = it.aDouble;<a name="line.28155"></a>
<span class="sourceLineNo">28156</span> double ox;<a name="line.28156"></a>
<span class="sourceLineNo">28157</span> ox = (Math.expm1(ix));<a name="line.28157"></a>
<span class="sourceLineNo">28158</span> of64data[it.oIndex] = ox;<a name="line.28158"></a>
<span class="sourceLineNo">28159</span> }<a name="line.28159"></a>
<span class="sourceLineNo">28160</span> } else {<a name="line.28160"></a>
<span class="sourceLineNo">28161</span> while (it.hasNext()) {<a name="line.28161"></a>
<span class="sourceLineNo">28162</span> final long ix = it.aLong;<a name="line.28162"></a>
<span class="sourceLineNo">28163</span> double ox;<a name="line.28163"></a>
<span class="sourceLineNo">28164</span> ox = (Math.expm1(ix));<a name="line.28164"></a>
<span class="sourceLineNo">28165</span> of64data[it.oIndex] = ox;<a name="line.28165"></a>
<span class="sourceLineNo">28166</span> }<a name="line.28166"></a>
<span class="sourceLineNo">28167</span> }<a name="line.28167"></a>
<span class="sourceLineNo">28168</span> break;<a name="line.28168"></a>
<span class="sourceLineNo">28169</span> case Dataset.ARRAYFLOAT32:<a name="line.28169"></a>
<span class="sourceLineNo">28170</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.28170"></a>
<span class="sourceLineNo">28171</span> if (is == 1) {<a name="line.28171"></a>
<span class="sourceLineNo">28172</span> if (it.isOutputDouble()) {<a name="line.28172"></a>
<span class="sourceLineNo">28173</span> while (it.hasNext()) {<a name="line.28173"></a>
<span class="sourceLineNo">28174</span> final double ix = it.aDouble;<a name="line.28174"></a>
<span class="sourceLineNo">28175</span> float ox;<a name="line.28175"></a>
<span class="sourceLineNo">28176</span> ox = (float) (Math.expm1(ix));<a name="line.28176"></a>
<span class="sourceLineNo">28177</span> oaf32data[it.oIndex] = ox;<a name="line.28177"></a>
<span class="sourceLineNo">28178</span> }<a name="line.28178"></a>
<span class="sourceLineNo">28179</span> } else {<a name="line.28179"></a>
<span class="sourceLineNo">28180</span> while (it.hasNext()) {<a name="line.28180"></a>
<span class="sourceLineNo">28181</span> final long ix = it.aLong;<a name="line.28181"></a>
<span class="sourceLineNo">28182</span> float ox;<a name="line.28182"></a>
<span class="sourceLineNo">28183</span> ox = (float) (Math.expm1(ix));<a name="line.28183"></a>
<span class="sourceLineNo">28184</span> oaf32data[it.oIndex] = ox;<a name="line.28184"></a>
<span class="sourceLineNo">28185</span> }<a name="line.28185"></a>
<span class="sourceLineNo">28186</span> }<a name="line.28186"></a>
<span class="sourceLineNo">28187</span> } else if (as == 1) {<a name="line.28187"></a>
<span class="sourceLineNo">28188</span> if (it.isOutputDouble()) {<a name="line.28188"></a>
<span class="sourceLineNo">28189</span> while (it.hasNext()) {<a name="line.28189"></a>
<span class="sourceLineNo">28190</span> final double ix = it.aDouble;<a name="line.28190"></a>
<span class="sourceLineNo">28191</span> float ox;<a name="line.28191"></a>
<span class="sourceLineNo">28192</span> ox = (float) (Math.expm1(ix));<a name="line.28192"></a>
<span class="sourceLineNo">28193</span> for (int j = 0; j &lt; is; j++) {<a name="line.28193"></a>
<span class="sourceLineNo">28194</span> oaf32data[it.oIndex + j] = ox;<a name="line.28194"></a>
<span class="sourceLineNo">28195</span> }<a name="line.28195"></a>
<span class="sourceLineNo">28196</span> }<a name="line.28196"></a>
<span class="sourceLineNo">28197</span> } else {<a name="line.28197"></a>
<span class="sourceLineNo">28198</span> while (it.hasNext()) {<a name="line.28198"></a>
<span class="sourceLineNo">28199</span> final long ix = it.aLong;<a name="line.28199"></a>
<span class="sourceLineNo">28200</span> float ox;<a name="line.28200"></a>
<span class="sourceLineNo">28201</span> ox = (float) (Math.expm1(ix));<a name="line.28201"></a>
<span class="sourceLineNo">28202</span> for (int j = 0; j &lt; is; j++) {<a name="line.28202"></a>
<span class="sourceLineNo">28203</span> oaf32data[it.oIndex + j] = ox;<a name="line.28203"></a>
<span class="sourceLineNo">28204</span> }<a name="line.28204"></a>
<span class="sourceLineNo">28205</span> }<a name="line.28205"></a>
<span class="sourceLineNo">28206</span> }<a name="line.28206"></a>
<span class="sourceLineNo">28207</span> } else {<a name="line.28207"></a>
<span class="sourceLineNo">28208</span> if (it.isOutputDouble()) {<a name="line.28208"></a>
<span class="sourceLineNo">28209</span> while (it.hasNext()) {<a name="line.28209"></a>
<span class="sourceLineNo">28210</span> for (int j = 0; j &lt; is; j++) {<a name="line.28210"></a>
<span class="sourceLineNo">28211</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.28211"></a>
<span class="sourceLineNo">28212</span> float ox;<a name="line.28212"></a>
<span class="sourceLineNo">28213</span> ox = (float) (Math.expm1(ix));<a name="line.28213"></a>
<span class="sourceLineNo">28214</span> oaf32data[it.oIndex + j] = ox;<a name="line.28214"></a>
<span class="sourceLineNo">28215</span> }<a name="line.28215"></a>
<span class="sourceLineNo">28216</span> }<a name="line.28216"></a>
<span class="sourceLineNo">28217</span> } else {<a name="line.28217"></a>
<span class="sourceLineNo">28218</span> while (it.hasNext()) {<a name="line.28218"></a>
<span class="sourceLineNo">28219</span> for (int j = 0; j &lt; is; j++) {<a name="line.28219"></a>
<span class="sourceLineNo">28220</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.28220"></a>
<span class="sourceLineNo">28221</span> float ox;<a name="line.28221"></a>
<span class="sourceLineNo">28222</span> ox = (float) (Math.expm1(ix));<a name="line.28222"></a>
<span class="sourceLineNo">28223</span> oaf32data[it.oIndex + j] = ox;<a name="line.28223"></a>
<span class="sourceLineNo">28224</span> }<a name="line.28224"></a>
<span class="sourceLineNo">28225</span> }<a name="line.28225"></a>
<span class="sourceLineNo">28226</span> }<a name="line.28226"></a>
<span class="sourceLineNo">28227</span> }<a name="line.28227"></a>
<span class="sourceLineNo">28228</span> break;<a name="line.28228"></a>
<span class="sourceLineNo">28229</span> case Dataset.ARRAYFLOAT64:<a name="line.28229"></a>
<span class="sourceLineNo">28230</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.28230"></a>
<span class="sourceLineNo">28231</span> if (is == 1) {<a name="line.28231"></a>
<span class="sourceLineNo">28232</span> if (it.isOutputDouble()) {<a name="line.28232"></a>
<span class="sourceLineNo">28233</span> while (it.hasNext()) {<a name="line.28233"></a>
<span class="sourceLineNo">28234</span> final double ix = it.aDouble;<a name="line.28234"></a>
<span class="sourceLineNo">28235</span> double ox;<a name="line.28235"></a>
<span class="sourceLineNo">28236</span> ox = (Math.expm1(ix));<a name="line.28236"></a>
<span class="sourceLineNo">28237</span> oaf64data[it.oIndex] = ox;<a name="line.28237"></a>
<span class="sourceLineNo">28238</span> }<a name="line.28238"></a>
<span class="sourceLineNo">28239</span> } else {<a name="line.28239"></a>
<span class="sourceLineNo">28240</span> while (it.hasNext()) {<a name="line.28240"></a>
<span class="sourceLineNo">28241</span> final long ix = it.aLong;<a name="line.28241"></a>
<span class="sourceLineNo">28242</span> double ox;<a name="line.28242"></a>
<span class="sourceLineNo">28243</span> ox = (Math.expm1(ix));<a name="line.28243"></a>
<span class="sourceLineNo">28244</span> oaf64data[it.oIndex] = ox;<a name="line.28244"></a>
<span class="sourceLineNo">28245</span> }<a name="line.28245"></a>
<span class="sourceLineNo">28246</span> }<a name="line.28246"></a>
<span class="sourceLineNo">28247</span> } else if (as == 1) {<a name="line.28247"></a>
<span class="sourceLineNo">28248</span> if (it.isOutputDouble()) {<a name="line.28248"></a>
<span class="sourceLineNo">28249</span> while (it.hasNext()) {<a name="line.28249"></a>
<span class="sourceLineNo">28250</span> final double ix = it.aDouble;<a name="line.28250"></a>
<span class="sourceLineNo">28251</span> double ox;<a name="line.28251"></a>
<span class="sourceLineNo">28252</span> ox = (Math.expm1(ix));<a name="line.28252"></a>
<span class="sourceLineNo">28253</span> for (int j = 0; j &lt; is; j++) {<a name="line.28253"></a>
<span class="sourceLineNo">28254</span> oaf64data[it.oIndex + j] = ox;<a name="line.28254"></a>
<span class="sourceLineNo">28255</span> }<a name="line.28255"></a>
<span class="sourceLineNo">28256</span> }<a name="line.28256"></a>
<span class="sourceLineNo">28257</span> } else {<a name="line.28257"></a>
<span class="sourceLineNo">28258</span> while (it.hasNext()) {<a name="line.28258"></a>
<span class="sourceLineNo">28259</span> final long ix = it.aLong;<a name="line.28259"></a>
<span class="sourceLineNo">28260</span> double ox;<a name="line.28260"></a>
<span class="sourceLineNo">28261</span> ox = (Math.expm1(ix));<a name="line.28261"></a>
<span class="sourceLineNo">28262</span> for (int j = 0; j &lt; is; j++) {<a name="line.28262"></a>
<span class="sourceLineNo">28263</span> oaf64data[it.oIndex + j] = ox;<a name="line.28263"></a>
<span class="sourceLineNo">28264</span> }<a name="line.28264"></a>
<span class="sourceLineNo">28265</span> }<a name="line.28265"></a>
<span class="sourceLineNo">28266</span> }<a name="line.28266"></a>
<span class="sourceLineNo">28267</span> } else {<a name="line.28267"></a>
<span class="sourceLineNo">28268</span> if (it.isOutputDouble()) {<a name="line.28268"></a>
<span class="sourceLineNo">28269</span> while (it.hasNext()) {<a name="line.28269"></a>
<span class="sourceLineNo">28270</span> for (int j = 0; j &lt; is; j++) {<a name="line.28270"></a>
<span class="sourceLineNo">28271</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.28271"></a>
<span class="sourceLineNo">28272</span> double ox;<a name="line.28272"></a>
<span class="sourceLineNo">28273</span> ox = (Math.expm1(ix));<a name="line.28273"></a>
<span class="sourceLineNo">28274</span> oaf64data[it.oIndex + j] = ox;<a name="line.28274"></a>
<span class="sourceLineNo">28275</span> }<a name="line.28275"></a>
<span class="sourceLineNo">28276</span> }<a name="line.28276"></a>
<span class="sourceLineNo">28277</span> } else {<a name="line.28277"></a>
<span class="sourceLineNo">28278</span> while (it.hasNext()) {<a name="line.28278"></a>
<span class="sourceLineNo">28279</span> for (int j = 0; j &lt; is; j++) {<a name="line.28279"></a>
<span class="sourceLineNo">28280</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.28280"></a>
<span class="sourceLineNo">28281</span> double ox;<a name="line.28281"></a>
<span class="sourceLineNo">28282</span> ox = (Math.expm1(ix));<a name="line.28282"></a>
<span class="sourceLineNo">28283</span> oaf64data[it.oIndex + j] = ox;<a name="line.28283"></a>
<span class="sourceLineNo">28284</span> }<a name="line.28284"></a>
<span class="sourceLineNo">28285</span> }<a name="line.28285"></a>
<span class="sourceLineNo">28286</span> }<a name="line.28286"></a>
<span class="sourceLineNo">28287</span> }<a name="line.28287"></a>
<span class="sourceLineNo">28288</span> break;<a name="line.28288"></a>
<span class="sourceLineNo">28289</span> case Dataset.COMPLEX64:<a name="line.28289"></a>
<span class="sourceLineNo">28290</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.28290"></a>
<span class="sourceLineNo">28291</span> if (!da.isComplex()) {<a name="line.28291"></a>
<span class="sourceLineNo">28292</span> if (it.isOutputDouble()) {<a name="line.28292"></a>
<span class="sourceLineNo">28293</span> final double iy = 0;<a name="line.28293"></a>
<span class="sourceLineNo">28294</span> while (it.hasNext()) {<a name="line.28294"></a>
<span class="sourceLineNo">28295</span> final double ix = it.aDouble;<a name="line.28295"></a>
<span class="sourceLineNo">28296</span> float tf;<a name="line.28296"></a>
<span class="sourceLineNo">28297</span> float ox;<a name="line.28297"></a>
<span class="sourceLineNo">28298</span> float oy;<a name="line.28298"></a>
<span class="sourceLineNo">28299</span> tf = (float) (Math.expm1(ix));<a name="line.28299"></a>
<span class="sourceLineNo">28300</span> ox = (float) (tf*Math.cos(iy));<a name="line.28300"></a>
<span class="sourceLineNo">28301</span> oy = (float) (tf*Math.sin(iy));<a name="line.28301"></a>
<span class="sourceLineNo">28302</span> oc64data[it.oIndex] = ox;<a name="line.28302"></a>
<span class="sourceLineNo">28303</span> oc64data[it.oIndex + 1] = oy;<a name="line.28303"></a>
<span class="sourceLineNo">28304</span> }<a name="line.28304"></a>
<span class="sourceLineNo">28305</span> } else {<a name="line.28305"></a>
<span class="sourceLineNo">28306</span> final long iy = 0;<a name="line.28306"></a>
<span class="sourceLineNo">28307</span> while (it.hasNext()) {<a name="line.28307"></a>
<span class="sourceLineNo">28308</span> final long ix = it.aLong;<a name="line.28308"></a>
<span class="sourceLineNo">28309</span> float tf;<a name="line.28309"></a>
<span class="sourceLineNo">28310</span> float ox;<a name="line.28310"></a>
<span class="sourceLineNo">28311</span> float oy;<a name="line.28311"></a>
<span class="sourceLineNo">28312</span> tf = (float) toLong(Math.expm1(ix));<a name="line.28312"></a>
<span class="sourceLineNo">28313</span> ox = (float) toLong(tf*Math.cos(iy));<a name="line.28313"></a>
<span class="sourceLineNo">28314</span> oy = (float) toLong(tf*Math.sin(iy));<a name="line.28314"></a>
<span class="sourceLineNo">28315</span> oc64data[it.oIndex] = ox;<a name="line.28315"></a>
<span class="sourceLineNo">28316</span> oc64data[it.oIndex + 1] = oy;<a name="line.28316"></a>
<span class="sourceLineNo">28317</span> }<a name="line.28317"></a>
<span class="sourceLineNo">28318</span> }<a name="line.28318"></a>
<span class="sourceLineNo">28319</span> } else {<a name="line.28319"></a>
<span class="sourceLineNo">28320</span> while (it.hasNext()) {<a name="line.28320"></a>
<span class="sourceLineNo">28321</span> final double ix = it.aDouble;<a name="line.28321"></a>
<span class="sourceLineNo">28322</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.28322"></a>
<span class="sourceLineNo">28323</span> float tf;<a name="line.28323"></a>
<span class="sourceLineNo">28324</span> float ox;<a name="line.28324"></a>
<span class="sourceLineNo">28325</span> float oy;<a name="line.28325"></a>
<span class="sourceLineNo">28326</span> tf = (float) (Math.expm1(ix));<a name="line.28326"></a>
<span class="sourceLineNo">28327</span> ox = (float) (tf*Math.cos(iy));<a name="line.28327"></a>
<span class="sourceLineNo">28328</span> oy = (float) (tf*Math.sin(iy));<a name="line.28328"></a>
<span class="sourceLineNo">28329</span> oc64data[it.oIndex] = ox;<a name="line.28329"></a>
<span class="sourceLineNo">28330</span> oc64data[it.oIndex + 1] = oy;<a name="line.28330"></a>
<span class="sourceLineNo">28331</span> }<a name="line.28331"></a>
<span class="sourceLineNo">28332</span> }<a name="line.28332"></a>
<span class="sourceLineNo">28333</span> break;<a name="line.28333"></a>
<span class="sourceLineNo">28334</span> case Dataset.COMPLEX128:<a name="line.28334"></a>
<span class="sourceLineNo">28335</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.28335"></a>
<span class="sourceLineNo">28336</span> if (!da.isComplex()) {<a name="line.28336"></a>
<span class="sourceLineNo">28337</span> if (it.isOutputDouble()) {<a name="line.28337"></a>
<span class="sourceLineNo">28338</span> final double iy = 0;<a name="line.28338"></a>
<span class="sourceLineNo">28339</span> while (it.hasNext()) {<a name="line.28339"></a>
<span class="sourceLineNo">28340</span> final double ix = it.aDouble;<a name="line.28340"></a>
<span class="sourceLineNo">28341</span> double tf;<a name="line.28341"></a>
<span class="sourceLineNo">28342</span> double ox;<a name="line.28342"></a>
<span class="sourceLineNo">28343</span> double oy;<a name="line.28343"></a>
<span class="sourceLineNo">28344</span> tf = (Math.expm1(ix));<a name="line.28344"></a>
<span class="sourceLineNo">28345</span> ox = (tf*Math.cos(iy));<a name="line.28345"></a>
<span class="sourceLineNo">28346</span> oy = (tf*Math.sin(iy));<a name="line.28346"></a>
<span class="sourceLineNo">28347</span> oc128data[it.oIndex] = ox;<a name="line.28347"></a>
<span class="sourceLineNo">28348</span> oc128data[it.oIndex + 1] = oy;<a name="line.28348"></a>
<span class="sourceLineNo">28349</span> }<a name="line.28349"></a>
<span class="sourceLineNo">28350</span> } else {<a name="line.28350"></a>
<span class="sourceLineNo">28351</span> final long iy = 0;<a name="line.28351"></a>
<span class="sourceLineNo">28352</span> while (it.hasNext()) {<a name="line.28352"></a>
<span class="sourceLineNo">28353</span> final long ix = it.aLong;<a name="line.28353"></a>
<span class="sourceLineNo">28354</span> double tf;<a name="line.28354"></a>
<span class="sourceLineNo">28355</span> double ox;<a name="line.28355"></a>
<span class="sourceLineNo">28356</span> double oy;<a name="line.28356"></a>
<span class="sourceLineNo">28357</span> tf = (double) (Math.expm1(ix));<a name="line.28357"></a>
<span class="sourceLineNo">28358</span> ox = (double) (tf*Math.cos(iy));<a name="line.28358"></a>
<span class="sourceLineNo">28359</span> oy = (double) (tf*Math.sin(iy));<a name="line.28359"></a>
<span class="sourceLineNo">28360</span> oc128data[it.oIndex] = ox;<a name="line.28360"></a>
<span class="sourceLineNo">28361</span> oc128data[it.oIndex + 1] = oy;<a name="line.28361"></a>
<span class="sourceLineNo">28362</span> }<a name="line.28362"></a>
<span class="sourceLineNo">28363</span> }<a name="line.28363"></a>
<span class="sourceLineNo">28364</span> } else {<a name="line.28364"></a>
<span class="sourceLineNo">28365</span> while (it.hasNext()) {<a name="line.28365"></a>
<span class="sourceLineNo">28366</span> final double ix = it.aDouble;<a name="line.28366"></a>
<span class="sourceLineNo">28367</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.28367"></a>
<span class="sourceLineNo">28368</span> double tf;<a name="line.28368"></a>
<span class="sourceLineNo">28369</span> double ox;<a name="line.28369"></a>
<span class="sourceLineNo">28370</span> double oy;<a name="line.28370"></a>
<span class="sourceLineNo">28371</span> tf = (Math.expm1(ix));<a name="line.28371"></a>
<span class="sourceLineNo">28372</span> ox = (tf*Math.cos(iy));<a name="line.28372"></a>
<span class="sourceLineNo">28373</span> oy = (tf*Math.sin(iy));<a name="line.28373"></a>
<span class="sourceLineNo">28374</span> oc128data[it.oIndex] = ox;<a name="line.28374"></a>
<span class="sourceLineNo">28375</span> oc128data[it.oIndex + 1] = oy;<a name="line.28375"></a>
<span class="sourceLineNo">28376</span> }<a name="line.28376"></a>
<span class="sourceLineNo">28377</span> }<a name="line.28377"></a>
<span class="sourceLineNo">28378</span> break;<a name="line.28378"></a>
<span class="sourceLineNo">28379</span> default:<a name="line.28379"></a>
<span class="sourceLineNo">28380</span> throw new IllegalArgumentException("expm1 supports integer, compound integer, real, compound real, complex datasets only");<a name="line.28380"></a>
<span class="sourceLineNo">28381</span> }<a name="line.28381"></a>
<span class="sourceLineNo">28382</span><a name="line.28382"></a>
<span class="sourceLineNo">28383</span> addFunctionName(result, "expm1");<a name="line.28383"></a>
<span class="sourceLineNo">28384</span> return result;<a name="line.28384"></a>
<span class="sourceLineNo">28385</span> }<a name="line.28385"></a>
<span class="sourceLineNo">28386</span><a name="line.28386"></a>
<span class="sourceLineNo">28387</span> /**<a name="line.28387"></a>
<span class="sourceLineNo">28388</span> * sqrt - evaluate the square root function on each element of the dataset<a name="line.28388"></a>
<span class="sourceLineNo">28389</span> * @param a<a name="line.28389"></a>
<span class="sourceLineNo">28390</span> * @return dataset<a name="line.28390"></a>
<span class="sourceLineNo">28391</span> */<a name="line.28391"></a>
<span class="sourceLineNo">28392</span> public static Dataset sqrt(final Object a) {<a name="line.28392"></a>
<span class="sourceLineNo">28393</span> return sqrt(a, null);<a name="line.28393"></a>
<span class="sourceLineNo">28394</span> }<a name="line.28394"></a>
<span class="sourceLineNo">28395</span><a name="line.28395"></a>
<span class="sourceLineNo">28396</span> /**<a name="line.28396"></a>
<span class="sourceLineNo">28397</span> * sqrt - evaluate the square root function on each element of the dataset<a name="line.28397"></a>
<span class="sourceLineNo">28398</span> * @param a<a name="line.28398"></a>
<span class="sourceLineNo">28399</span> * @param o output can be null - in which case, a new dataset is created<a name="line.28399"></a>
<span class="sourceLineNo">28400</span> * @return dataset<a name="line.28400"></a>
<span class="sourceLineNo">28401</span> */<a name="line.28401"></a>
<span class="sourceLineNo">28402</span> public static Dataset sqrt(final Object a, final Dataset o) {<a name="line.28402"></a>
<span class="sourceLineNo">28403</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.28403"></a>
<span class="sourceLineNo">28404</span> SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true);<a name="line.28404"></a>
<span class="sourceLineNo">28405</span> final Dataset result = it.getOutput();<a name="line.28405"></a>
<span class="sourceLineNo">28406</span> if (!result.isComplex()) {<a name="line.28406"></a>
<span class="sourceLineNo">28407</span> if (da.isComplex()) {<a name="line.28407"></a>
<span class="sourceLineNo">28408</span> da = da.getRealView();<a name="line.28408"></a>
<span class="sourceLineNo">28409</span> it = new SingleInputBroadcastIterator(da, result, true);<a name="line.28409"></a>
<span class="sourceLineNo">28410</span> }<a name="line.28410"></a>
<span class="sourceLineNo">28411</span> }<a name="line.28411"></a>
<span class="sourceLineNo">28412</span> final int is = result.getElementsPerItem();<a name="line.28412"></a>
<span class="sourceLineNo">28413</span> final int as = da.getElementsPerItem();<a name="line.28413"></a>
<span class="sourceLineNo">28414</span> final int dt = result.getDType();<a name="line.28414"></a>
<span class="sourceLineNo">28415</span><a name="line.28415"></a>
<span class="sourceLineNo">28416</span> switch(dt) {<a name="line.28416"></a>
<span class="sourceLineNo">28417</span> case Dataset.INT8:<a name="line.28417"></a>
<span class="sourceLineNo">28418</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.28418"></a>
<span class="sourceLineNo">28419</span> if (it.isOutputDouble()) {<a name="line.28419"></a>
<span class="sourceLineNo">28420</span> while (it.hasNext()) {<a name="line.28420"></a>
<span class="sourceLineNo">28421</span> final double ix = it.aDouble;<a name="line.28421"></a>
<span class="sourceLineNo">28422</span> byte ox;<a name="line.28422"></a>
<span class="sourceLineNo">28423</span> ox = (byte) toLong(Math.sqrt(ix));<a name="line.28423"></a>
<span class="sourceLineNo">28424</span> oi8data[it.oIndex] = ox;<a name="line.28424"></a>
<span class="sourceLineNo">28425</span> }<a name="line.28425"></a>
<span class="sourceLineNo">28426</span> } else {<a name="line.28426"></a>
<span class="sourceLineNo">28427</span> while (it.hasNext()) {<a name="line.28427"></a>
<span class="sourceLineNo">28428</span> final long ix = it.aLong;<a name="line.28428"></a>
<span class="sourceLineNo">28429</span> byte ox;<a name="line.28429"></a>
<span class="sourceLineNo">28430</span> ox = (byte) toLong(Math.sqrt(ix));<a name="line.28430"></a>
<span class="sourceLineNo">28431</span> oi8data[it.oIndex] = ox;<a name="line.28431"></a>
<span class="sourceLineNo">28432</span> }<a name="line.28432"></a>
<span class="sourceLineNo">28433</span> }<a name="line.28433"></a>
<span class="sourceLineNo">28434</span> break;<a name="line.28434"></a>
<span class="sourceLineNo">28435</span> case Dataset.INT16:<a name="line.28435"></a>
<span class="sourceLineNo">28436</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.28436"></a>
<span class="sourceLineNo">28437</span> if (it.isOutputDouble()) {<a name="line.28437"></a>
<span class="sourceLineNo">28438</span> while (it.hasNext()) {<a name="line.28438"></a>
<span class="sourceLineNo">28439</span> final double ix = it.aDouble;<a name="line.28439"></a>
<span class="sourceLineNo">28440</span> short ox;<a name="line.28440"></a>
<span class="sourceLineNo">28441</span> ox = (short) toLong(Math.sqrt(ix));<a name="line.28441"></a>
<span class="sourceLineNo">28442</span> oi16data[it.oIndex] = ox;<a name="line.28442"></a>
<span class="sourceLineNo">28443</span> }<a name="line.28443"></a>
<span class="sourceLineNo">28444</span> } else {<a name="line.28444"></a>
<span class="sourceLineNo">28445</span> while (it.hasNext()) {<a name="line.28445"></a>
<span class="sourceLineNo">28446</span> final long ix = it.aLong;<a name="line.28446"></a>
<span class="sourceLineNo">28447</span> short ox;<a name="line.28447"></a>
<span class="sourceLineNo">28448</span> ox = (short) toLong(Math.sqrt(ix));<a name="line.28448"></a>
<span class="sourceLineNo">28449</span> oi16data[it.oIndex] = ox;<a name="line.28449"></a>
<span class="sourceLineNo">28450</span> }<a name="line.28450"></a>
<span class="sourceLineNo">28451</span> }<a name="line.28451"></a>
<span class="sourceLineNo">28452</span> break;<a name="line.28452"></a>
<span class="sourceLineNo">28453</span> case Dataset.INT64:<a name="line.28453"></a>
<span class="sourceLineNo">28454</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.28454"></a>
<span class="sourceLineNo">28455</span> if (it.isOutputDouble()) {<a name="line.28455"></a>
<span class="sourceLineNo">28456</span> while (it.hasNext()) {<a name="line.28456"></a>
<span class="sourceLineNo">28457</span> final double ix = it.aDouble;<a name="line.28457"></a>
<span class="sourceLineNo">28458</span> long ox;<a name="line.28458"></a>
<span class="sourceLineNo">28459</span> ox = toLong(Math.sqrt(ix));<a name="line.28459"></a>
<span class="sourceLineNo">28460</span> oi64data[it.oIndex] = ox;<a name="line.28460"></a>
<span class="sourceLineNo">28461</span> }<a name="line.28461"></a>
<span class="sourceLineNo">28462</span> } else {<a name="line.28462"></a>
<span class="sourceLineNo">28463</span> while (it.hasNext()) {<a name="line.28463"></a>
<span class="sourceLineNo">28464</span> final long ix = it.aLong;<a name="line.28464"></a>
<span class="sourceLineNo">28465</span> long ox;<a name="line.28465"></a>
<span class="sourceLineNo">28466</span> ox = toLong(Math.sqrt(ix));<a name="line.28466"></a>
<span class="sourceLineNo">28467</span> oi64data[it.oIndex] = ox;<a name="line.28467"></a>
<span class="sourceLineNo">28468</span> }<a name="line.28468"></a>
<span class="sourceLineNo">28469</span> }<a name="line.28469"></a>
<span class="sourceLineNo">28470</span> break;<a name="line.28470"></a>
<span class="sourceLineNo">28471</span> case Dataset.INT32:<a name="line.28471"></a>
<span class="sourceLineNo">28472</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.28472"></a>
<span class="sourceLineNo">28473</span> if (it.isOutputDouble()) {<a name="line.28473"></a>
<span class="sourceLineNo">28474</span> while (it.hasNext()) {<a name="line.28474"></a>
<span class="sourceLineNo">28475</span> final double ix = it.aDouble;<a name="line.28475"></a>
<span class="sourceLineNo">28476</span> int ox;<a name="line.28476"></a>
<span class="sourceLineNo">28477</span> ox = (int) toLong(Math.sqrt(ix));<a name="line.28477"></a>
<span class="sourceLineNo">28478</span> oi32data[it.oIndex] = ox;<a name="line.28478"></a>
<span class="sourceLineNo">28479</span> }<a name="line.28479"></a>
<span class="sourceLineNo">28480</span> } else {<a name="line.28480"></a>
<span class="sourceLineNo">28481</span> while (it.hasNext()) {<a name="line.28481"></a>
<span class="sourceLineNo">28482</span> final long ix = it.aLong;<a name="line.28482"></a>
<span class="sourceLineNo">28483</span> int ox;<a name="line.28483"></a>
<span class="sourceLineNo">28484</span> ox = (int) toLong(Math.sqrt(ix));<a name="line.28484"></a>
<span class="sourceLineNo">28485</span> oi32data[it.oIndex] = ox;<a name="line.28485"></a>
<span class="sourceLineNo">28486</span> }<a name="line.28486"></a>
<span class="sourceLineNo">28487</span> }<a name="line.28487"></a>
<span class="sourceLineNo">28488</span> break;<a name="line.28488"></a>
<span class="sourceLineNo">28489</span> case Dataset.ARRAYINT8:<a name="line.28489"></a>
<span class="sourceLineNo">28490</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.28490"></a>
<span class="sourceLineNo">28491</span> if (is == 1) {<a name="line.28491"></a>
<span class="sourceLineNo">28492</span> if (it.isOutputDouble()) {<a name="line.28492"></a>
<span class="sourceLineNo">28493</span> while (it.hasNext()) {<a name="line.28493"></a>
<span class="sourceLineNo">28494</span> final double ix = it.aDouble;<a name="line.28494"></a>
<span class="sourceLineNo">28495</span> byte ox;<a name="line.28495"></a>
<span class="sourceLineNo">28496</span> ox = (byte) toLong(Math.sqrt(ix));<a name="line.28496"></a>
<span class="sourceLineNo">28497</span> oai8data[it.oIndex] = ox;<a name="line.28497"></a>
<span class="sourceLineNo">28498</span> }<a name="line.28498"></a>
<span class="sourceLineNo">28499</span> } else {<a name="line.28499"></a>
<span class="sourceLineNo">28500</span> while (it.hasNext()) {<a name="line.28500"></a>
<span class="sourceLineNo">28501</span> final long ix = it.aLong;<a name="line.28501"></a>
<span class="sourceLineNo">28502</span> byte ox;<a name="line.28502"></a>
<span class="sourceLineNo">28503</span> ox = (byte) toLong(Math.sqrt(ix));<a name="line.28503"></a>
<span class="sourceLineNo">28504</span> oai8data[it.oIndex] = ox;<a name="line.28504"></a>
<span class="sourceLineNo">28505</span> }<a name="line.28505"></a>
<span class="sourceLineNo">28506</span> }<a name="line.28506"></a>
<span class="sourceLineNo">28507</span> } else if (as == 1) {<a name="line.28507"></a>
<span class="sourceLineNo">28508</span> if (it.isOutputDouble()) {<a name="line.28508"></a>
<span class="sourceLineNo">28509</span> while (it.hasNext()) {<a name="line.28509"></a>
<span class="sourceLineNo">28510</span> final double ix = it.aDouble;<a name="line.28510"></a>
<span class="sourceLineNo">28511</span> byte ox;<a name="line.28511"></a>
<span class="sourceLineNo">28512</span> ox = (byte) toLong(Math.sqrt(ix));<a name="line.28512"></a>
<span class="sourceLineNo">28513</span> for (int j = 0; j &lt; is; j++) {<a name="line.28513"></a>
<span class="sourceLineNo">28514</span> oai8data[it.oIndex + j] = ox;<a name="line.28514"></a>
<span class="sourceLineNo">28515</span> }<a name="line.28515"></a>
<span class="sourceLineNo">28516</span> }<a name="line.28516"></a>
<span class="sourceLineNo">28517</span> } else {<a name="line.28517"></a>
<span class="sourceLineNo">28518</span> while (it.hasNext()) {<a name="line.28518"></a>
<span class="sourceLineNo">28519</span> final long ix = it.aLong;<a name="line.28519"></a>
<span class="sourceLineNo">28520</span> byte ox;<a name="line.28520"></a>
<span class="sourceLineNo">28521</span> ox = (byte) toLong(Math.sqrt(ix));<a name="line.28521"></a>
<span class="sourceLineNo">28522</span> for (int j = 0; j &lt; is; j++) {<a name="line.28522"></a>
<span class="sourceLineNo">28523</span> oai8data[it.oIndex + j] = ox;<a name="line.28523"></a>
<span class="sourceLineNo">28524</span> }<a name="line.28524"></a>
<span class="sourceLineNo">28525</span> }<a name="line.28525"></a>
<span class="sourceLineNo">28526</span> }<a name="line.28526"></a>
<span class="sourceLineNo">28527</span> } else {<a name="line.28527"></a>
<span class="sourceLineNo">28528</span> if (it.isOutputDouble()) {<a name="line.28528"></a>
<span class="sourceLineNo">28529</span> while (it.hasNext()) {<a name="line.28529"></a>
<span class="sourceLineNo">28530</span> for (int j = 0; j &lt; is; j++) {<a name="line.28530"></a>
<span class="sourceLineNo">28531</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.28531"></a>
<span class="sourceLineNo">28532</span> byte ox;<a name="line.28532"></a>
<span class="sourceLineNo">28533</span> ox = (byte) toLong(Math.sqrt(ix));<a name="line.28533"></a>
<span class="sourceLineNo">28534</span> oai8data[it.oIndex + j] = ox;<a name="line.28534"></a>
<span class="sourceLineNo">28535</span> }<a name="line.28535"></a>
<span class="sourceLineNo">28536</span> }<a name="line.28536"></a>
<span class="sourceLineNo">28537</span> } else {<a name="line.28537"></a>
<span class="sourceLineNo">28538</span> while (it.hasNext()) {<a name="line.28538"></a>
<span class="sourceLineNo">28539</span> for (int j = 0; j &lt; is; j++) {<a name="line.28539"></a>
<span class="sourceLineNo">28540</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.28540"></a>
<span class="sourceLineNo">28541</span> byte ox;<a name="line.28541"></a>
<span class="sourceLineNo">28542</span> ox = (byte) toLong(Math.sqrt(ix));<a name="line.28542"></a>
<span class="sourceLineNo">28543</span> oai8data[it.oIndex + j] = ox;<a name="line.28543"></a>
<span class="sourceLineNo">28544</span> }<a name="line.28544"></a>
<span class="sourceLineNo">28545</span> }<a name="line.28545"></a>
<span class="sourceLineNo">28546</span> }<a name="line.28546"></a>
<span class="sourceLineNo">28547</span> }<a name="line.28547"></a>
<span class="sourceLineNo">28548</span> break;<a name="line.28548"></a>
<span class="sourceLineNo">28549</span> case Dataset.ARRAYINT16:<a name="line.28549"></a>
<span class="sourceLineNo">28550</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.28550"></a>
<span class="sourceLineNo">28551</span> if (is == 1) {<a name="line.28551"></a>
<span class="sourceLineNo">28552</span> if (it.isOutputDouble()) {<a name="line.28552"></a>
<span class="sourceLineNo">28553</span> while (it.hasNext()) {<a name="line.28553"></a>
<span class="sourceLineNo">28554</span> final double ix = it.aDouble;<a name="line.28554"></a>
<span class="sourceLineNo">28555</span> short ox;<a name="line.28555"></a>
<span class="sourceLineNo">28556</span> ox = (short) toLong(Math.sqrt(ix));<a name="line.28556"></a>
<span class="sourceLineNo">28557</span> oai16data[it.oIndex] = ox;<a name="line.28557"></a>
<span class="sourceLineNo">28558</span> }<a name="line.28558"></a>
<span class="sourceLineNo">28559</span> } else {<a name="line.28559"></a>
<span class="sourceLineNo">28560</span> while (it.hasNext()) {<a name="line.28560"></a>
<span class="sourceLineNo">28561</span> final long ix = it.aLong;<a name="line.28561"></a>
<span class="sourceLineNo">28562</span> short ox;<a name="line.28562"></a>
<span class="sourceLineNo">28563</span> ox = (short) toLong(Math.sqrt(ix));<a name="line.28563"></a>
<span class="sourceLineNo">28564</span> oai16data[it.oIndex] = ox;<a name="line.28564"></a>
<span class="sourceLineNo">28565</span> }<a name="line.28565"></a>
<span class="sourceLineNo">28566</span> }<a name="line.28566"></a>
<span class="sourceLineNo">28567</span> } else if (as == 1) {<a name="line.28567"></a>
<span class="sourceLineNo">28568</span> if (it.isOutputDouble()) {<a name="line.28568"></a>
<span class="sourceLineNo">28569</span> while (it.hasNext()) {<a name="line.28569"></a>
<span class="sourceLineNo">28570</span> final double ix = it.aDouble;<a name="line.28570"></a>
<span class="sourceLineNo">28571</span> short ox;<a name="line.28571"></a>
<span class="sourceLineNo">28572</span> ox = (short) toLong(Math.sqrt(ix));<a name="line.28572"></a>
<span class="sourceLineNo">28573</span> for (int j = 0; j &lt; is; j++) {<a name="line.28573"></a>
<span class="sourceLineNo">28574</span> oai16data[it.oIndex + j] = ox;<a name="line.28574"></a>
<span class="sourceLineNo">28575</span> }<a name="line.28575"></a>
<span class="sourceLineNo">28576</span> }<a name="line.28576"></a>
<span class="sourceLineNo">28577</span> } else {<a name="line.28577"></a>
<span class="sourceLineNo">28578</span> while (it.hasNext()) {<a name="line.28578"></a>
<span class="sourceLineNo">28579</span> final long ix = it.aLong;<a name="line.28579"></a>
<span class="sourceLineNo">28580</span> short ox;<a name="line.28580"></a>
<span class="sourceLineNo">28581</span> ox = (short) toLong(Math.sqrt(ix));<a name="line.28581"></a>
<span class="sourceLineNo">28582</span> for (int j = 0; j &lt; is; j++) {<a name="line.28582"></a>
<span class="sourceLineNo">28583</span> oai16data[it.oIndex + j] = ox;<a name="line.28583"></a>
<span class="sourceLineNo">28584</span> }<a name="line.28584"></a>
<span class="sourceLineNo">28585</span> }<a name="line.28585"></a>
<span class="sourceLineNo">28586</span> }<a name="line.28586"></a>
<span class="sourceLineNo">28587</span> } else {<a name="line.28587"></a>
<span class="sourceLineNo">28588</span> if (it.isOutputDouble()) {<a name="line.28588"></a>
<span class="sourceLineNo">28589</span> while (it.hasNext()) {<a name="line.28589"></a>
<span class="sourceLineNo">28590</span> for (int j = 0; j &lt; is; j++) {<a name="line.28590"></a>
<span class="sourceLineNo">28591</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.28591"></a>
<span class="sourceLineNo">28592</span> short ox;<a name="line.28592"></a>
<span class="sourceLineNo">28593</span> ox = (short) toLong(Math.sqrt(ix));<a name="line.28593"></a>
<span class="sourceLineNo">28594</span> oai16data[it.oIndex + j] = ox;<a name="line.28594"></a>
<span class="sourceLineNo">28595</span> }<a name="line.28595"></a>
<span class="sourceLineNo">28596</span> }<a name="line.28596"></a>
<span class="sourceLineNo">28597</span> } else {<a name="line.28597"></a>
<span class="sourceLineNo">28598</span> while (it.hasNext()) {<a name="line.28598"></a>
<span class="sourceLineNo">28599</span> for (int j = 0; j &lt; is; j++) {<a name="line.28599"></a>
<span class="sourceLineNo">28600</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.28600"></a>
<span class="sourceLineNo">28601</span> short ox;<a name="line.28601"></a>
<span class="sourceLineNo">28602</span> ox = (short) toLong(Math.sqrt(ix));<a name="line.28602"></a>
<span class="sourceLineNo">28603</span> oai16data[it.oIndex + j] = ox;<a name="line.28603"></a>
<span class="sourceLineNo">28604</span> }<a name="line.28604"></a>
<span class="sourceLineNo">28605</span> }<a name="line.28605"></a>
<span class="sourceLineNo">28606</span> }<a name="line.28606"></a>
<span class="sourceLineNo">28607</span> }<a name="line.28607"></a>
<span class="sourceLineNo">28608</span> break;<a name="line.28608"></a>
<span class="sourceLineNo">28609</span> case Dataset.ARRAYINT64:<a name="line.28609"></a>
<span class="sourceLineNo">28610</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.28610"></a>
<span class="sourceLineNo">28611</span> if (is == 1) {<a name="line.28611"></a>
<span class="sourceLineNo">28612</span> if (it.isOutputDouble()) {<a name="line.28612"></a>
<span class="sourceLineNo">28613</span> while (it.hasNext()) {<a name="line.28613"></a>
<span class="sourceLineNo">28614</span> final double ix = it.aDouble;<a name="line.28614"></a>
<span class="sourceLineNo">28615</span> long ox;<a name="line.28615"></a>
<span class="sourceLineNo">28616</span> ox = toLong(Math.sqrt(ix));<a name="line.28616"></a>
<span class="sourceLineNo">28617</span> oai64data[it.oIndex] = ox;<a name="line.28617"></a>
<span class="sourceLineNo">28618</span> }<a name="line.28618"></a>
<span class="sourceLineNo">28619</span> } else {<a name="line.28619"></a>
<span class="sourceLineNo">28620</span> while (it.hasNext()) {<a name="line.28620"></a>
<span class="sourceLineNo">28621</span> final long ix = it.aLong;<a name="line.28621"></a>
<span class="sourceLineNo">28622</span> long ox;<a name="line.28622"></a>
<span class="sourceLineNo">28623</span> ox = toLong(Math.sqrt(ix));<a name="line.28623"></a>
<span class="sourceLineNo">28624</span> oai64data[it.oIndex] = ox;<a name="line.28624"></a>
<span class="sourceLineNo">28625</span> }<a name="line.28625"></a>
<span class="sourceLineNo">28626</span> }<a name="line.28626"></a>
<span class="sourceLineNo">28627</span> } else if (as == 1) {<a name="line.28627"></a>
<span class="sourceLineNo">28628</span> if (it.isOutputDouble()) {<a name="line.28628"></a>
<span class="sourceLineNo">28629</span> while (it.hasNext()) {<a name="line.28629"></a>
<span class="sourceLineNo">28630</span> final double ix = it.aDouble;<a name="line.28630"></a>
<span class="sourceLineNo">28631</span> long ox;<a name="line.28631"></a>
<span class="sourceLineNo">28632</span> ox = toLong(Math.sqrt(ix));<a name="line.28632"></a>
<span class="sourceLineNo">28633</span> for (int j = 0; j &lt; is; j++) {<a name="line.28633"></a>
<span class="sourceLineNo">28634</span> oai64data[it.oIndex + j] = ox;<a name="line.28634"></a>
<span class="sourceLineNo">28635</span> }<a name="line.28635"></a>
<span class="sourceLineNo">28636</span> }<a name="line.28636"></a>
<span class="sourceLineNo">28637</span> } else {<a name="line.28637"></a>
<span class="sourceLineNo">28638</span> while (it.hasNext()) {<a name="line.28638"></a>
<span class="sourceLineNo">28639</span> final long ix = it.aLong;<a name="line.28639"></a>
<span class="sourceLineNo">28640</span> long ox;<a name="line.28640"></a>
<span class="sourceLineNo">28641</span> ox = toLong(Math.sqrt(ix));<a name="line.28641"></a>
<span class="sourceLineNo">28642</span> for (int j = 0; j &lt; is; j++) {<a name="line.28642"></a>
<span class="sourceLineNo">28643</span> oai64data[it.oIndex + j] = ox;<a name="line.28643"></a>
<span class="sourceLineNo">28644</span> }<a name="line.28644"></a>
<span class="sourceLineNo">28645</span> }<a name="line.28645"></a>
<span class="sourceLineNo">28646</span> }<a name="line.28646"></a>
<span class="sourceLineNo">28647</span> } else {<a name="line.28647"></a>
<span class="sourceLineNo">28648</span> if (it.isOutputDouble()) {<a name="line.28648"></a>
<span class="sourceLineNo">28649</span> while (it.hasNext()) {<a name="line.28649"></a>
<span class="sourceLineNo">28650</span> for (int j = 0; j &lt; is; j++) {<a name="line.28650"></a>
<span class="sourceLineNo">28651</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.28651"></a>
<span class="sourceLineNo">28652</span> long ox;<a name="line.28652"></a>
<span class="sourceLineNo">28653</span> ox = toLong(Math.sqrt(ix));<a name="line.28653"></a>
<span class="sourceLineNo">28654</span> oai64data[it.oIndex + j] = ox;<a name="line.28654"></a>
<span class="sourceLineNo">28655</span> }<a name="line.28655"></a>
<span class="sourceLineNo">28656</span> }<a name="line.28656"></a>
<span class="sourceLineNo">28657</span> } else {<a name="line.28657"></a>
<span class="sourceLineNo">28658</span> while (it.hasNext()) {<a name="line.28658"></a>
<span class="sourceLineNo">28659</span> for (int j = 0; j &lt; is; j++) {<a name="line.28659"></a>
<span class="sourceLineNo">28660</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.28660"></a>
<span class="sourceLineNo">28661</span> long ox;<a name="line.28661"></a>
<span class="sourceLineNo">28662</span> ox = toLong(Math.sqrt(ix));<a name="line.28662"></a>
<span class="sourceLineNo">28663</span> oai64data[it.oIndex + j] = ox;<a name="line.28663"></a>
<span class="sourceLineNo">28664</span> }<a name="line.28664"></a>
<span class="sourceLineNo">28665</span> }<a name="line.28665"></a>
<span class="sourceLineNo">28666</span> }<a name="line.28666"></a>
<span class="sourceLineNo">28667</span> }<a name="line.28667"></a>
<span class="sourceLineNo">28668</span> break;<a name="line.28668"></a>
<span class="sourceLineNo">28669</span> case Dataset.ARRAYINT32:<a name="line.28669"></a>
<span class="sourceLineNo">28670</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.28670"></a>
<span class="sourceLineNo">28671</span> if (is == 1) {<a name="line.28671"></a>
<span class="sourceLineNo">28672</span> if (it.isOutputDouble()) {<a name="line.28672"></a>
<span class="sourceLineNo">28673</span> while (it.hasNext()) {<a name="line.28673"></a>
<span class="sourceLineNo">28674</span> final double ix = it.aDouble;<a name="line.28674"></a>
<span class="sourceLineNo">28675</span> int ox;<a name="line.28675"></a>
<span class="sourceLineNo">28676</span> ox = (int) toLong(Math.sqrt(ix));<a name="line.28676"></a>
<span class="sourceLineNo">28677</span> oai32data[it.oIndex] = ox;<a name="line.28677"></a>
<span class="sourceLineNo">28678</span> }<a name="line.28678"></a>
<span class="sourceLineNo">28679</span> } else {<a name="line.28679"></a>
<span class="sourceLineNo">28680</span> while (it.hasNext()) {<a name="line.28680"></a>
<span class="sourceLineNo">28681</span> final long ix = it.aLong;<a name="line.28681"></a>
<span class="sourceLineNo">28682</span> int ox;<a name="line.28682"></a>
<span class="sourceLineNo">28683</span> ox = (int) toLong(Math.sqrt(ix));<a name="line.28683"></a>
<span class="sourceLineNo">28684</span> oai32data[it.oIndex] = ox;<a name="line.28684"></a>
<span class="sourceLineNo">28685</span> }<a name="line.28685"></a>
<span class="sourceLineNo">28686</span> }<a name="line.28686"></a>
<span class="sourceLineNo">28687</span> } else if (as == 1) {<a name="line.28687"></a>
<span class="sourceLineNo">28688</span> if (it.isOutputDouble()) {<a name="line.28688"></a>
<span class="sourceLineNo">28689</span> while (it.hasNext()) {<a name="line.28689"></a>
<span class="sourceLineNo">28690</span> final double ix = it.aDouble;<a name="line.28690"></a>
<span class="sourceLineNo">28691</span> int ox;<a name="line.28691"></a>
<span class="sourceLineNo">28692</span> ox = (int) toLong(Math.sqrt(ix));<a name="line.28692"></a>
<span class="sourceLineNo">28693</span> for (int j = 0; j &lt; is; j++) {<a name="line.28693"></a>
<span class="sourceLineNo">28694</span> oai32data[it.oIndex + j] = ox;<a name="line.28694"></a>
<span class="sourceLineNo">28695</span> }<a name="line.28695"></a>
<span class="sourceLineNo">28696</span> }<a name="line.28696"></a>
<span class="sourceLineNo">28697</span> } else {<a name="line.28697"></a>
<span class="sourceLineNo">28698</span> while (it.hasNext()) {<a name="line.28698"></a>
<span class="sourceLineNo">28699</span> final long ix = it.aLong;<a name="line.28699"></a>
<span class="sourceLineNo">28700</span> int ox;<a name="line.28700"></a>
<span class="sourceLineNo">28701</span> ox = (int) toLong(Math.sqrt(ix));<a name="line.28701"></a>
<span class="sourceLineNo">28702</span> for (int j = 0; j &lt; is; j++) {<a name="line.28702"></a>
<span class="sourceLineNo">28703</span> oai32data[it.oIndex + j] = ox;<a name="line.28703"></a>
<span class="sourceLineNo">28704</span> }<a name="line.28704"></a>
<span class="sourceLineNo">28705</span> }<a name="line.28705"></a>
<span class="sourceLineNo">28706</span> }<a name="line.28706"></a>
<span class="sourceLineNo">28707</span> } else {<a name="line.28707"></a>
<span class="sourceLineNo">28708</span> if (it.isOutputDouble()) {<a name="line.28708"></a>
<span class="sourceLineNo">28709</span> while (it.hasNext()) {<a name="line.28709"></a>
<span class="sourceLineNo">28710</span> for (int j = 0; j &lt; is; j++) {<a name="line.28710"></a>
<span class="sourceLineNo">28711</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.28711"></a>
<span class="sourceLineNo">28712</span> int ox;<a name="line.28712"></a>
<span class="sourceLineNo">28713</span> ox = (int) toLong(Math.sqrt(ix));<a name="line.28713"></a>
<span class="sourceLineNo">28714</span> oai32data[it.oIndex + j] = ox;<a name="line.28714"></a>
<span class="sourceLineNo">28715</span> }<a name="line.28715"></a>
<span class="sourceLineNo">28716</span> }<a name="line.28716"></a>
<span class="sourceLineNo">28717</span> } else {<a name="line.28717"></a>
<span class="sourceLineNo">28718</span> while (it.hasNext()) {<a name="line.28718"></a>
<span class="sourceLineNo">28719</span> for (int j = 0; j &lt; is; j++) {<a name="line.28719"></a>
<span class="sourceLineNo">28720</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.28720"></a>
<span class="sourceLineNo">28721</span> int ox;<a name="line.28721"></a>
<span class="sourceLineNo">28722</span> ox = (int) toLong(Math.sqrt(ix));<a name="line.28722"></a>
<span class="sourceLineNo">28723</span> oai32data[it.oIndex + j] = ox;<a name="line.28723"></a>
<span class="sourceLineNo">28724</span> }<a name="line.28724"></a>
<span class="sourceLineNo">28725</span> }<a name="line.28725"></a>
<span class="sourceLineNo">28726</span> }<a name="line.28726"></a>
<span class="sourceLineNo">28727</span> }<a name="line.28727"></a>
<span class="sourceLineNo">28728</span> break;<a name="line.28728"></a>
<span class="sourceLineNo">28729</span> case Dataset.FLOAT32:<a name="line.28729"></a>
<span class="sourceLineNo">28730</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.28730"></a>
<span class="sourceLineNo">28731</span> if (it.isOutputDouble()) {<a name="line.28731"></a>
<span class="sourceLineNo">28732</span> while (it.hasNext()) {<a name="line.28732"></a>
<span class="sourceLineNo">28733</span> final double ix = it.aDouble;<a name="line.28733"></a>
<span class="sourceLineNo">28734</span> float ox;<a name="line.28734"></a>
<span class="sourceLineNo">28735</span> ox = (float) (Math.sqrt(ix));<a name="line.28735"></a>
<span class="sourceLineNo">28736</span> of32data[it.oIndex] = ox;<a name="line.28736"></a>
<span class="sourceLineNo">28737</span> }<a name="line.28737"></a>
<span class="sourceLineNo">28738</span> } else {<a name="line.28738"></a>
<span class="sourceLineNo">28739</span> while (it.hasNext()) {<a name="line.28739"></a>
<span class="sourceLineNo">28740</span> final long ix = it.aLong;<a name="line.28740"></a>
<span class="sourceLineNo">28741</span> float ox;<a name="line.28741"></a>
<span class="sourceLineNo">28742</span> ox = (float) (Math.sqrt(ix));<a name="line.28742"></a>
<span class="sourceLineNo">28743</span> of32data[it.oIndex] = ox;<a name="line.28743"></a>
<span class="sourceLineNo">28744</span> }<a name="line.28744"></a>
<span class="sourceLineNo">28745</span> }<a name="line.28745"></a>
<span class="sourceLineNo">28746</span> break;<a name="line.28746"></a>
<span class="sourceLineNo">28747</span> case Dataset.FLOAT64:<a name="line.28747"></a>
<span class="sourceLineNo">28748</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.28748"></a>
<span class="sourceLineNo">28749</span> if (it.isOutputDouble()) {<a name="line.28749"></a>
<span class="sourceLineNo">28750</span> while (it.hasNext()) {<a name="line.28750"></a>
<span class="sourceLineNo">28751</span> final double ix = it.aDouble;<a name="line.28751"></a>
<span class="sourceLineNo">28752</span> double ox;<a name="line.28752"></a>
<span class="sourceLineNo">28753</span> ox = (Math.sqrt(ix));<a name="line.28753"></a>
<span class="sourceLineNo">28754</span> of64data[it.oIndex] = ox;<a name="line.28754"></a>
<span class="sourceLineNo">28755</span> }<a name="line.28755"></a>
<span class="sourceLineNo">28756</span> } else {<a name="line.28756"></a>
<span class="sourceLineNo">28757</span> while (it.hasNext()) {<a name="line.28757"></a>
<span class="sourceLineNo">28758</span> final long ix = it.aLong;<a name="line.28758"></a>
<span class="sourceLineNo">28759</span> double ox;<a name="line.28759"></a>
<span class="sourceLineNo">28760</span> ox = (Math.sqrt(ix));<a name="line.28760"></a>
<span class="sourceLineNo">28761</span> of64data[it.oIndex] = ox;<a name="line.28761"></a>
<span class="sourceLineNo">28762</span> }<a name="line.28762"></a>
<span class="sourceLineNo">28763</span> }<a name="line.28763"></a>
<span class="sourceLineNo">28764</span> break;<a name="line.28764"></a>
<span class="sourceLineNo">28765</span> case Dataset.ARRAYFLOAT32:<a name="line.28765"></a>
<span class="sourceLineNo">28766</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.28766"></a>
<span class="sourceLineNo">28767</span> if (is == 1) {<a name="line.28767"></a>
<span class="sourceLineNo">28768</span> if (it.isOutputDouble()) {<a name="line.28768"></a>
<span class="sourceLineNo">28769</span> while (it.hasNext()) {<a name="line.28769"></a>
<span class="sourceLineNo">28770</span> final double ix = it.aDouble;<a name="line.28770"></a>
<span class="sourceLineNo">28771</span> float ox;<a name="line.28771"></a>
<span class="sourceLineNo">28772</span> ox = (float) (Math.sqrt(ix));<a name="line.28772"></a>
<span class="sourceLineNo">28773</span> oaf32data[it.oIndex] = ox;<a name="line.28773"></a>
<span class="sourceLineNo">28774</span> }<a name="line.28774"></a>
<span class="sourceLineNo">28775</span> } else {<a name="line.28775"></a>
<span class="sourceLineNo">28776</span> while (it.hasNext()) {<a name="line.28776"></a>
<span class="sourceLineNo">28777</span> final long ix = it.aLong;<a name="line.28777"></a>
<span class="sourceLineNo">28778</span> float ox;<a name="line.28778"></a>
<span class="sourceLineNo">28779</span> ox = (float) (Math.sqrt(ix));<a name="line.28779"></a>
<span class="sourceLineNo">28780</span> oaf32data[it.oIndex] = ox;<a name="line.28780"></a>
<span class="sourceLineNo">28781</span> }<a name="line.28781"></a>
<span class="sourceLineNo">28782</span> }<a name="line.28782"></a>
<span class="sourceLineNo">28783</span> } else if (as == 1) {<a name="line.28783"></a>
<span class="sourceLineNo">28784</span> if (it.isOutputDouble()) {<a name="line.28784"></a>
<span class="sourceLineNo">28785</span> while (it.hasNext()) {<a name="line.28785"></a>
<span class="sourceLineNo">28786</span> final double ix = it.aDouble;<a name="line.28786"></a>
<span class="sourceLineNo">28787</span> float ox;<a name="line.28787"></a>
<span class="sourceLineNo">28788</span> ox = (float) (Math.sqrt(ix));<a name="line.28788"></a>
<span class="sourceLineNo">28789</span> for (int j = 0; j &lt; is; j++) {<a name="line.28789"></a>
<span class="sourceLineNo">28790</span> oaf32data[it.oIndex + j] = ox;<a name="line.28790"></a>
<span class="sourceLineNo">28791</span> }<a name="line.28791"></a>
<span class="sourceLineNo">28792</span> }<a name="line.28792"></a>
<span class="sourceLineNo">28793</span> } else {<a name="line.28793"></a>
<span class="sourceLineNo">28794</span> while (it.hasNext()) {<a name="line.28794"></a>
<span class="sourceLineNo">28795</span> final long ix = it.aLong;<a name="line.28795"></a>
<span class="sourceLineNo">28796</span> float ox;<a name="line.28796"></a>
<span class="sourceLineNo">28797</span> ox = (float) (Math.sqrt(ix));<a name="line.28797"></a>
<span class="sourceLineNo">28798</span> for (int j = 0; j &lt; is; j++) {<a name="line.28798"></a>
<span class="sourceLineNo">28799</span> oaf32data[it.oIndex + j] = ox;<a name="line.28799"></a>
<span class="sourceLineNo">28800</span> }<a name="line.28800"></a>
<span class="sourceLineNo">28801</span> }<a name="line.28801"></a>
<span class="sourceLineNo">28802</span> }<a name="line.28802"></a>
<span class="sourceLineNo">28803</span> } else {<a name="line.28803"></a>
<span class="sourceLineNo">28804</span> if (it.isOutputDouble()) {<a name="line.28804"></a>
<span class="sourceLineNo">28805</span> while (it.hasNext()) {<a name="line.28805"></a>
<span class="sourceLineNo">28806</span> for (int j = 0; j &lt; is; j++) {<a name="line.28806"></a>
<span class="sourceLineNo">28807</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.28807"></a>
<span class="sourceLineNo">28808</span> float ox;<a name="line.28808"></a>
<span class="sourceLineNo">28809</span> ox = (float) (Math.sqrt(ix));<a name="line.28809"></a>
<span class="sourceLineNo">28810</span> oaf32data[it.oIndex + j] = ox;<a name="line.28810"></a>
<span class="sourceLineNo">28811</span> }<a name="line.28811"></a>
<span class="sourceLineNo">28812</span> }<a name="line.28812"></a>
<span class="sourceLineNo">28813</span> } else {<a name="line.28813"></a>
<span class="sourceLineNo">28814</span> while (it.hasNext()) {<a name="line.28814"></a>
<span class="sourceLineNo">28815</span> for (int j = 0; j &lt; is; j++) {<a name="line.28815"></a>
<span class="sourceLineNo">28816</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.28816"></a>
<span class="sourceLineNo">28817</span> float ox;<a name="line.28817"></a>
<span class="sourceLineNo">28818</span> ox = (float) (Math.sqrt(ix));<a name="line.28818"></a>
<span class="sourceLineNo">28819</span> oaf32data[it.oIndex + j] = ox;<a name="line.28819"></a>
<span class="sourceLineNo">28820</span> }<a name="line.28820"></a>
<span class="sourceLineNo">28821</span> }<a name="line.28821"></a>
<span class="sourceLineNo">28822</span> }<a name="line.28822"></a>
<span class="sourceLineNo">28823</span> }<a name="line.28823"></a>
<span class="sourceLineNo">28824</span> break;<a name="line.28824"></a>
<span class="sourceLineNo">28825</span> case Dataset.ARRAYFLOAT64:<a name="line.28825"></a>
<span class="sourceLineNo">28826</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.28826"></a>
<span class="sourceLineNo">28827</span> if (is == 1) {<a name="line.28827"></a>
<span class="sourceLineNo">28828</span> if (it.isOutputDouble()) {<a name="line.28828"></a>
<span class="sourceLineNo">28829</span> while (it.hasNext()) {<a name="line.28829"></a>
<span class="sourceLineNo">28830</span> final double ix = it.aDouble;<a name="line.28830"></a>
<span class="sourceLineNo">28831</span> double ox;<a name="line.28831"></a>
<span class="sourceLineNo">28832</span> ox = (Math.sqrt(ix));<a name="line.28832"></a>
<span class="sourceLineNo">28833</span> oaf64data[it.oIndex] = ox;<a name="line.28833"></a>
<span class="sourceLineNo">28834</span> }<a name="line.28834"></a>
<span class="sourceLineNo">28835</span> } else {<a name="line.28835"></a>
<span class="sourceLineNo">28836</span> while (it.hasNext()) {<a name="line.28836"></a>
<span class="sourceLineNo">28837</span> final long ix = it.aLong;<a name="line.28837"></a>
<span class="sourceLineNo">28838</span> double ox;<a name="line.28838"></a>
<span class="sourceLineNo">28839</span> ox = (Math.sqrt(ix));<a name="line.28839"></a>
<span class="sourceLineNo">28840</span> oaf64data[it.oIndex] = ox;<a name="line.28840"></a>
<span class="sourceLineNo">28841</span> }<a name="line.28841"></a>
<span class="sourceLineNo">28842</span> }<a name="line.28842"></a>
<span class="sourceLineNo">28843</span> } else if (as == 1) {<a name="line.28843"></a>
<span class="sourceLineNo">28844</span> if (it.isOutputDouble()) {<a name="line.28844"></a>
<span class="sourceLineNo">28845</span> while (it.hasNext()) {<a name="line.28845"></a>
<span class="sourceLineNo">28846</span> final double ix = it.aDouble;<a name="line.28846"></a>
<span class="sourceLineNo">28847</span> double ox;<a name="line.28847"></a>
<span class="sourceLineNo">28848</span> ox = (Math.sqrt(ix));<a name="line.28848"></a>
<span class="sourceLineNo">28849</span> for (int j = 0; j &lt; is; j++) {<a name="line.28849"></a>
<span class="sourceLineNo">28850</span> oaf64data[it.oIndex + j] = ox;<a name="line.28850"></a>
<span class="sourceLineNo">28851</span> }<a name="line.28851"></a>
<span class="sourceLineNo">28852</span> }<a name="line.28852"></a>
<span class="sourceLineNo">28853</span> } else {<a name="line.28853"></a>
<span class="sourceLineNo">28854</span> while (it.hasNext()) {<a name="line.28854"></a>
<span class="sourceLineNo">28855</span> final long ix = it.aLong;<a name="line.28855"></a>
<span class="sourceLineNo">28856</span> double ox;<a name="line.28856"></a>
<span class="sourceLineNo">28857</span> ox = (Math.sqrt(ix));<a name="line.28857"></a>
<span class="sourceLineNo">28858</span> for (int j = 0; j &lt; is; j++) {<a name="line.28858"></a>
<span class="sourceLineNo">28859</span> oaf64data[it.oIndex + j] = ox;<a name="line.28859"></a>
<span class="sourceLineNo">28860</span> }<a name="line.28860"></a>
<span class="sourceLineNo">28861</span> }<a name="line.28861"></a>
<span class="sourceLineNo">28862</span> }<a name="line.28862"></a>
<span class="sourceLineNo">28863</span> } else {<a name="line.28863"></a>
<span class="sourceLineNo">28864</span> if (it.isOutputDouble()) {<a name="line.28864"></a>
<span class="sourceLineNo">28865</span> while (it.hasNext()) {<a name="line.28865"></a>
<span class="sourceLineNo">28866</span> for (int j = 0; j &lt; is; j++) {<a name="line.28866"></a>
<span class="sourceLineNo">28867</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.28867"></a>
<span class="sourceLineNo">28868</span> double ox;<a name="line.28868"></a>
<span class="sourceLineNo">28869</span> ox = (Math.sqrt(ix));<a name="line.28869"></a>
<span class="sourceLineNo">28870</span> oaf64data[it.oIndex + j] = ox;<a name="line.28870"></a>
<span class="sourceLineNo">28871</span> }<a name="line.28871"></a>
<span class="sourceLineNo">28872</span> }<a name="line.28872"></a>
<span class="sourceLineNo">28873</span> } else {<a name="line.28873"></a>
<span class="sourceLineNo">28874</span> while (it.hasNext()) {<a name="line.28874"></a>
<span class="sourceLineNo">28875</span> for (int j = 0; j &lt; is; j++) {<a name="line.28875"></a>
<span class="sourceLineNo">28876</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.28876"></a>
<span class="sourceLineNo">28877</span> double ox;<a name="line.28877"></a>
<span class="sourceLineNo">28878</span> ox = (Math.sqrt(ix));<a name="line.28878"></a>
<span class="sourceLineNo">28879</span> oaf64data[it.oIndex + j] = ox;<a name="line.28879"></a>
<span class="sourceLineNo">28880</span> }<a name="line.28880"></a>
<span class="sourceLineNo">28881</span> }<a name="line.28881"></a>
<span class="sourceLineNo">28882</span> }<a name="line.28882"></a>
<span class="sourceLineNo">28883</span> }<a name="line.28883"></a>
<span class="sourceLineNo">28884</span> break;<a name="line.28884"></a>
<span class="sourceLineNo">28885</span> case Dataset.COMPLEX64:<a name="line.28885"></a>
<span class="sourceLineNo">28886</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.28886"></a>
<span class="sourceLineNo">28887</span> if (!da.isComplex()) {<a name="line.28887"></a>
<span class="sourceLineNo">28888</span> if (it.isOutputDouble()) {<a name="line.28888"></a>
<span class="sourceLineNo">28889</span> final double iy = 0;<a name="line.28889"></a>
<span class="sourceLineNo">28890</span> while (it.hasNext()) {<a name="line.28890"></a>
<span class="sourceLineNo">28891</span> final double ix = it.aDouble;<a name="line.28891"></a>
<span class="sourceLineNo">28892</span> Complex tz;<a name="line.28892"></a>
<span class="sourceLineNo">28893</span> float ox;<a name="line.28893"></a>
<span class="sourceLineNo">28894</span> float oy;<a name="line.28894"></a>
<span class="sourceLineNo">28895</span> tz = new Complex(ix, iy).sqrt();<a name="line.28895"></a>
<span class="sourceLineNo">28896</span> ox = (float) (tz.getReal());<a name="line.28896"></a>
<span class="sourceLineNo">28897</span> oy = (float) (tz.getImaginary());<a name="line.28897"></a>
<span class="sourceLineNo">28898</span> oc64data[it.oIndex] = ox;<a name="line.28898"></a>
<span class="sourceLineNo">28899</span> oc64data[it.oIndex + 1] = oy;<a name="line.28899"></a>
<span class="sourceLineNo">28900</span> }<a name="line.28900"></a>
<span class="sourceLineNo">28901</span> } else {<a name="line.28901"></a>
<span class="sourceLineNo">28902</span> final long iy = 0;<a name="line.28902"></a>
<span class="sourceLineNo">28903</span> while (it.hasNext()) {<a name="line.28903"></a>
<span class="sourceLineNo">28904</span> final long ix = it.aLong;<a name="line.28904"></a>
<span class="sourceLineNo">28905</span> Complex tz;<a name="line.28905"></a>
<span class="sourceLineNo">28906</span> float ox;<a name="line.28906"></a>
<span class="sourceLineNo">28907</span> float oy;<a name="line.28907"></a>
<span class="sourceLineNo">28908</span> tz = new Complex(ix, iy).sqrt();<a name="line.28908"></a>
<span class="sourceLineNo">28909</span> ox = (float) toLong(tz.getReal());<a name="line.28909"></a>
<span class="sourceLineNo">28910</span> oy = (float) toLong(tz.getImaginary());<a name="line.28910"></a>
<span class="sourceLineNo">28911</span> oc64data[it.oIndex] = ox;<a name="line.28911"></a>
<span class="sourceLineNo">28912</span> oc64data[it.oIndex + 1] = oy;<a name="line.28912"></a>
<span class="sourceLineNo">28913</span> }<a name="line.28913"></a>
<span class="sourceLineNo">28914</span> }<a name="line.28914"></a>
<span class="sourceLineNo">28915</span> } else {<a name="line.28915"></a>
<span class="sourceLineNo">28916</span> while (it.hasNext()) {<a name="line.28916"></a>
<span class="sourceLineNo">28917</span> final double ix = it.aDouble;<a name="line.28917"></a>
<span class="sourceLineNo">28918</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.28918"></a>
<span class="sourceLineNo">28919</span> Complex tz;<a name="line.28919"></a>
<span class="sourceLineNo">28920</span> float ox;<a name="line.28920"></a>
<span class="sourceLineNo">28921</span> float oy;<a name="line.28921"></a>
<span class="sourceLineNo">28922</span> tz = new Complex(ix, iy).sqrt();<a name="line.28922"></a>
<span class="sourceLineNo">28923</span> ox = (float) (tz.getReal());<a name="line.28923"></a>
<span class="sourceLineNo">28924</span> oy = (float) (tz.getImaginary());<a name="line.28924"></a>
<span class="sourceLineNo">28925</span> oc64data[it.oIndex] = ox;<a name="line.28925"></a>
<span class="sourceLineNo">28926</span> oc64data[it.oIndex + 1] = oy;<a name="line.28926"></a>
<span class="sourceLineNo">28927</span> }<a name="line.28927"></a>
<span class="sourceLineNo">28928</span> }<a name="line.28928"></a>
<span class="sourceLineNo">28929</span> break;<a name="line.28929"></a>
<span class="sourceLineNo">28930</span> case Dataset.COMPLEX128:<a name="line.28930"></a>
<span class="sourceLineNo">28931</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.28931"></a>
<span class="sourceLineNo">28932</span> if (!da.isComplex()) {<a name="line.28932"></a>
<span class="sourceLineNo">28933</span> if (it.isOutputDouble()) {<a name="line.28933"></a>
<span class="sourceLineNo">28934</span> final double iy = 0;<a name="line.28934"></a>
<span class="sourceLineNo">28935</span> while (it.hasNext()) {<a name="line.28935"></a>
<span class="sourceLineNo">28936</span> final double ix = it.aDouble;<a name="line.28936"></a>
<span class="sourceLineNo">28937</span> Complex tz;<a name="line.28937"></a>
<span class="sourceLineNo">28938</span> double ox;<a name="line.28938"></a>
<span class="sourceLineNo">28939</span> double oy;<a name="line.28939"></a>
<span class="sourceLineNo">28940</span> tz = new Complex(ix, iy).sqrt();<a name="line.28940"></a>
<span class="sourceLineNo">28941</span> ox = (tz.getReal());<a name="line.28941"></a>
<span class="sourceLineNo">28942</span> oy = (tz.getImaginary());<a name="line.28942"></a>
<span class="sourceLineNo">28943</span> oc128data[it.oIndex] = ox;<a name="line.28943"></a>
<span class="sourceLineNo">28944</span> oc128data[it.oIndex + 1] = oy;<a name="line.28944"></a>
<span class="sourceLineNo">28945</span> }<a name="line.28945"></a>
<span class="sourceLineNo">28946</span> } else {<a name="line.28946"></a>
<span class="sourceLineNo">28947</span> final long iy = 0;<a name="line.28947"></a>
<span class="sourceLineNo">28948</span> while (it.hasNext()) {<a name="line.28948"></a>
<span class="sourceLineNo">28949</span> final long ix = it.aLong;<a name="line.28949"></a>
<span class="sourceLineNo">28950</span> Complex tz;<a name="line.28950"></a>
<span class="sourceLineNo">28951</span> double ox;<a name="line.28951"></a>
<span class="sourceLineNo">28952</span> double oy;<a name="line.28952"></a>
<span class="sourceLineNo">28953</span> tz = new Complex(ix, iy).sqrt();<a name="line.28953"></a>
<span class="sourceLineNo">28954</span> ox = (tz.getReal());<a name="line.28954"></a>
<span class="sourceLineNo">28955</span> oy = (tz.getImaginary());<a name="line.28955"></a>
<span class="sourceLineNo">28956</span> oc128data[it.oIndex] = ox;<a name="line.28956"></a>
<span class="sourceLineNo">28957</span> oc128data[it.oIndex + 1] = oy;<a name="line.28957"></a>
<span class="sourceLineNo">28958</span> }<a name="line.28958"></a>
<span class="sourceLineNo">28959</span> }<a name="line.28959"></a>
<span class="sourceLineNo">28960</span> } else {<a name="line.28960"></a>
<span class="sourceLineNo">28961</span> while (it.hasNext()) {<a name="line.28961"></a>
<span class="sourceLineNo">28962</span> final double ix = it.aDouble;<a name="line.28962"></a>
<span class="sourceLineNo">28963</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.28963"></a>
<span class="sourceLineNo">28964</span> Complex tz;<a name="line.28964"></a>
<span class="sourceLineNo">28965</span> double ox;<a name="line.28965"></a>
<span class="sourceLineNo">28966</span> double oy;<a name="line.28966"></a>
<span class="sourceLineNo">28967</span> tz = new Complex(ix, iy).sqrt();<a name="line.28967"></a>
<span class="sourceLineNo">28968</span> ox = (tz.getReal());<a name="line.28968"></a>
<span class="sourceLineNo">28969</span> oy = (tz.getImaginary());<a name="line.28969"></a>
<span class="sourceLineNo">28970</span> oc128data[it.oIndex] = ox;<a name="line.28970"></a>
<span class="sourceLineNo">28971</span> oc128data[it.oIndex + 1] = oy;<a name="line.28971"></a>
<span class="sourceLineNo">28972</span> }<a name="line.28972"></a>
<span class="sourceLineNo">28973</span> }<a name="line.28973"></a>
<span class="sourceLineNo">28974</span> break;<a name="line.28974"></a>
<span class="sourceLineNo">28975</span> default:<a name="line.28975"></a>
<span class="sourceLineNo">28976</span> throw new IllegalArgumentException("sqrt supports integer, compound integer, real, compound real, complex datasets only");<a name="line.28976"></a>
<span class="sourceLineNo">28977</span> }<a name="line.28977"></a>
<span class="sourceLineNo">28978</span><a name="line.28978"></a>
<span class="sourceLineNo">28979</span> addFunctionName(result, "sqrt");<a name="line.28979"></a>
<span class="sourceLineNo">28980</span> return result;<a name="line.28980"></a>
<span class="sourceLineNo">28981</span> }<a name="line.28981"></a>
<span class="sourceLineNo">28982</span><a name="line.28982"></a>
<span class="sourceLineNo">28983</span> /**<a name="line.28983"></a>
<span class="sourceLineNo">28984</span> * cbrt - evaluate the cube root function on each element of the dataset<a name="line.28984"></a>
<span class="sourceLineNo">28985</span> * @param a<a name="line.28985"></a>
<span class="sourceLineNo">28986</span> * @return dataset<a name="line.28986"></a>
<span class="sourceLineNo">28987</span> */<a name="line.28987"></a>
<span class="sourceLineNo">28988</span> public static Dataset cbrt(final Object a) {<a name="line.28988"></a>
<span class="sourceLineNo">28989</span> return cbrt(a, null);<a name="line.28989"></a>
<span class="sourceLineNo">28990</span> }<a name="line.28990"></a>
<span class="sourceLineNo">28991</span><a name="line.28991"></a>
<span class="sourceLineNo">28992</span> /**<a name="line.28992"></a>
<span class="sourceLineNo">28993</span> * cbrt - evaluate the cube root function on each element of the dataset<a name="line.28993"></a>
<span class="sourceLineNo">28994</span> * @param a<a name="line.28994"></a>
<span class="sourceLineNo">28995</span> * @param o output can be null - in which case, a new dataset is created<a name="line.28995"></a>
<span class="sourceLineNo">28996</span> * @return dataset<a name="line.28996"></a>
<span class="sourceLineNo">28997</span> */<a name="line.28997"></a>
<span class="sourceLineNo">28998</span> public static Dataset cbrt(final Object a, final Dataset o) {<a name="line.28998"></a>
<span class="sourceLineNo">28999</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.28999"></a>
<span class="sourceLineNo">29000</span> SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true);<a name="line.29000"></a>
<span class="sourceLineNo">29001</span> final Dataset result = it.getOutput();<a name="line.29001"></a>
<span class="sourceLineNo">29002</span> if (!result.isComplex()) {<a name="line.29002"></a>
<span class="sourceLineNo">29003</span> if (da.isComplex()) {<a name="line.29003"></a>
<span class="sourceLineNo">29004</span> da = da.getRealView();<a name="line.29004"></a>
<span class="sourceLineNo">29005</span> it = new SingleInputBroadcastIterator(da, result, true);<a name="line.29005"></a>
<span class="sourceLineNo">29006</span> }<a name="line.29006"></a>
<span class="sourceLineNo">29007</span> }<a name="line.29007"></a>
<span class="sourceLineNo">29008</span> final int is = result.getElementsPerItem();<a name="line.29008"></a>
<span class="sourceLineNo">29009</span> final int as = da.getElementsPerItem();<a name="line.29009"></a>
<span class="sourceLineNo">29010</span> final int dt = result.getDType();<a name="line.29010"></a>
<span class="sourceLineNo">29011</span><a name="line.29011"></a>
<span class="sourceLineNo">29012</span> switch(dt) {<a name="line.29012"></a>
<span class="sourceLineNo">29013</span> case Dataset.INT8:<a name="line.29013"></a>
<span class="sourceLineNo">29014</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.29014"></a>
<span class="sourceLineNo">29015</span> if (it.isOutputDouble()) {<a name="line.29015"></a>
<span class="sourceLineNo">29016</span> while (it.hasNext()) {<a name="line.29016"></a>
<span class="sourceLineNo">29017</span> final double ix = it.aDouble;<a name="line.29017"></a>
<span class="sourceLineNo">29018</span> byte ox;<a name="line.29018"></a>
<span class="sourceLineNo">29019</span> ox = (byte) toLong(Math.cbrt(ix));<a name="line.29019"></a>
<span class="sourceLineNo">29020</span> oi8data[it.oIndex] = ox;<a name="line.29020"></a>
<span class="sourceLineNo">29021</span> }<a name="line.29021"></a>
<span class="sourceLineNo">29022</span> } else {<a name="line.29022"></a>
<span class="sourceLineNo">29023</span> while (it.hasNext()) {<a name="line.29023"></a>
<span class="sourceLineNo">29024</span> final long ix = it.aLong;<a name="line.29024"></a>
<span class="sourceLineNo">29025</span> byte ox;<a name="line.29025"></a>
<span class="sourceLineNo">29026</span> ox = (byte) toLong(Math.cbrt(ix));<a name="line.29026"></a>
<span class="sourceLineNo">29027</span> oi8data[it.oIndex] = ox;<a name="line.29027"></a>
<span class="sourceLineNo">29028</span> }<a name="line.29028"></a>
<span class="sourceLineNo">29029</span> }<a name="line.29029"></a>
<span class="sourceLineNo">29030</span> break;<a name="line.29030"></a>
<span class="sourceLineNo">29031</span> case Dataset.INT16:<a name="line.29031"></a>
<span class="sourceLineNo">29032</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.29032"></a>
<span class="sourceLineNo">29033</span> if (it.isOutputDouble()) {<a name="line.29033"></a>
<span class="sourceLineNo">29034</span> while (it.hasNext()) {<a name="line.29034"></a>
<span class="sourceLineNo">29035</span> final double ix = it.aDouble;<a name="line.29035"></a>
<span class="sourceLineNo">29036</span> short ox;<a name="line.29036"></a>
<span class="sourceLineNo">29037</span> ox = (short) toLong(Math.cbrt(ix));<a name="line.29037"></a>
<span class="sourceLineNo">29038</span> oi16data[it.oIndex] = ox;<a name="line.29038"></a>
<span class="sourceLineNo">29039</span> }<a name="line.29039"></a>
<span class="sourceLineNo">29040</span> } else {<a name="line.29040"></a>
<span class="sourceLineNo">29041</span> while (it.hasNext()) {<a name="line.29041"></a>
<span class="sourceLineNo">29042</span> final long ix = it.aLong;<a name="line.29042"></a>
<span class="sourceLineNo">29043</span> short ox;<a name="line.29043"></a>
<span class="sourceLineNo">29044</span> ox = (short) toLong(Math.cbrt(ix));<a name="line.29044"></a>
<span class="sourceLineNo">29045</span> oi16data[it.oIndex] = ox;<a name="line.29045"></a>
<span class="sourceLineNo">29046</span> }<a name="line.29046"></a>
<span class="sourceLineNo">29047</span> }<a name="line.29047"></a>
<span class="sourceLineNo">29048</span> break;<a name="line.29048"></a>
<span class="sourceLineNo">29049</span> case Dataset.INT64:<a name="line.29049"></a>
<span class="sourceLineNo">29050</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.29050"></a>
<span class="sourceLineNo">29051</span> if (it.isOutputDouble()) {<a name="line.29051"></a>
<span class="sourceLineNo">29052</span> while (it.hasNext()) {<a name="line.29052"></a>
<span class="sourceLineNo">29053</span> final double ix = it.aDouble;<a name="line.29053"></a>
<span class="sourceLineNo">29054</span> long ox;<a name="line.29054"></a>
<span class="sourceLineNo">29055</span> ox = toLong(Math.cbrt(ix));<a name="line.29055"></a>
<span class="sourceLineNo">29056</span> oi64data[it.oIndex] = ox;<a name="line.29056"></a>
<span class="sourceLineNo">29057</span> }<a name="line.29057"></a>
<span class="sourceLineNo">29058</span> } else {<a name="line.29058"></a>
<span class="sourceLineNo">29059</span> while (it.hasNext()) {<a name="line.29059"></a>
<span class="sourceLineNo">29060</span> final long ix = it.aLong;<a name="line.29060"></a>
<span class="sourceLineNo">29061</span> long ox;<a name="line.29061"></a>
<span class="sourceLineNo">29062</span> ox = toLong(Math.cbrt(ix));<a name="line.29062"></a>
<span class="sourceLineNo">29063</span> oi64data[it.oIndex] = ox;<a name="line.29063"></a>
<span class="sourceLineNo">29064</span> }<a name="line.29064"></a>
<span class="sourceLineNo">29065</span> }<a name="line.29065"></a>
<span class="sourceLineNo">29066</span> break;<a name="line.29066"></a>
<span class="sourceLineNo">29067</span> case Dataset.INT32:<a name="line.29067"></a>
<span class="sourceLineNo">29068</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.29068"></a>
<span class="sourceLineNo">29069</span> if (it.isOutputDouble()) {<a name="line.29069"></a>
<span class="sourceLineNo">29070</span> while (it.hasNext()) {<a name="line.29070"></a>
<span class="sourceLineNo">29071</span> final double ix = it.aDouble;<a name="line.29071"></a>
<span class="sourceLineNo">29072</span> int ox;<a name="line.29072"></a>
<span class="sourceLineNo">29073</span> ox = (int) toLong(Math.cbrt(ix));<a name="line.29073"></a>
<span class="sourceLineNo">29074</span> oi32data[it.oIndex] = ox;<a name="line.29074"></a>
<span class="sourceLineNo">29075</span> }<a name="line.29075"></a>
<span class="sourceLineNo">29076</span> } else {<a name="line.29076"></a>
<span class="sourceLineNo">29077</span> while (it.hasNext()) {<a name="line.29077"></a>
<span class="sourceLineNo">29078</span> final long ix = it.aLong;<a name="line.29078"></a>
<span class="sourceLineNo">29079</span> int ox;<a name="line.29079"></a>
<span class="sourceLineNo">29080</span> ox = (int) toLong(Math.cbrt(ix));<a name="line.29080"></a>
<span class="sourceLineNo">29081</span> oi32data[it.oIndex] = ox;<a name="line.29081"></a>
<span class="sourceLineNo">29082</span> }<a name="line.29082"></a>
<span class="sourceLineNo">29083</span> }<a name="line.29083"></a>
<span class="sourceLineNo">29084</span> break;<a name="line.29084"></a>
<span class="sourceLineNo">29085</span> case Dataset.ARRAYINT8:<a name="line.29085"></a>
<span class="sourceLineNo">29086</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.29086"></a>
<span class="sourceLineNo">29087</span> if (is == 1) {<a name="line.29087"></a>
<span class="sourceLineNo">29088</span> if (it.isOutputDouble()) {<a name="line.29088"></a>
<span class="sourceLineNo">29089</span> while (it.hasNext()) {<a name="line.29089"></a>
<span class="sourceLineNo">29090</span> final double ix = it.aDouble;<a name="line.29090"></a>
<span class="sourceLineNo">29091</span> byte ox;<a name="line.29091"></a>
<span class="sourceLineNo">29092</span> ox = (byte) toLong(Math.cbrt(ix));<a name="line.29092"></a>
<span class="sourceLineNo">29093</span> oai8data[it.oIndex] = ox;<a name="line.29093"></a>
<span class="sourceLineNo">29094</span> }<a name="line.29094"></a>
<span class="sourceLineNo">29095</span> } else {<a name="line.29095"></a>
<span class="sourceLineNo">29096</span> while (it.hasNext()) {<a name="line.29096"></a>
<span class="sourceLineNo">29097</span> final long ix = it.aLong;<a name="line.29097"></a>
<span class="sourceLineNo">29098</span> byte ox;<a name="line.29098"></a>
<span class="sourceLineNo">29099</span> ox = (byte) toLong(Math.cbrt(ix));<a name="line.29099"></a>
<span class="sourceLineNo">29100</span> oai8data[it.oIndex] = ox;<a name="line.29100"></a>
<span class="sourceLineNo">29101</span> }<a name="line.29101"></a>
<span class="sourceLineNo">29102</span> }<a name="line.29102"></a>
<span class="sourceLineNo">29103</span> } else if (as == 1) {<a name="line.29103"></a>
<span class="sourceLineNo">29104</span> if (it.isOutputDouble()) {<a name="line.29104"></a>
<span class="sourceLineNo">29105</span> while (it.hasNext()) {<a name="line.29105"></a>
<span class="sourceLineNo">29106</span> final double ix = it.aDouble;<a name="line.29106"></a>
<span class="sourceLineNo">29107</span> byte ox;<a name="line.29107"></a>
<span class="sourceLineNo">29108</span> ox = (byte) toLong(Math.cbrt(ix));<a name="line.29108"></a>
<span class="sourceLineNo">29109</span> for (int j = 0; j &lt; is; j++) {<a name="line.29109"></a>
<span class="sourceLineNo">29110</span> oai8data[it.oIndex + j] = ox;<a name="line.29110"></a>
<span class="sourceLineNo">29111</span> }<a name="line.29111"></a>
<span class="sourceLineNo">29112</span> }<a name="line.29112"></a>
<span class="sourceLineNo">29113</span> } else {<a name="line.29113"></a>
<span class="sourceLineNo">29114</span> while (it.hasNext()) {<a name="line.29114"></a>
<span class="sourceLineNo">29115</span> final long ix = it.aLong;<a name="line.29115"></a>
<span class="sourceLineNo">29116</span> byte ox;<a name="line.29116"></a>
<span class="sourceLineNo">29117</span> ox = (byte) toLong(Math.cbrt(ix));<a name="line.29117"></a>
<span class="sourceLineNo">29118</span> for (int j = 0; j &lt; is; j++) {<a name="line.29118"></a>
<span class="sourceLineNo">29119</span> oai8data[it.oIndex + j] = ox;<a name="line.29119"></a>
<span class="sourceLineNo">29120</span> }<a name="line.29120"></a>
<span class="sourceLineNo">29121</span> }<a name="line.29121"></a>
<span class="sourceLineNo">29122</span> }<a name="line.29122"></a>
<span class="sourceLineNo">29123</span> } else {<a name="line.29123"></a>
<span class="sourceLineNo">29124</span> if (it.isOutputDouble()) {<a name="line.29124"></a>
<span class="sourceLineNo">29125</span> while (it.hasNext()) {<a name="line.29125"></a>
<span class="sourceLineNo">29126</span> for (int j = 0; j &lt; is; j++) {<a name="line.29126"></a>
<span class="sourceLineNo">29127</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.29127"></a>
<span class="sourceLineNo">29128</span> byte ox;<a name="line.29128"></a>
<span class="sourceLineNo">29129</span> ox = (byte) toLong(Math.cbrt(ix));<a name="line.29129"></a>
<span class="sourceLineNo">29130</span> oai8data[it.oIndex + j] = ox;<a name="line.29130"></a>
<span class="sourceLineNo">29131</span> }<a name="line.29131"></a>
<span class="sourceLineNo">29132</span> }<a name="line.29132"></a>
<span class="sourceLineNo">29133</span> } else {<a name="line.29133"></a>
<span class="sourceLineNo">29134</span> while (it.hasNext()) {<a name="line.29134"></a>
<span class="sourceLineNo">29135</span> for (int j = 0; j &lt; is; j++) {<a name="line.29135"></a>
<span class="sourceLineNo">29136</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.29136"></a>
<span class="sourceLineNo">29137</span> byte ox;<a name="line.29137"></a>
<span class="sourceLineNo">29138</span> ox = (byte) toLong(Math.cbrt(ix));<a name="line.29138"></a>
<span class="sourceLineNo">29139</span> oai8data[it.oIndex + j] = ox;<a name="line.29139"></a>
<span class="sourceLineNo">29140</span> }<a name="line.29140"></a>
<span class="sourceLineNo">29141</span> }<a name="line.29141"></a>
<span class="sourceLineNo">29142</span> }<a name="line.29142"></a>
<span class="sourceLineNo">29143</span> }<a name="line.29143"></a>
<span class="sourceLineNo">29144</span> break;<a name="line.29144"></a>
<span class="sourceLineNo">29145</span> case Dataset.ARRAYINT16:<a name="line.29145"></a>
<span class="sourceLineNo">29146</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.29146"></a>
<span class="sourceLineNo">29147</span> if (is == 1) {<a name="line.29147"></a>
<span class="sourceLineNo">29148</span> if (it.isOutputDouble()) {<a name="line.29148"></a>
<span class="sourceLineNo">29149</span> while (it.hasNext()) {<a name="line.29149"></a>
<span class="sourceLineNo">29150</span> final double ix = it.aDouble;<a name="line.29150"></a>
<span class="sourceLineNo">29151</span> short ox;<a name="line.29151"></a>
<span class="sourceLineNo">29152</span> ox = (short) toLong(Math.cbrt(ix));<a name="line.29152"></a>
<span class="sourceLineNo">29153</span> oai16data[it.oIndex] = ox;<a name="line.29153"></a>
<span class="sourceLineNo">29154</span> }<a name="line.29154"></a>
<span class="sourceLineNo">29155</span> } else {<a name="line.29155"></a>
<span class="sourceLineNo">29156</span> while (it.hasNext()) {<a name="line.29156"></a>
<span class="sourceLineNo">29157</span> final long ix = it.aLong;<a name="line.29157"></a>
<span class="sourceLineNo">29158</span> short ox;<a name="line.29158"></a>
<span class="sourceLineNo">29159</span> ox = (short) toLong(Math.cbrt(ix));<a name="line.29159"></a>
<span class="sourceLineNo">29160</span> oai16data[it.oIndex] = ox;<a name="line.29160"></a>
<span class="sourceLineNo">29161</span> }<a name="line.29161"></a>
<span class="sourceLineNo">29162</span> }<a name="line.29162"></a>
<span class="sourceLineNo">29163</span> } else if (as == 1) {<a name="line.29163"></a>
<span class="sourceLineNo">29164</span> if (it.isOutputDouble()) {<a name="line.29164"></a>
<span class="sourceLineNo">29165</span> while (it.hasNext()) {<a name="line.29165"></a>
<span class="sourceLineNo">29166</span> final double ix = it.aDouble;<a name="line.29166"></a>
<span class="sourceLineNo">29167</span> short ox;<a name="line.29167"></a>
<span class="sourceLineNo">29168</span> ox = (short) toLong(Math.cbrt(ix));<a name="line.29168"></a>
<span class="sourceLineNo">29169</span> for (int j = 0; j &lt; is; j++) {<a name="line.29169"></a>
<span class="sourceLineNo">29170</span> oai16data[it.oIndex + j] = ox;<a name="line.29170"></a>
<span class="sourceLineNo">29171</span> }<a name="line.29171"></a>
<span class="sourceLineNo">29172</span> }<a name="line.29172"></a>
<span class="sourceLineNo">29173</span> } else {<a name="line.29173"></a>
<span class="sourceLineNo">29174</span> while (it.hasNext()) {<a name="line.29174"></a>
<span class="sourceLineNo">29175</span> final long ix = it.aLong;<a name="line.29175"></a>
<span class="sourceLineNo">29176</span> short ox;<a name="line.29176"></a>
<span class="sourceLineNo">29177</span> ox = (short) toLong(Math.cbrt(ix));<a name="line.29177"></a>
<span class="sourceLineNo">29178</span> for (int j = 0; j &lt; is; j++) {<a name="line.29178"></a>
<span class="sourceLineNo">29179</span> oai16data[it.oIndex + j] = ox;<a name="line.29179"></a>
<span class="sourceLineNo">29180</span> }<a name="line.29180"></a>
<span class="sourceLineNo">29181</span> }<a name="line.29181"></a>
<span class="sourceLineNo">29182</span> }<a name="line.29182"></a>
<span class="sourceLineNo">29183</span> } else {<a name="line.29183"></a>
<span class="sourceLineNo">29184</span> if (it.isOutputDouble()) {<a name="line.29184"></a>
<span class="sourceLineNo">29185</span> while (it.hasNext()) {<a name="line.29185"></a>
<span class="sourceLineNo">29186</span> for (int j = 0; j &lt; is; j++) {<a name="line.29186"></a>
<span class="sourceLineNo">29187</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.29187"></a>
<span class="sourceLineNo">29188</span> short ox;<a name="line.29188"></a>
<span class="sourceLineNo">29189</span> ox = (short) toLong(Math.cbrt(ix));<a name="line.29189"></a>
<span class="sourceLineNo">29190</span> oai16data[it.oIndex + j] = ox;<a name="line.29190"></a>
<span class="sourceLineNo">29191</span> }<a name="line.29191"></a>
<span class="sourceLineNo">29192</span> }<a name="line.29192"></a>
<span class="sourceLineNo">29193</span> } else {<a name="line.29193"></a>
<span class="sourceLineNo">29194</span> while (it.hasNext()) {<a name="line.29194"></a>
<span class="sourceLineNo">29195</span> for (int j = 0; j &lt; is; j++) {<a name="line.29195"></a>
<span class="sourceLineNo">29196</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.29196"></a>
<span class="sourceLineNo">29197</span> short ox;<a name="line.29197"></a>
<span class="sourceLineNo">29198</span> ox = (short) toLong(Math.cbrt(ix));<a name="line.29198"></a>
<span class="sourceLineNo">29199</span> oai16data[it.oIndex + j] = ox;<a name="line.29199"></a>
<span class="sourceLineNo">29200</span> }<a name="line.29200"></a>
<span class="sourceLineNo">29201</span> }<a name="line.29201"></a>
<span class="sourceLineNo">29202</span> }<a name="line.29202"></a>
<span class="sourceLineNo">29203</span> }<a name="line.29203"></a>
<span class="sourceLineNo">29204</span> break;<a name="line.29204"></a>
<span class="sourceLineNo">29205</span> case Dataset.ARRAYINT64:<a name="line.29205"></a>
<span class="sourceLineNo">29206</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.29206"></a>
<span class="sourceLineNo">29207</span> if (is == 1) {<a name="line.29207"></a>
<span class="sourceLineNo">29208</span> if (it.isOutputDouble()) {<a name="line.29208"></a>
<span class="sourceLineNo">29209</span> while (it.hasNext()) {<a name="line.29209"></a>
<span class="sourceLineNo">29210</span> final double ix = it.aDouble;<a name="line.29210"></a>
<span class="sourceLineNo">29211</span> long ox;<a name="line.29211"></a>
<span class="sourceLineNo">29212</span> ox = toLong(Math.cbrt(ix));<a name="line.29212"></a>
<span class="sourceLineNo">29213</span> oai64data[it.oIndex] = ox;<a name="line.29213"></a>
<span class="sourceLineNo">29214</span> }<a name="line.29214"></a>
<span class="sourceLineNo">29215</span> } else {<a name="line.29215"></a>
<span class="sourceLineNo">29216</span> while (it.hasNext()) {<a name="line.29216"></a>
<span class="sourceLineNo">29217</span> final long ix = it.aLong;<a name="line.29217"></a>
<span class="sourceLineNo">29218</span> long ox;<a name="line.29218"></a>
<span class="sourceLineNo">29219</span> ox = toLong(Math.cbrt(ix));<a name="line.29219"></a>
<span class="sourceLineNo">29220</span> oai64data[it.oIndex] = ox;<a name="line.29220"></a>
<span class="sourceLineNo">29221</span> }<a name="line.29221"></a>
<span class="sourceLineNo">29222</span> }<a name="line.29222"></a>
<span class="sourceLineNo">29223</span> } else if (as == 1) {<a name="line.29223"></a>
<span class="sourceLineNo">29224</span> if (it.isOutputDouble()) {<a name="line.29224"></a>
<span class="sourceLineNo">29225</span> while (it.hasNext()) {<a name="line.29225"></a>
<span class="sourceLineNo">29226</span> final double ix = it.aDouble;<a name="line.29226"></a>
<span class="sourceLineNo">29227</span> long ox;<a name="line.29227"></a>
<span class="sourceLineNo">29228</span> ox = toLong(Math.cbrt(ix));<a name="line.29228"></a>
<span class="sourceLineNo">29229</span> for (int j = 0; j &lt; is; j++) {<a name="line.29229"></a>
<span class="sourceLineNo">29230</span> oai64data[it.oIndex + j] = ox;<a name="line.29230"></a>
<span class="sourceLineNo">29231</span> }<a name="line.29231"></a>
<span class="sourceLineNo">29232</span> }<a name="line.29232"></a>
<span class="sourceLineNo">29233</span> } else {<a name="line.29233"></a>
<span class="sourceLineNo">29234</span> while (it.hasNext()) {<a name="line.29234"></a>
<span class="sourceLineNo">29235</span> final long ix = it.aLong;<a name="line.29235"></a>
<span class="sourceLineNo">29236</span> long ox;<a name="line.29236"></a>
<span class="sourceLineNo">29237</span> ox = toLong(Math.cbrt(ix));<a name="line.29237"></a>
<span class="sourceLineNo">29238</span> for (int j = 0; j &lt; is; j++) {<a name="line.29238"></a>
<span class="sourceLineNo">29239</span> oai64data[it.oIndex + j] = ox;<a name="line.29239"></a>
<span class="sourceLineNo">29240</span> }<a name="line.29240"></a>
<span class="sourceLineNo">29241</span> }<a name="line.29241"></a>
<span class="sourceLineNo">29242</span> }<a name="line.29242"></a>
<span class="sourceLineNo">29243</span> } else {<a name="line.29243"></a>
<span class="sourceLineNo">29244</span> if (it.isOutputDouble()) {<a name="line.29244"></a>
<span class="sourceLineNo">29245</span> while (it.hasNext()) {<a name="line.29245"></a>
<span class="sourceLineNo">29246</span> for (int j = 0; j &lt; is; j++) {<a name="line.29246"></a>
<span class="sourceLineNo">29247</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.29247"></a>
<span class="sourceLineNo">29248</span> long ox;<a name="line.29248"></a>
<span class="sourceLineNo">29249</span> ox = toLong(Math.cbrt(ix));<a name="line.29249"></a>
<span class="sourceLineNo">29250</span> oai64data[it.oIndex + j] = ox;<a name="line.29250"></a>
<span class="sourceLineNo">29251</span> }<a name="line.29251"></a>
<span class="sourceLineNo">29252</span> }<a name="line.29252"></a>
<span class="sourceLineNo">29253</span> } else {<a name="line.29253"></a>
<span class="sourceLineNo">29254</span> while (it.hasNext()) {<a name="line.29254"></a>
<span class="sourceLineNo">29255</span> for (int j = 0; j &lt; is; j++) {<a name="line.29255"></a>
<span class="sourceLineNo">29256</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.29256"></a>
<span class="sourceLineNo">29257</span> long ox;<a name="line.29257"></a>
<span class="sourceLineNo">29258</span> ox = toLong(Math.cbrt(ix));<a name="line.29258"></a>
<span class="sourceLineNo">29259</span> oai64data[it.oIndex + j] = ox;<a name="line.29259"></a>
<span class="sourceLineNo">29260</span> }<a name="line.29260"></a>
<span class="sourceLineNo">29261</span> }<a name="line.29261"></a>
<span class="sourceLineNo">29262</span> }<a name="line.29262"></a>
<span class="sourceLineNo">29263</span> }<a name="line.29263"></a>
<span class="sourceLineNo">29264</span> break;<a name="line.29264"></a>
<span class="sourceLineNo">29265</span> case Dataset.ARRAYINT32:<a name="line.29265"></a>
<span class="sourceLineNo">29266</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.29266"></a>
<span class="sourceLineNo">29267</span> if (is == 1) {<a name="line.29267"></a>
<span class="sourceLineNo">29268</span> if (it.isOutputDouble()) {<a name="line.29268"></a>
<span class="sourceLineNo">29269</span> while (it.hasNext()) {<a name="line.29269"></a>
<span class="sourceLineNo">29270</span> final double ix = it.aDouble;<a name="line.29270"></a>
<span class="sourceLineNo">29271</span> int ox;<a name="line.29271"></a>
<span class="sourceLineNo">29272</span> ox = (int) toLong(Math.cbrt(ix));<a name="line.29272"></a>
<span class="sourceLineNo">29273</span> oai32data[it.oIndex] = ox;<a name="line.29273"></a>
<span class="sourceLineNo">29274</span> }<a name="line.29274"></a>
<span class="sourceLineNo">29275</span> } else {<a name="line.29275"></a>
<span class="sourceLineNo">29276</span> while (it.hasNext()) {<a name="line.29276"></a>
<span class="sourceLineNo">29277</span> final long ix = it.aLong;<a name="line.29277"></a>
<span class="sourceLineNo">29278</span> int ox;<a name="line.29278"></a>
<span class="sourceLineNo">29279</span> ox = (int) toLong(Math.cbrt(ix));<a name="line.29279"></a>
<span class="sourceLineNo">29280</span> oai32data[it.oIndex] = ox;<a name="line.29280"></a>
<span class="sourceLineNo">29281</span> }<a name="line.29281"></a>
<span class="sourceLineNo">29282</span> }<a name="line.29282"></a>
<span class="sourceLineNo">29283</span> } else if (as == 1) {<a name="line.29283"></a>
<span class="sourceLineNo">29284</span> if (it.isOutputDouble()) {<a name="line.29284"></a>
<span class="sourceLineNo">29285</span> while (it.hasNext()) {<a name="line.29285"></a>
<span class="sourceLineNo">29286</span> final double ix = it.aDouble;<a name="line.29286"></a>
<span class="sourceLineNo">29287</span> int ox;<a name="line.29287"></a>
<span class="sourceLineNo">29288</span> ox = (int) toLong(Math.cbrt(ix));<a name="line.29288"></a>
<span class="sourceLineNo">29289</span> for (int j = 0; j &lt; is; j++) {<a name="line.29289"></a>
<span class="sourceLineNo">29290</span> oai32data[it.oIndex + j] = ox;<a name="line.29290"></a>
<span class="sourceLineNo">29291</span> }<a name="line.29291"></a>
<span class="sourceLineNo">29292</span> }<a name="line.29292"></a>
<span class="sourceLineNo">29293</span> } else {<a name="line.29293"></a>
<span class="sourceLineNo">29294</span> while (it.hasNext()) {<a name="line.29294"></a>
<span class="sourceLineNo">29295</span> final long ix = it.aLong;<a name="line.29295"></a>
<span class="sourceLineNo">29296</span> int ox;<a name="line.29296"></a>
<span class="sourceLineNo">29297</span> ox = (int) toLong(Math.cbrt(ix));<a name="line.29297"></a>
<span class="sourceLineNo">29298</span> for (int j = 0; j &lt; is; j++) {<a name="line.29298"></a>
<span class="sourceLineNo">29299</span> oai32data[it.oIndex + j] = ox;<a name="line.29299"></a>
<span class="sourceLineNo">29300</span> }<a name="line.29300"></a>
<span class="sourceLineNo">29301</span> }<a name="line.29301"></a>
<span class="sourceLineNo">29302</span> }<a name="line.29302"></a>
<span class="sourceLineNo">29303</span> } else {<a name="line.29303"></a>
<span class="sourceLineNo">29304</span> if (it.isOutputDouble()) {<a name="line.29304"></a>
<span class="sourceLineNo">29305</span> while (it.hasNext()) {<a name="line.29305"></a>
<span class="sourceLineNo">29306</span> for (int j = 0; j &lt; is; j++) {<a name="line.29306"></a>
<span class="sourceLineNo">29307</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.29307"></a>
<span class="sourceLineNo">29308</span> int ox;<a name="line.29308"></a>
<span class="sourceLineNo">29309</span> ox = (int) toLong(Math.cbrt(ix));<a name="line.29309"></a>
<span class="sourceLineNo">29310</span> oai32data[it.oIndex + j] = ox;<a name="line.29310"></a>
<span class="sourceLineNo">29311</span> }<a name="line.29311"></a>
<span class="sourceLineNo">29312</span> }<a name="line.29312"></a>
<span class="sourceLineNo">29313</span> } else {<a name="line.29313"></a>
<span class="sourceLineNo">29314</span> while (it.hasNext()) {<a name="line.29314"></a>
<span class="sourceLineNo">29315</span> for (int j = 0; j &lt; is; j++) {<a name="line.29315"></a>
<span class="sourceLineNo">29316</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.29316"></a>
<span class="sourceLineNo">29317</span> int ox;<a name="line.29317"></a>
<span class="sourceLineNo">29318</span> ox = (int) toLong(Math.cbrt(ix));<a name="line.29318"></a>
<span class="sourceLineNo">29319</span> oai32data[it.oIndex + j] = ox;<a name="line.29319"></a>
<span class="sourceLineNo">29320</span> }<a name="line.29320"></a>
<span class="sourceLineNo">29321</span> }<a name="line.29321"></a>
<span class="sourceLineNo">29322</span> }<a name="line.29322"></a>
<span class="sourceLineNo">29323</span> }<a name="line.29323"></a>
<span class="sourceLineNo">29324</span> break;<a name="line.29324"></a>
<span class="sourceLineNo">29325</span> case Dataset.FLOAT32:<a name="line.29325"></a>
<span class="sourceLineNo">29326</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.29326"></a>
<span class="sourceLineNo">29327</span> if (it.isOutputDouble()) {<a name="line.29327"></a>
<span class="sourceLineNo">29328</span> while (it.hasNext()) {<a name="line.29328"></a>
<span class="sourceLineNo">29329</span> final double ix = it.aDouble;<a name="line.29329"></a>
<span class="sourceLineNo">29330</span> float ox;<a name="line.29330"></a>
<span class="sourceLineNo">29331</span> ox = (float) (Math.cbrt(ix));<a name="line.29331"></a>
<span class="sourceLineNo">29332</span> of32data[it.oIndex] = ox;<a name="line.29332"></a>
<span class="sourceLineNo">29333</span> }<a name="line.29333"></a>
<span class="sourceLineNo">29334</span> } else {<a name="line.29334"></a>
<span class="sourceLineNo">29335</span> while (it.hasNext()) {<a name="line.29335"></a>
<span class="sourceLineNo">29336</span> final long ix = it.aLong;<a name="line.29336"></a>
<span class="sourceLineNo">29337</span> float ox;<a name="line.29337"></a>
<span class="sourceLineNo">29338</span> ox = (float) (Math.cbrt(ix));<a name="line.29338"></a>
<span class="sourceLineNo">29339</span> of32data[it.oIndex] = ox;<a name="line.29339"></a>
<span class="sourceLineNo">29340</span> }<a name="line.29340"></a>
<span class="sourceLineNo">29341</span> }<a name="line.29341"></a>
<span class="sourceLineNo">29342</span> break;<a name="line.29342"></a>
<span class="sourceLineNo">29343</span> case Dataset.FLOAT64:<a name="line.29343"></a>
<span class="sourceLineNo">29344</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.29344"></a>
<span class="sourceLineNo">29345</span> if (it.isOutputDouble()) {<a name="line.29345"></a>
<span class="sourceLineNo">29346</span> while (it.hasNext()) {<a name="line.29346"></a>
<span class="sourceLineNo">29347</span> final double ix = it.aDouble;<a name="line.29347"></a>
<span class="sourceLineNo">29348</span> double ox;<a name="line.29348"></a>
<span class="sourceLineNo">29349</span> ox = (Math.cbrt(ix));<a name="line.29349"></a>
<span class="sourceLineNo">29350</span> of64data[it.oIndex] = ox;<a name="line.29350"></a>
<span class="sourceLineNo">29351</span> }<a name="line.29351"></a>
<span class="sourceLineNo">29352</span> } else {<a name="line.29352"></a>
<span class="sourceLineNo">29353</span> while (it.hasNext()) {<a name="line.29353"></a>
<span class="sourceLineNo">29354</span> final long ix = it.aLong;<a name="line.29354"></a>
<span class="sourceLineNo">29355</span> double ox;<a name="line.29355"></a>
<span class="sourceLineNo">29356</span> ox = (Math.cbrt(ix));<a name="line.29356"></a>
<span class="sourceLineNo">29357</span> of64data[it.oIndex] = ox;<a name="line.29357"></a>
<span class="sourceLineNo">29358</span> }<a name="line.29358"></a>
<span class="sourceLineNo">29359</span> }<a name="line.29359"></a>
<span class="sourceLineNo">29360</span> break;<a name="line.29360"></a>
<span class="sourceLineNo">29361</span> case Dataset.ARRAYFLOAT32:<a name="line.29361"></a>
<span class="sourceLineNo">29362</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.29362"></a>
<span class="sourceLineNo">29363</span> if (is == 1) {<a name="line.29363"></a>
<span class="sourceLineNo">29364</span> if (it.isOutputDouble()) {<a name="line.29364"></a>
<span class="sourceLineNo">29365</span> while (it.hasNext()) {<a name="line.29365"></a>
<span class="sourceLineNo">29366</span> final double ix = it.aDouble;<a name="line.29366"></a>
<span class="sourceLineNo">29367</span> float ox;<a name="line.29367"></a>
<span class="sourceLineNo">29368</span> ox = (float) (Math.cbrt(ix));<a name="line.29368"></a>
<span class="sourceLineNo">29369</span> oaf32data[it.oIndex] = ox;<a name="line.29369"></a>
<span class="sourceLineNo">29370</span> }<a name="line.29370"></a>
<span class="sourceLineNo">29371</span> } else {<a name="line.29371"></a>
<span class="sourceLineNo">29372</span> while (it.hasNext()) {<a name="line.29372"></a>
<span class="sourceLineNo">29373</span> final long ix = it.aLong;<a name="line.29373"></a>
<span class="sourceLineNo">29374</span> float ox;<a name="line.29374"></a>
<span class="sourceLineNo">29375</span> ox = (float) (Math.cbrt(ix));<a name="line.29375"></a>
<span class="sourceLineNo">29376</span> oaf32data[it.oIndex] = ox;<a name="line.29376"></a>
<span class="sourceLineNo">29377</span> }<a name="line.29377"></a>
<span class="sourceLineNo">29378</span> }<a name="line.29378"></a>
<span class="sourceLineNo">29379</span> } else if (as == 1) {<a name="line.29379"></a>
<span class="sourceLineNo">29380</span> if (it.isOutputDouble()) {<a name="line.29380"></a>
<span class="sourceLineNo">29381</span> while (it.hasNext()) {<a name="line.29381"></a>
<span class="sourceLineNo">29382</span> final double ix = it.aDouble;<a name="line.29382"></a>
<span class="sourceLineNo">29383</span> float ox;<a name="line.29383"></a>
<span class="sourceLineNo">29384</span> ox = (float) (Math.cbrt(ix));<a name="line.29384"></a>
<span class="sourceLineNo">29385</span> for (int j = 0; j &lt; is; j++) {<a name="line.29385"></a>
<span class="sourceLineNo">29386</span> oaf32data[it.oIndex + j] = ox;<a name="line.29386"></a>
<span class="sourceLineNo">29387</span> }<a name="line.29387"></a>
<span class="sourceLineNo">29388</span> }<a name="line.29388"></a>
<span class="sourceLineNo">29389</span> } else {<a name="line.29389"></a>
<span class="sourceLineNo">29390</span> while (it.hasNext()) {<a name="line.29390"></a>
<span class="sourceLineNo">29391</span> final long ix = it.aLong;<a name="line.29391"></a>
<span class="sourceLineNo">29392</span> float ox;<a name="line.29392"></a>
<span class="sourceLineNo">29393</span> ox = (float) (Math.cbrt(ix));<a name="line.29393"></a>
<span class="sourceLineNo">29394</span> for (int j = 0; j &lt; is; j++) {<a name="line.29394"></a>
<span class="sourceLineNo">29395</span> oaf32data[it.oIndex + j] = ox;<a name="line.29395"></a>
<span class="sourceLineNo">29396</span> }<a name="line.29396"></a>
<span class="sourceLineNo">29397</span> }<a name="line.29397"></a>
<span class="sourceLineNo">29398</span> }<a name="line.29398"></a>
<span class="sourceLineNo">29399</span> } else {<a name="line.29399"></a>
<span class="sourceLineNo">29400</span> if (it.isOutputDouble()) {<a name="line.29400"></a>
<span class="sourceLineNo">29401</span> while (it.hasNext()) {<a name="line.29401"></a>
<span class="sourceLineNo">29402</span> for (int j = 0; j &lt; is; j++) {<a name="line.29402"></a>
<span class="sourceLineNo">29403</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.29403"></a>
<span class="sourceLineNo">29404</span> float ox;<a name="line.29404"></a>
<span class="sourceLineNo">29405</span> ox = (float) (Math.cbrt(ix));<a name="line.29405"></a>
<span class="sourceLineNo">29406</span> oaf32data[it.oIndex + j] = ox;<a name="line.29406"></a>
<span class="sourceLineNo">29407</span> }<a name="line.29407"></a>
<span class="sourceLineNo">29408</span> }<a name="line.29408"></a>
<span class="sourceLineNo">29409</span> } else {<a name="line.29409"></a>
<span class="sourceLineNo">29410</span> while (it.hasNext()) {<a name="line.29410"></a>
<span class="sourceLineNo">29411</span> for (int j = 0; j &lt; is; j++) {<a name="line.29411"></a>
<span class="sourceLineNo">29412</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.29412"></a>
<span class="sourceLineNo">29413</span> float ox;<a name="line.29413"></a>
<span class="sourceLineNo">29414</span> ox = (float) (Math.cbrt(ix));<a name="line.29414"></a>
<span class="sourceLineNo">29415</span> oaf32data[it.oIndex + j] = ox;<a name="line.29415"></a>
<span class="sourceLineNo">29416</span> }<a name="line.29416"></a>
<span class="sourceLineNo">29417</span> }<a name="line.29417"></a>
<span class="sourceLineNo">29418</span> }<a name="line.29418"></a>
<span class="sourceLineNo">29419</span> }<a name="line.29419"></a>
<span class="sourceLineNo">29420</span> break;<a name="line.29420"></a>
<span class="sourceLineNo">29421</span> case Dataset.ARRAYFLOAT64:<a name="line.29421"></a>
<span class="sourceLineNo">29422</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.29422"></a>
<span class="sourceLineNo">29423</span> if (is == 1) {<a name="line.29423"></a>
<span class="sourceLineNo">29424</span> if (it.isOutputDouble()) {<a name="line.29424"></a>
<span class="sourceLineNo">29425</span> while (it.hasNext()) {<a name="line.29425"></a>
<span class="sourceLineNo">29426</span> final double ix = it.aDouble;<a name="line.29426"></a>
<span class="sourceLineNo">29427</span> double ox;<a name="line.29427"></a>
<span class="sourceLineNo">29428</span> ox = (Math.cbrt(ix));<a name="line.29428"></a>
<span class="sourceLineNo">29429</span> oaf64data[it.oIndex] = ox;<a name="line.29429"></a>
<span class="sourceLineNo">29430</span> }<a name="line.29430"></a>
<span class="sourceLineNo">29431</span> } else {<a name="line.29431"></a>
<span class="sourceLineNo">29432</span> while (it.hasNext()) {<a name="line.29432"></a>
<span class="sourceLineNo">29433</span> final long ix = it.aLong;<a name="line.29433"></a>
<span class="sourceLineNo">29434</span> double ox;<a name="line.29434"></a>
<span class="sourceLineNo">29435</span> ox = (Math.cbrt(ix));<a name="line.29435"></a>
<span class="sourceLineNo">29436</span> oaf64data[it.oIndex] = ox;<a name="line.29436"></a>
<span class="sourceLineNo">29437</span> }<a name="line.29437"></a>
<span class="sourceLineNo">29438</span> }<a name="line.29438"></a>
<span class="sourceLineNo">29439</span> } else if (as == 1) {<a name="line.29439"></a>
<span class="sourceLineNo">29440</span> if (it.isOutputDouble()) {<a name="line.29440"></a>
<span class="sourceLineNo">29441</span> while (it.hasNext()) {<a name="line.29441"></a>
<span class="sourceLineNo">29442</span> final double ix = it.aDouble;<a name="line.29442"></a>
<span class="sourceLineNo">29443</span> double ox;<a name="line.29443"></a>
<span class="sourceLineNo">29444</span> ox = (Math.cbrt(ix));<a name="line.29444"></a>
<span class="sourceLineNo">29445</span> for (int j = 0; j &lt; is; j++) {<a name="line.29445"></a>
<span class="sourceLineNo">29446</span> oaf64data[it.oIndex + j] = ox;<a name="line.29446"></a>
<span class="sourceLineNo">29447</span> }<a name="line.29447"></a>
<span class="sourceLineNo">29448</span> }<a name="line.29448"></a>
<span class="sourceLineNo">29449</span> } else {<a name="line.29449"></a>
<span class="sourceLineNo">29450</span> while (it.hasNext()) {<a name="line.29450"></a>
<span class="sourceLineNo">29451</span> final long ix = it.aLong;<a name="line.29451"></a>
<span class="sourceLineNo">29452</span> double ox;<a name="line.29452"></a>
<span class="sourceLineNo">29453</span> ox = (Math.cbrt(ix));<a name="line.29453"></a>
<span class="sourceLineNo">29454</span> for (int j = 0; j &lt; is; j++) {<a name="line.29454"></a>
<span class="sourceLineNo">29455</span> oaf64data[it.oIndex + j] = ox;<a name="line.29455"></a>
<span class="sourceLineNo">29456</span> }<a name="line.29456"></a>
<span class="sourceLineNo">29457</span> }<a name="line.29457"></a>
<span class="sourceLineNo">29458</span> }<a name="line.29458"></a>
<span class="sourceLineNo">29459</span> } else {<a name="line.29459"></a>
<span class="sourceLineNo">29460</span> if (it.isOutputDouble()) {<a name="line.29460"></a>
<span class="sourceLineNo">29461</span> while (it.hasNext()) {<a name="line.29461"></a>
<span class="sourceLineNo">29462</span> for (int j = 0; j &lt; is; j++) {<a name="line.29462"></a>
<span class="sourceLineNo">29463</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.29463"></a>
<span class="sourceLineNo">29464</span> double ox;<a name="line.29464"></a>
<span class="sourceLineNo">29465</span> ox = (Math.cbrt(ix));<a name="line.29465"></a>
<span class="sourceLineNo">29466</span> oaf64data[it.oIndex + j] = ox;<a name="line.29466"></a>
<span class="sourceLineNo">29467</span> }<a name="line.29467"></a>
<span class="sourceLineNo">29468</span> }<a name="line.29468"></a>
<span class="sourceLineNo">29469</span> } else {<a name="line.29469"></a>
<span class="sourceLineNo">29470</span> while (it.hasNext()) {<a name="line.29470"></a>
<span class="sourceLineNo">29471</span> for (int j = 0; j &lt; is; j++) {<a name="line.29471"></a>
<span class="sourceLineNo">29472</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.29472"></a>
<span class="sourceLineNo">29473</span> double ox;<a name="line.29473"></a>
<span class="sourceLineNo">29474</span> ox = (Math.cbrt(ix));<a name="line.29474"></a>
<span class="sourceLineNo">29475</span> oaf64data[it.oIndex + j] = ox;<a name="line.29475"></a>
<span class="sourceLineNo">29476</span> }<a name="line.29476"></a>
<span class="sourceLineNo">29477</span> }<a name="line.29477"></a>
<span class="sourceLineNo">29478</span> }<a name="line.29478"></a>
<span class="sourceLineNo">29479</span> }<a name="line.29479"></a>
<span class="sourceLineNo">29480</span> break;<a name="line.29480"></a>
<span class="sourceLineNo">29481</span> case Dataset.COMPLEX64:<a name="line.29481"></a>
<span class="sourceLineNo">29482</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.29482"></a>
<span class="sourceLineNo">29483</span> if (!da.isComplex()) {<a name="line.29483"></a>
<span class="sourceLineNo">29484</span> if (it.isOutputDouble()) {<a name="line.29484"></a>
<span class="sourceLineNo">29485</span> final double iy = 0;<a name="line.29485"></a>
<span class="sourceLineNo">29486</span> while (it.hasNext()) {<a name="line.29486"></a>
<span class="sourceLineNo">29487</span> final double ix = it.aDouble;<a name="line.29487"></a>
<span class="sourceLineNo">29488</span> Complex tz;<a name="line.29488"></a>
<span class="sourceLineNo">29489</span> float ox;<a name="line.29489"></a>
<span class="sourceLineNo">29490</span> float oy;<a name="line.29490"></a>
<span class="sourceLineNo">29491</span> tz = new Complex(ix, iy).pow(new Complex(1./3.,0));<a name="line.29491"></a>
<span class="sourceLineNo">29492</span> ox = (float) (tz.getReal());<a name="line.29492"></a>
<span class="sourceLineNo">29493</span> oy = (float) (tz.getImaginary());<a name="line.29493"></a>
<span class="sourceLineNo">29494</span> oc64data[it.oIndex] = ox;<a name="line.29494"></a>
<span class="sourceLineNo">29495</span> oc64data[it.oIndex + 1] = oy;<a name="line.29495"></a>
<span class="sourceLineNo">29496</span> }<a name="line.29496"></a>
<span class="sourceLineNo">29497</span> } else {<a name="line.29497"></a>
<span class="sourceLineNo">29498</span> final long iy = 0;<a name="line.29498"></a>
<span class="sourceLineNo">29499</span> while (it.hasNext()) {<a name="line.29499"></a>
<span class="sourceLineNo">29500</span> final long ix = it.aLong;<a name="line.29500"></a>
<span class="sourceLineNo">29501</span> Complex tz;<a name="line.29501"></a>
<span class="sourceLineNo">29502</span> float ox;<a name="line.29502"></a>
<span class="sourceLineNo">29503</span> float oy;<a name="line.29503"></a>
<span class="sourceLineNo">29504</span> tz = new Complex(ix, iy).pow(new Complex(1./3.,0));<a name="line.29504"></a>
<span class="sourceLineNo">29505</span> ox = (float) toLong(tz.getReal());<a name="line.29505"></a>
<span class="sourceLineNo">29506</span> oy = (float) toLong(tz.getImaginary());<a name="line.29506"></a>
<span class="sourceLineNo">29507</span> oc64data[it.oIndex] = ox;<a name="line.29507"></a>
<span class="sourceLineNo">29508</span> oc64data[it.oIndex + 1] = oy;<a name="line.29508"></a>
<span class="sourceLineNo">29509</span> }<a name="line.29509"></a>
<span class="sourceLineNo">29510</span> }<a name="line.29510"></a>
<span class="sourceLineNo">29511</span> } else {<a name="line.29511"></a>
<span class="sourceLineNo">29512</span> while (it.hasNext()) {<a name="line.29512"></a>
<span class="sourceLineNo">29513</span> final double ix = it.aDouble;<a name="line.29513"></a>
<span class="sourceLineNo">29514</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.29514"></a>
<span class="sourceLineNo">29515</span> Complex tz;<a name="line.29515"></a>
<span class="sourceLineNo">29516</span> float ox;<a name="line.29516"></a>
<span class="sourceLineNo">29517</span> float oy;<a name="line.29517"></a>
<span class="sourceLineNo">29518</span> tz = new Complex(ix, iy).pow(new Complex(1./3.,0));<a name="line.29518"></a>
<span class="sourceLineNo">29519</span> ox = (float) (tz.getReal());<a name="line.29519"></a>
<span class="sourceLineNo">29520</span> oy = (float) (tz.getImaginary());<a name="line.29520"></a>
<span class="sourceLineNo">29521</span> oc64data[it.oIndex] = ox;<a name="line.29521"></a>
<span class="sourceLineNo">29522</span> oc64data[it.oIndex + 1] = oy;<a name="line.29522"></a>
<span class="sourceLineNo">29523</span> }<a name="line.29523"></a>
<span class="sourceLineNo">29524</span> }<a name="line.29524"></a>
<span class="sourceLineNo">29525</span> break;<a name="line.29525"></a>
<span class="sourceLineNo">29526</span> case Dataset.COMPLEX128:<a name="line.29526"></a>
<span class="sourceLineNo">29527</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.29527"></a>
<span class="sourceLineNo">29528</span> if (!da.isComplex()) {<a name="line.29528"></a>
<span class="sourceLineNo">29529</span> if (it.isOutputDouble()) {<a name="line.29529"></a>
<span class="sourceLineNo">29530</span> final double iy = 0;<a name="line.29530"></a>
<span class="sourceLineNo">29531</span> while (it.hasNext()) {<a name="line.29531"></a>
<span class="sourceLineNo">29532</span> final double ix = it.aDouble;<a name="line.29532"></a>
<span class="sourceLineNo">29533</span> Complex tz;<a name="line.29533"></a>
<span class="sourceLineNo">29534</span> double ox;<a name="line.29534"></a>
<span class="sourceLineNo">29535</span> double oy;<a name="line.29535"></a>
<span class="sourceLineNo">29536</span> tz = new Complex(ix, iy).pow(new Complex(1./3.,0));<a name="line.29536"></a>
<span class="sourceLineNo">29537</span> ox = (tz.getReal());<a name="line.29537"></a>
<span class="sourceLineNo">29538</span> oy = (tz.getImaginary());<a name="line.29538"></a>
<span class="sourceLineNo">29539</span> oc128data[it.oIndex] = ox;<a name="line.29539"></a>
<span class="sourceLineNo">29540</span> oc128data[it.oIndex + 1] = oy;<a name="line.29540"></a>
<span class="sourceLineNo">29541</span> }<a name="line.29541"></a>
<span class="sourceLineNo">29542</span> } else {<a name="line.29542"></a>
<span class="sourceLineNo">29543</span> final long iy = 0;<a name="line.29543"></a>
<span class="sourceLineNo">29544</span> while (it.hasNext()) {<a name="line.29544"></a>
<span class="sourceLineNo">29545</span> final long ix = it.aLong;<a name="line.29545"></a>
<span class="sourceLineNo">29546</span> Complex tz;<a name="line.29546"></a>
<span class="sourceLineNo">29547</span> double ox;<a name="line.29547"></a>
<span class="sourceLineNo">29548</span> double oy;<a name="line.29548"></a>
<span class="sourceLineNo">29549</span> tz = new Complex(ix, iy).pow(new Complex(1./3.,0));<a name="line.29549"></a>
<span class="sourceLineNo">29550</span> ox = (tz.getReal());<a name="line.29550"></a>
<span class="sourceLineNo">29551</span> oy = (tz.getImaginary());<a name="line.29551"></a>
<span class="sourceLineNo">29552</span> oc128data[it.oIndex] = ox;<a name="line.29552"></a>
<span class="sourceLineNo">29553</span> oc128data[it.oIndex + 1] = oy;<a name="line.29553"></a>
<span class="sourceLineNo">29554</span> }<a name="line.29554"></a>
<span class="sourceLineNo">29555</span> }<a name="line.29555"></a>
<span class="sourceLineNo">29556</span> } else {<a name="line.29556"></a>
<span class="sourceLineNo">29557</span> while (it.hasNext()) {<a name="line.29557"></a>
<span class="sourceLineNo">29558</span> final double ix = it.aDouble;<a name="line.29558"></a>
<span class="sourceLineNo">29559</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.29559"></a>
<span class="sourceLineNo">29560</span> Complex tz;<a name="line.29560"></a>
<span class="sourceLineNo">29561</span> double ox;<a name="line.29561"></a>
<span class="sourceLineNo">29562</span> double oy;<a name="line.29562"></a>
<span class="sourceLineNo">29563</span> tz = new Complex(ix, iy).pow(new Complex(1./3.,0));<a name="line.29563"></a>
<span class="sourceLineNo">29564</span> ox = (tz.getReal());<a name="line.29564"></a>
<span class="sourceLineNo">29565</span> oy = (tz.getImaginary());<a name="line.29565"></a>
<span class="sourceLineNo">29566</span> oc128data[it.oIndex] = ox;<a name="line.29566"></a>
<span class="sourceLineNo">29567</span> oc128data[it.oIndex + 1] = oy;<a name="line.29567"></a>
<span class="sourceLineNo">29568</span> }<a name="line.29568"></a>
<span class="sourceLineNo">29569</span> }<a name="line.29569"></a>
<span class="sourceLineNo">29570</span> break;<a name="line.29570"></a>
<span class="sourceLineNo">29571</span> default:<a name="line.29571"></a>
<span class="sourceLineNo">29572</span> throw new IllegalArgumentException("cbrt supports integer, compound integer, real, compound real, complex datasets only");<a name="line.29572"></a>
<span class="sourceLineNo">29573</span> }<a name="line.29573"></a>
<span class="sourceLineNo">29574</span><a name="line.29574"></a>
<span class="sourceLineNo">29575</span> addFunctionName(result, "cbrt");<a name="line.29575"></a>
<span class="sourceLineNo">29576</span> return result;<a name="line.29576"></a>
<span class="sourceLineNo">29577</span> }<a name="line.29577"></a>
<span class="sourceLineNo">29578</span><a name="line.29578"></a>
<span class="sourceLineNo">29579</span> /**<a name="line.29579"></a>
<span class="sourceLineNo">29580</span> * square - square each element<a name="line.29580"></a>
<span class="sourceLineNo">29581</span> * @param a<a name="line.29581"></a>
<span class="sourceLineNo">29582</span> * @return dataset<a name="line.29582"></a>
<span class="sourceLineNo">29583</span> */<a name="line.29583"></a>
<span class="sourceLineNo">29584</span> public static Dataset square(final Object a) {<a name="line.29584"></a>
<span class="sourceLineNo">29585</span> return square(a, null);<a name="line.29585"></a>
<span class="sourceLineNo">29586</span> }<a name="line.29586"></a>
<span class="sourceLineNo">29587</span><a name="line.29587"></a>
<span class="sourceLineNo">29588</span> /**<a name="line.29588"></a>
<span class="sourceLineNo">29589</span> * square - square each element<a name="line.29589"></a>
<span class="sourceLineNo">29590</span> * @param a<a name="line.29590"></a>
<span class="sourceLineNo">29591</span> * @param o output can be null - in which case, a new dataset is created<a name="line.29591"></a>
<span class="sourceLineNo">29592</span> * @return dataset<a name="line.29592"></a>
<span class="sourceLineNo">29593</span> */<a name="line.29593"></a>
<span class="sourceLineNo">29594</span> public static Dataset square(final Object a, final Dataset o) {<a name="line.29594"></a>
<span class="sourceLineNo">29595</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.29595"></a>
<span class="sourceLineNo">29596</span> SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true);<a name="line.29596"></a>
<span class="sourceLineNo">29597</span> final Dataset result = it.getOutput();<a name="line.29597"></a>
<span class="sourceLineNo">29598</span> if (!result.isComplex()) {<a name="line.29598"></a>
<span class="sourceLineNo">29599</span> if (da.isComplex()) {<a name="line.29599"></a>
<span class="sourceLineNo">29600</span> da = da.getRealView();<a name="line.29600"></a>
<span class="sourceLineNo">29601</span> it = new SingleInputBroadcastIterator(da, result, true);<a name="line.29601"></a>
<span class="sourceLineNo">29602</span> }<a name="line.29602"></a>
<span class="sourceLineNo">29603</span> }<a name="line.29603"></a>
<span class="sourceLineNo">29604</span> final int is = result.getElementsPerItem();<a name="line.29604"></a>
<span class="sourceLineNo">29605</span> final int as = da.getElementsPerItem();<a name="line.29605"></a>
<span class="sourceLineNo">29606</span> final int dt = result.getDType();<a name="line.29606"></a>
<span class="sourceLineNo">29607</span><a name="line.29607"></a>
<span class="sourceLineNo">29608</span> switch(dt) {<a name="line.29608"></a>
<span class="sourceLineNo">29609</span> case Dataset.INT8:<a name="line.29609"></a>
<span class="sourceLineNo">29610</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.29610"></a>
<span class="sourceLineNo">29611</span> if (it.isOutputDouble()) {<a name="line.29611"></a>
<span class="sourceLineNo">29612</span> while (it.hasNext()) {<a name="line.29612"></a>
<span class="sourceLineNo">29613</span> final double ix = it.aDouble;<a name="line.29613"></a>
<span class="sourceLineNo">29614</span> byte ox;<a name="line.29614"></a>
<span class="sourceLineNo">29615</span> ox = (byte) toLong(ix*ix);<a name="line.29615"></a>
<span class="sourceLineNo">29616</span> oi8data[it.oIndex] = ox;<a name="line.29616"></a>
<span class="sourceLineNo">29617</span> }<a name="line.29617"></a>
<span class="sourceLineNo">29618</span> } else {<a name="line.29618"></a>
<span class="sourceLineNo">29619</span> while (it.hasNext()) {<a name="line.29619"></a>
<span class="sourceLineNo">29620</span> final long ix = it.aLong;<a name="line.29620"></a>
<span class="sourceLineNo">29621</span> byte ox;<a name="line.29621"></a>
<span class="sourceLineNo">29622</span> ox = (byte) toLong(ix*ix);<a name="line.29622"></a>
<span class="sourceLineNo">29623</span> oi8data[it.oIndex] = ox;<a name="line.29623"></a>
<span class="sourceLineNo">29624</span> }<a name="line.29624"></a>
<span class="sourceLineNo">29625</span> }<a name="line.29625"></a>
<span class="sourceLineNo">29626</span> break;<a name="line.29626"></a>
<span class="sourceLineNo">29627</span> case Dataset.INT16:<a name="line.29627"></a>
<span class="sourceLineNo">29628</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.29628"></a>
<span class="sourceLineNo">29629</span> if (it.isOutputDouble()) {<a name="line.29629"></a>
<span class="sourceLineNo">29630</span> while (it.hasNext()) {<a name="line.29630"></a>
<span class="sourceLineNo">29631</span> final double ix = it.aDouble;<a name="line.29631"></a>
<span class="sourceLineNo">29632</span> short ox;<a name="line.29632"></a>
<span class="sourceLineNo">29633</span> ox = (short) toLong(ix*ix);<a name="line.29633"></a>
<span class="sourceLineNo">29634</span> oi16data[it.oIndex] = ox;<a name="line.29634"></a>
<span class="sourceLineNo">29635</span> }<a name="line.29635"></a>
<span class="sourceLineNo">29636</span> } else {<a name="line.29636"></a>
<span class="sourceLineNo">29637</span> while (it.hasNext()) {<a name="line.29637"></a>
<span class="sourceLineNo">29638</span> final long ix = it.aLong;<a name="line.29638"></a>
<span class="sourceLineNo">29639</span> short ox;<a name="line.29639"></a>
<span class="sourceLineNo">29640</span> ox = (short) toLong(ix*ix);<a name="line.29640"></a>
<span class="sourceLineNo">29641</span> oi16data[it.oIndex] = ox;<a name="line.29641"></a>
<span class="sourceLineNo">29642</span> }<a name="line.29642"></a>
<span class="sourceLineNo">29643</span> }<a name="line.29643"></a>
<span class="sourceLineNo">29644</span> break;<a name="line.29644"></a>
<span class="sourceLineNo">29645</span> case Dataset.INT64:<a name="line.29645"></a>
<span class="sourceLineNo">29646</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.29646"></a>
<span class="sourceLineNo">29647</span> if (it.isOutputDouble()) {<a name="line.29647"></a>
<span class="sourceLineNo">29648</span> while (it.hasNext()) {<a name="line.29648"></a>
<span class="sourceLineNo">29649</span> final double ix = it.aDouble;<a name="line.29649"></a>
<span class="sourceLineNo">29650</span> long ox;<a name="line.29650"></a>
<span class="sourceLineNo">29651</span> ox = toLong(ix*ix);<a name="line.29651"></a>
<span class="sourceLineNo">29652</span> oi64data[it.oIndex] = ox;<a name="line.29652"></a>
<span class="sourceLineNo">29653</span> }<a name="line.29653"></a>
<span class="sourceLineNo">29654</span> } else {<a name="line.29654"></a>
<span class="sourceLineNo">29655</span> while (it.hasNext()) {<a name="line.29655"></a>
<span class="sourceLineNo">29656</span> final long ix = it.aLong;<a name="line.29656"></a>
<span class="sourceLineNo">29657</span> long ox;<a name="line.29657"></a>
<span class="sourceLineNo">29658</span> ox = toLong(ix*ix);<a name="line.29658"></a>
<span class="sourceLineNo">29659</span> oi64data[it.oIndex] = ox;<a name="line.29659"></a>
<span class="sourceLineNo">29660</span> }<a name="line.29660"></a>
<span class="sourceLineNo">29661</span> }<a name="line.29661"></a>
<span class="sourceLineNo">29662</span> break;<a name="line.29662"></a>
<span class="sourceLineNo">29663</span> case Dataset.INT32:<a name="line.29663"></a>
<span class="sourceLineNo">29664</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.29664"></a>
<span class="sourceLineNo">29665</span> if (it.isOutputDouble()) {<a name="line.29665"></a>
<span class="sourceLineNo">29666</span> while (it.hasNext()) {<a name="line.29666"></a>
<span class="sourceLineNo">29667</span> final double ix = it.aDouble;<a name="line.29667"></a>
<span class="sourceLineNo">29668</span> int ox;<a name="line.29668"></a>
<span class="sourceLineNo">29669</span> ox = (int) toLong(ix*ix);<a name="line.29669"></a>
<span class="sourceLineNo">29670</span> oi32data[it.oIndex] = ox;<a name="line.29670"></a>
<span class="sourceLineNo">29671</span> }<a name="line.29671"></a>
<span class="sourceLineNo">29672</span> } else {<a name="line.29672"></a>
<span class="sourceLineNo">29673</span> while (it.hasNext()) {<a name="line.29673"></a>
<span class="sourceLineNo">29674</span> final long ix = it.aLong;<a name="line.29674"></a>
<span class="sourceLineNo">29675</span> int ox;<a name="line.29675"></a>
<span class="sourceLineNo">29676</span> ox = (int) toLong(ix*ix);<a name="line.29676"></a>
<span class="sourceLineNo">29677</span> oi32data[it.oIndex] = ox;<a name="line.29677"></a>
<span class="sourceLineNo">29678</span> }<a name="line.29678"></a>
<span class="sourceLineNo">29679</span> }<a name="line.29679"></a>
<span class="sourceLineNo">29680</span> break;<a name="line.29680"></a>
<span class="sourceLineNo">29681</span> case Dataset.ARRAYINT8:<a name="line.29681"></a>
<span class="sourceLineNo">29682</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.29682"></a>
<span class="sourceLineNo">29683</span> if (is == 1) {<a name="line.29683"></a>
<span class="sourceLineNo">29684</span> if (it.isOutputDouble()) {<a name="line.29684"></a>
<span class="sourceLineNo">29685</span> while (it.hasNext()) {<a name="line.29685"></a>
<span class="sourceLineNo">29686</span> final double ix = it.aDouble;<a name="line.29686"></a>
<span class="sourceLineNo">29687</span> byte ox;<a name="line.29687"></a>
<span class="sourceLineNo">29688</span> ox = (byte) toLong(ix*ix);<a name="line.29688"></a>
<span class="sourceLineNo">29689</span> oai8data[it.oIndex] = ox;<a name="line.29689"></a>
<span class="sourceLineNo">29690</span> }<a name="line.29690"></a>
<span class="sourceLineNo">29691</span> } else {<a name="line.29691"></a>
<span class="sourceLineNo">29692</span> while (it.hasNext()) {<a name="line.29692"></a>
<span class="sourceLineNo">29693</span> final long ix = it.aLong;<a name="line.29693"></a>
<span class="sourceLineNo">29694</span> byte ox;<a name="line.29694"></a>
<span class="sourceLineNo">29695</span> ox = (byte) toLong(ix*ix);<a name="line.29695"></a>
<span class="sourceLineNo">29696</span> oai8data[it.oIndex] = ox;<a name="line.29696"></a>
<span class="sourceLineNo">29697</span> }<a name="line.29697"></a>
<span class="sourceLineNo">29698</span> }<a name="line.29698"></a>
<span class="sourceLineNo">29699</span> } else if (as == 1) {<a name="line.29699"></a>
<span class="sourceLineNo">29700</span> if (it.isOutputDouble()) {<a name="line.29700"></a>
<span class="sourceLineNo">29701</span> while (it.hasNext()) {<a name="line.29701"></a>
<span class="sourceLineNo">29702</span> final double ix = it.aDouble;<a name="line.29702"></a>
<span class="sourceLineNo">29703</span> byte ox;<a name="line.29703"></a>
<span class="sourceLineNo">29704</span> ox = (byte) toLong(ix*ix);<a name="line.29704"></a>
<span class="sourceLineNo">29705</span> for (int j = 0; j &lt; is; j++) {<a name="line.29705"></a>
<span class="sourceLineNo">29706</span> oai8data[it.oIndex + j] = ox;<a name="line.29706"></a>
<span class="sourceLineNo">29707</span> }<a name="line.29707"></a>
<span class="sourceLineNo">29708</span> }<a name="line.29708"></a>
<span class="sourceLineNo">29709</span> } else {<a name="line.29709"></a>
<span class="sourceLineNo">29710</span> while (it.hasNext()) {<a name="line.29710"></a>
<span class="sourceLineNo">29711</span> final long ix = it.aLong;<a name="line.29711"></a>
<span class="sourceLineNo">29712</span> byte ox;<a name="line.29712"></a>
<span class="sourceLineNo">29713</span> ox = (byte) toLong(ix*ix);<a name="line.29713"></a>
<span class="sourceLineNo">29714</span> for (int j = 0; j &lt; is; j++) {<a name="line.29714"></a>
<span class="sourceLineNo">29715</span> oai8data[it.oIndex + j] = ox;<a name="line.29715"></a>
<span class="sourceLineNo">29716</span> }<a name="line.29716"></a>
<span class="sourceLineNo">29717</span> }<a name="line.29717"></a>
<span class="sourceLineNo">29718</span> }<a name="line.29718"></a>
<span class="sourceLineNo">29719</span> } else {<a name="line.29719"></a>
<span class="sourceLineNo">29720</span> if (it.isOutputDouble()) {<a name="line.29720"></a>
<span class="sourceLineNo">29721</span> while (it.hasNext()) {<a name="line.29721"></a>
<span class="sourceLineNo">29722</span> for (int j = 0; j &lt; is; j++) {<a name="line.29722"></a>
<span class="sourceLineNo">29723</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.29723"></a>
<span class="sourceLineNo">29724</span> byte ox;<a name="line.29724"></a>
<span class="sourceLineNo">29725</span> ox = (byte) toLong(ix*ix);<a name="line.29725"></a>
<span class="sourceLineNo">29726</span> oai8data[it.oIndex + j] = ox;<a name="line.29726"></a>
<span class="sourceLineNo">29727</span> }<a name="line.29727"></a>
<span class="sourceLineNo">29728</span> }<a name="line.29728"></a>
<span class="sourceLineNo">29729</span> } else {<a name="line.29729"></a>
<span class="sourceLineNo">29730</span> while (it.hasNext()) {<a name="line.29730"></a>
<span class="sourceLineNo">29731</span> for (int j = 0; j &lt; is; j++) {<a name="line.29731"></a>
<span class="sourceLineNo">29732</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.29732"></a>
<span class="sourceLineNo">29733</span> byte ox;<a name="line.29733"></a>
<span class="sourceLineNo">29734</span> ox = (byte) toLong(ix*ix);<a name="line.29734"></a>
<span class="sourceLineNo">29735</span> oai8data[it.oIndex + j] = ox;<a name="line.29735"></a>
<span class="sourceLineNo">29736</span> }<a name="line.29736"></a>
<span class="sourceLineNo">29737</span> }<a name="line.29737"></a>
<span class="sourceLineNo">29738</span> }<a name="line.29738"></a>
<span class="sourceLineNo">29739</span> }<a name="line.29739"></a>
<span class="sourceLineNo">29740</span> break;<a name="line.29740"></a>
<span class="sourceLineNo">29741</span> case Dataset.ARRAYINT16:<a name="line.29741"></a>
<span class="sourceLineNo">29742</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.29742"></a>
<span class="sourceLineNo">29743</span> if (is == 1) {<a name="line.29743"></a>
<span class="sourceLineNo">29744</span> if (it.isOutputDouble()) {<a name="line.29744"></a>
<span class="sourceLineNo">29745</span> while (it.hasNext()) {<a name="line.29745"></a>
<span class="sourceLineNo">29746</span> final double ix = it.aDouble;<a name="line.29746"></a>
<span class="sourceLineNo">29747</span> short ox;<a name="line.29747"></a>
<span class="sourceLineNo">29748</span> ox = (short) toLong(ix*ix);<a name="line.29748"></a>
<span class="sourceLineNo">29749</span> oai16data[it.oIndex] = ox;<a name="line.29749"></a>
<span class="sourceLineNo">29750</span> }<a name="line.29750"></a>
<span class="sourceLineNo">29751</span> } else {<a name="line.29751"></a>
<span class="sourceLineNo">29752</span> while (it.hasNext()) {<a name="line.29752"></a>
<span class="sourceLineNo">29753</span> final long ix = it.aLong;<a name="line.29753"></a>
<span class="sourceLineNo">29754</span> short ox;<a name="line.29754"></a>
<span class="sourceLineNo">29755</span> ox = (short) toLong(ix*ix);<a name="line.29755"></a>
<span class="sourceLineNo">29756</span> oai16data[it.oIndex] = ox;<a name="line.29756"></a>
<span class="sourceLineNo">29757</span> }<a name="line.29757"></a>
<span class="sourceLineNo">29758</span> }<a name="line.29758"></a>
<span class="sourceLineNo">29759</span> } else if (as == 1) {<a name="line.29759"></a>
<span class="sourceLineNo">29760</span> if (it.isOutputDouble()) {<a name="line.29760"></a>
<span class="sourceLineNo">29761</span> while (it.hasNext()) {<a name="line.29761"></a>
<span class="sourceLineNo">29762</span> final double ix = it.aDouble;<a name="line.29762"></a>
<span class="sourceLineNo">29763</span> short ox;<a name="line.29763"></a>
<span class="sourceLineNo">29764</span> ox = (short) toLong(ix*ix);<a name="line.29764"></a>
<span class="sourceLineNo">29765</span> for (int j = 0; j &lt; is; j++) {<a name="line.29765"></a>
<span class="sourceLineNo">29766</span> oai16data[it.oIndex + j] = ox;<a name="line.29766"></a>
<span class="sourceLineNo">29767</span> }<a name="line.29767"></a>
<span class="sourceLineNo">29768</span> }<a name="line.29768"></a>
<span class="sourceLineNo">29769</span> } else {<a name="line.29769"></a>
<span class="sourceLineNo">29770</span> while (it.hasNext()) {<a name="line.29770"></a>
<span class="sourceLineNo">29771</span> final long ix = it.aLong;<a name="line.29771"></a>
<span class="sourceLineNo">29772</span> short ox;<a name="line.29772"></a>
<span class="sourceLineNo">29773</span> ox = (short) toLong(ix*ix);<a name="line.29773"></a>
<span class="sourceLineNo">29774</span> for (int j = 0; j &lt; is; j++) {<a name="line.29774"></a>
<span class="sourceLineNo">29775</span> oai16data[it.oIndex + j] = ox;<a name="line.29775"></a>
<span class="sourceLineNo">29776</span> }<a name="line.29776"></a>
<span class="sourceLineNo">29777</span> }<a name="line.29777"></a>
<span class="sourceLineNo">29778</span> }<a name="line.29778"></a>
<span class="sourceLineNo">29779</span> } else {<a name="line.29779"></a>
<span class="sourceLineNo">29780</span> if (it.isOutputDouble()) {<a name="line.29780"></a>
<span class="sourceLineNo">29781</span> while (it.hasNext()) {<a name="line.29781"></a>
<span class="sourceLineNo">29782</span> for (int j = 0; j &lt; is; j++) {<a name="line.29782"></a>
<span class="sourceLineNo">29783</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.29783"></a>
<span class="sourceLineNo">29784</span> short ox;<a name="line.29784"></a>
<span class="sourceLineNo">29785</span> ox = (short) toLong(ix*ix);<a name="line.29785"></a>
<span class="sourceLineNo">29786</span> oai16data[it.oIndex + j] = ox;<a name="line.29786"></a>
<span class="sourceLineNo">29787</span> }<a name="line.29787"></a>
<span class="sourceLineNo">29788</span> }<a name="line.29788"></a>
<span class="sourceLineNo">29789</span> } else {<a name="line.29789"></a>
<span class="sourceLineNo">29790</span> while (it.hasNext()) {<a name="line.29790"></a>
<span class="sourceLineNo">29791</span> for (int j = 0; j &lt; is; j++) {<a name="line.29791"></a>
<span class="sourceLineNo">29792</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.29792"></a>
<span class="sourceLineNo">29793</span> short ox;<a name="line.29793"></a>
<span class="sourceLineNo">29794</span> ox = (short) toLong(ix*ix);<a name="line.29794"></a>
<span class="sourceLineNo">29795</span> oai16data[it.oIndex + j] = ox;<a name="line.29795"></a>
<span class="sourceLineNo">29796</span> }<a name="line.29796"></a>
<span class="sourceLineNo">29797</span> }<a name="line.29797"></a>
<span class="sourceLineNo">29798</span> }<a name="line.29798"></a>
<span class="sourceLineNo">29799</span> }<a name="line.29799"></a>
<span class="sourceLineNo">29800</span> break;<a name="line.29800"></a>
<span class="sourceLineNo">29801</span> case Dataset.ARRAYINT64:<a name="line.29801"></a>
<span class="sourceLineNo">29802</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.29802"></a>
<span class="sourceLineNo">29803</span> if (is == 1) {<a name="line.29803"></a>
<span class="sourceLineNo">29804</span> if (it.isOutputDouble()) {<a name="line.29804"></a>
<span class="sourceLineNo">29805</span> while (it.hasNext()) {<a name="line.29805"></a>
<span class="sourceLineNo">29806</span> final double ix = it.aDouble;<a name="line.29806"></a>
<span class="sourceLineNo">29807</span> long ox;<a name="line.29807"></a>
<span class="sourceLineNo">29808</span> ox = toLong(ix*ix);<a name="line.29808"></a>
<span class="sourceLineNo">29809</span> oai64data[it.oIndex] = ox;<a name="line.29809"></a>
<span class="sourceLineNo">29810</span> }<a name="line.29810"></a>
<span class="sourceLineNo">29811</span> } else {<a name="line.29811"></a>
<span class="sourceLineNo">29812</span> while (it.hasNext()) {<a name="line.29812"></a>
<span class="sourceLineNo">29813</span> final long ix = it.aLong;<a name="line.29813"></a>
<span class="sourceLineNo">29814</span> long ox;<a name="line.29814"></a>
<span class="sourceLineNo">29815</span> ox = toLong(ix*ix);<a name="line.29815"></a>
<span class="sourceLineNo">29816</span> oai64data[it.oIndex] = ox;<a name="line.29816"></a>
<span class="sourceLineNo">29817</span> }<a name="line.29817"></a>
<span class="sourceLineNo">29818</span> }<a name="line.29818"></a>
<span class="sourceLineNo">29819</span> } else if (as == 1) {<a name="line.29819"></a>
<span class="sourceLineNo">29820</span> if (it.isOutputDouble()) {<a name="line.29820"></a>
<span class="sourceLineNo">29821</span> while (it.hasNext()) {<a name="line.29821"></a>
<span class="sourceLineNo">29822</span> final double ix = it.aDouble;<a name="line.29822"></a>
<span class="sourceLineNo">29823</span> long ox;<a name="line.29823"></a>
<span class="sourceLineNo">29824</span> ox = toLong(ix*ix);<a name="line.29824"></a>
<span class="sourceLineNo">29825</span> for (int j = 0; j &lt; is; j++) {<a name="line.29825"></a>
<span class="sourceLineNo">29826</span> oai64data[it.oIndex + j] = ox;<a name="line.29826"></a>
<span class="sourceLineNo">29827</span> }<a name="line.29827"></a>
<span class="sourceLineNo">29828</span> }<a name="line.29828"></a>
<span class="sourceLineNo">29829</span> } else {<a name="line.29829"></a>
<span class="sourceLineNo">29830</span> while (it.hasNext()) {<a name="line.29830"></a>
<span class="sourceLineNo">29831</span> final long ix = it.aLong;<a name="line.29831"></a>
<span class="sourceLineNo">29832</span> long ox;<a name="line.29832"></a>
<span class="sourceLineNo">29833</span> ox = toLong(ix*ix);<a name="line.29833"></a>
<span class="sourceLineNo">29834</span> for (int j = 0; j &lt; is; j++) {<a name="line.29834"></a>
<span class="sourceLineNo">29835</span> oai64data[it.oIndex + j] = ox;<a name="line.29835"></a>
<span class="sourceLineNo">29836</span> }<a name="line.29836"></a>
<span class="sourceLineNo">29837</span> }<a name="line.29837"></a>
<span class="sourceLineNo">29838</span> }<a name="line.29838"></a>
<span class="sourceLineNo">29839</span> } else {<a name="line.29839"></a>
<span class="sourceLineNo">29840</span> if (it.isOutputDouble()) {<a name="line.29840"></a>
<span class="sourceLineNo">29841</span> while (it.hasNext()) {<a name="line.29841"></a>
<span class="sourceLineNo">29842</span> for (int j = 0; j &lt; is; j++) {<a name="line.29842"></a>
<span class="sourceLineNo">29843</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.29843"></a>
<span class="sourceLineNo">29844</span> long ox;<a name="line.29844"></a>
<span class="sourceLineNo">29845</span> ox = toLong(ix*ix);<a name="line.29845"></a>
<span class="sourceLineNo">29846</span> oai64data[it.oIndex + j] = ox;<a name="line.29846"></a>
<span class="sourceLineNo">29847</span> }<a name="line.29847"></a>
<span class="sourceLineNo">29848</span> }<a name="line.29848"></a>
<span class="sourceLineNo">29849</span> } else {<a name="line.29849"></a>
<span class="sourceLineNo">29850</span> while (it.hasNext()) {<a name="line.29850"></a>
<span class="sourceLineNo">29851</span> for (int j = 0; j &lt; is; j++) {<a name="line.29851"></a>
<span class="sourceLineNo">29852</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.29852"></a>
<span class="sourceLineNo">29853</span> long ox;<a name="line.29853"></a>
<span class="sourceLineNo">29854</span> ox = toLong(ix*ix);<a name="line.29854"></a>
<span class="sourceLineNo">29855</span> oai64data[it.oIndex + j] = ox;<a name="line.29855"></a>
<span class="sourceLineNo">29856</span> }<a name="line.29856"></a>
<span class="sourceLineNo">29857</span> }<a name="line.29857"></a>
<span class="sourceLineNo">29858</span> }<a name="line.29858"></a>
<span class="sourceLineNo">29859</span> }<a name="line.29859"></a>
<span class="sourceLineNo">29860</span> break;<a name="line.29860"></a>
<span class="sourceLineNo">29861</span> case Dataset.ARRAYINT32:<a name="line.29861"></a>
<span class="sourceLineNo">29862</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.29862"></a>
<span class="sourceLineNo">29863</span> if (is == 1) {<a name="line.29863"></a>
<span class="sourceLineNo">29864</span> if (it.isOutputDouble()) {<a name="line.29864"></a>
<span class="sourceLineNo">29865</span> while (it.hasNext()) {<a name="line.29865"></a>
<span class="sourceLineNo">29866</span> final double ix = it.aDouble;<a name="line.29866"></a>
<span class="sourceLineNo">29867</span> int ox;<a name="line.29867"></a>
<span class="sourceLineNo">29868</span> ox = (int) toLong(ix*ix);<a name="line.29868"></a>
<span class="sourceLineNo">29869</span> oai32data[it.oIndex] = ox;<a name="line.29869"></a>
<span class="sourceLineNo">29870</span> }<a name="line.29870"></a>
<span class="sourceLineNo">29871</span> } else {<a name="line.29871"></a>
<span class="sourceLineNo">29872</span> while (it.hasNext()) {<a name="line.29872"></a>
<span class="sourceLineNo">29873</span> final long ix = it.aLong;<a name="line.29873"></a>
<span class="sourceLineNo">29874</span> int ox;<a name="line.29874"></a>
<span class="sourceLineNo">29875</span> ox = (int) toLong(ix*ix);<a name="line.29875"></a>
<span class="sourceLineNo">29876</span> oai32data[it.oIndex] = ox;<a name="line.29876"></a>
<span class="sourceLineNo">29877</span> }<a name="line.29877"></a>
<span class="sourceLineNo">29878</span> }<a name="line.29878"></a>
<span class="sourceLineNo">29879</span> } else if (as == 1) {<a name="line.29879"></a>
<span class="sourceLineNo">29880</span> if (it.isOutputDouble()) {<a name="line.29880"></a>
<span class="sourceLineNo">29881</span> while (it.hasNext()) {<a name="line.29881"></a>
<span class="sourceLineNo">29882</span> final double ix = it.aDouble;<a name="line.29882"></a>
<span class="sourceLineNo">29883</span> int ox;<a name="line.29883"></a>
<span class="sourceLineNo">29884</span> ox = (int) toLong(ix*ix);<a name="line.29884"></a>
<span class="sourceLineNo">29885</span> for (int j = 0; j &lt; is; j++) {<a name="line.29885"></a>
<span class="sourceLineNo">29886</span> oai32data[it.oIndex + j] = ox;<a name="line.29886"></a>
<span class="sourceLineNo">29887</span> }<a name="line.29887"></a>
<span class="sourceLineNo">29888</span> }<a name="line.29888"></a>
<span class="sourceLineNo">29889</span> } else {<a name="line.29889"></a>
<span class="sourceLineNo">29890</span> while (it.hasNext()) {<a name="line.29890"></a>
<span class="sourceLineNo">29891</span> final long ix = it.aLong;<a name="line.29891"></a>
<span class="sourceLineNo">29892</span> int ox;<a name="line.29892"></a>
<span class="sourceLineNo">29893</span> ox = (int) toLong(ix*ix);<a name="line.29893"></a>
<span class="sourceLineNo">29894</span> for (int j = 0; j &lt; is; j++) {<a name="line.29894"></a>
<span class="sourceLineNo">29895</span> oai32data[it.oIndex + j] = ox;<a name="line.29895"></a>
<span class="sourceLineNo">29896</span> }<a name="line.29896"></a>
<span class="sourceLineNo">29897</span> }<a name="line.29897"></a>
<span class="sourceLineNo">29898</span> }<a name="line.29898"></a>
<span class="sourceLineNo">29899</span> } else {<a name="line.29899"></a>
<span class="sourceLineNo">29900</span> if (it.isOutputDouble()) {<a name="line.29900"></a>
<span class="sourceLineNo">29901</span> while (it.hasNext()) {<a name="line.29901"></a>
<span class="sourceLineNo">29902</span> for (int j = 0; j &lt; is; j++) {<a name="line.29902"></a>
<span class="sourceLineNo">29903</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.29903"></a>
<span class="sourceLineNo">29904</span> int ox;<a name="line.29904"></a>
<span class="sourceLineNo">29905</span> ox = (int) toLong(ix*ix);<a name="line.29905"></a>
<span class="sourceLineNo">29906</span> oai32data[it.oIndex + j] = ox;<a name="line.29906"></a>
<span class="sourceLineNo">29907</span> }<a name="line.29907"></a>
<span class="sourceLineNo">29908</span> }<a name="line.29908"></a>
<span class="sourceLineNo">29909</span> } else {<a name="line.29909"></a>
<span class="sourceLineNo">29910</span> while (it.hasNext()) {<a name="line.29910"></a>
<span class="sourceLineNo">29911</span> for (int j = 0; j &lt; is; j++) {<a name="line.29911"></a>
<span class="sourceLineNo">29912</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.29912"></a>
<span class="sourceLineNo">29913</span> int ox;<a name="line.29913"></a>
<span class="sourceLineNo">29914</span> ox = (int) toLong(ix*ix);<a name="line.29914"></a>
<span class="sourceLineNo">29915</span> oai32data[it.oIndex + j] = ox;<a name="line.29915"></a>
<span class="sourceLineNo">29916</span> }<a name="line.29916"></a>
<span class="sourceLineNo">29917</span> }<a name="line.29917"></a>
<span class="sourceLineNo">29918</span> }<a name="line.29918"></a>
<span class="sourceLineNo">29919</span> }<a name="line.29919"></a>
<span class="sourceLineNo">29920</span> break;<a name="line.29920"></a>
<span class="sourceLineNo">29921</span> case Dataset.FLOAT32:<a name="line.29921"></a>
<span class="sourceLineNo">29922</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.29922"></a>
<span class="sourceLineNo">29923</span> if (it.isOutputDouble()) {<a name="line.29923"></a>
<span class="sourceLineNo">29924</span> while (it.hasNext()) {<a name="line.29924"></a>
<span class="sourceLineNo">29925</span> final double ix = it.aDouble;<a name="line.29925"></a>
<span class="sourceLineNo">29926</span> float ox;<a name="line.29926"></a>
<span class="sourceLineNo">29927</span> ox = (float) (ix*ix);<a name="line.29927"></a>
<span class="sourceLineNo">29928</span> of32data[it.oIndex] = ox;<a name="line.29928"></a>
<span class="sourceLineNo">29929</span> }<a name="line.29929"></a>
<span class="sourceLineNo">29930</span> } else {<a name="line.29930"></a>
<span class="sourceLineNo">29931</span> while (it.hasNext()) {<a name="line.29931"></a>
<span class="sourceLineNo">29932</span> final long ix = it.aLong;<a name="line.29932"></a>
<span class="sourceLineNo">29933</span> float ox;<a name="line.29933"></a>
<span class="sourceLineNo">29934</span> ox = (ix*ix);<a name="line.29934"></a>
<span class="sourceLineNo">29935</span> of32data[it.oIndex] = ox;<a name="line.29935"></a>
<span class="sourceLineNo">29936</span> }<a name="line.29936"></a>
<span class="sourceLineNo">29937</span> }<a name="line.29937"></a>
<span class="sourceLineNo">29938</span> break;<a name="line.29938"></a>
<span class="sourceLineNo">29939</span> case Dataset.FLOAT64:<a name="line.29939"></a>
<span class="sourceLineNo">29940</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.29940"></a>
<span class="sourceLineNo">29941</span> if (it.isOutputDouble()) {<a name="line.29941"></a>
<span class="sourceLineNo">29942</span> while (it.hasNext()) {<a name="line.29942"></a>
<span class="sourceLineNo">29943</span> final double ix = it.aDouble;<a name="line.29943"></a>
<span class="sourceLineNo">29944</span> double ox;<a name="line.29944"></a>
<span class="sourceLineNo">29945</span> ox = (ix*ix);<a name="line.29945"></a>
<span class="sourceLineNo">29946</span> of64data[it.oIndex] = ox;<a name="line.29946"></a>
<span class="sourceLineNo">29947</span> }<a name="line.29947"></a>
<span class="sourceLineNo">29948</span> } else {<a name="line.29948"></a>
<span class="sourceLineNo">29949</span> while (it.hasNext()) {<a name="line.29949"></a>
<span class="sourceLineNo">29950</span> final long ix = it.aLong;<a name="line.29950"></a>
<span class="sourceLineNo">29951</span> double ox;<a name="line.29951"></a>
<span class="sourceLineNo">29952</span> ox = (ix*ix);<a name="line.29952"></a>
<span class="sourceLineNo">29953</span> of64data[it.oIndex] = ox;<a name="line.29953"></a>
<span class="sourceLineNo">29954</span> }<a name="line.29954"></a>
<span class="sourceLineNo">29955</span> }<a name="line.29955"></a>
<span class="sourceLineNo">29956</span> break;<a name="line.29956"></a>
<span class="sourceLineNo">29957</span> case Dataset.ARRAYFLOAT32:<a name="line.29957"></a>
<span class="sourceLineNo">29958</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.29958"></a>
<span class="sourceLineNo">29959</span> if (is == 1) {<a name="line.29959"></a>
<span class="sourceLineNo">29960</span> if (it.isOutputDouble()) {<a name="line.29960"></a>
<span class="sourceLineNo">29961</span> while (it.hasNext()) {<a name="line.29961"></a>
<span class="sourceLineNo">29962</span> final double ix = it.aDouble;<a name="line.29962"></a>
<span class="sourceLineNo">29963</span> float ox;<a name="line.29963"></a>
<span class="sourceLineNo">29964</span> ox = (float) (ix*ix);<a name="line.29964"></a>
<span class="sourceLineNo">29965</span> oaf32data[it.oIndex] = ox;<a name="line.29965"></a>
<span class="sourceLineNo">29966</span> }<a name="line.29966"></a>
<span class="sourceLineNo">29967</span> } else {<a name="line.29967"></a>
<span class="sourceLineNo">29968</span> while (it.hasNext()) {<a name="line.29968"></a>
<span class="sourceLineNo">29969</span> final long ix = it.aLong;<a name="line.29969"></a>
<span class="sourceLineNo">29970</span> float ox;<a name="line.29970"></a>
<span class="sourceLineNo">29971</span> ox = (ix*ix);<a name="line.29971"></a>
<span class="sourceLineNo">29972</span> oaf32data[it.oIndex] = ox;<a name="line.29972"></a>
<span class="sourceLineNo">29973</span> }<a name="line.29973"></a>
<span class="sourceLineNo">29974</span> }<a name="line.29974"></a>
<span class="sourceLineNo">29975</span> } else if (as == 1) {<a name="line.29975"></a>
<span class="sourceLineNo">29976</span> if (it.isOutputDouble()) {<a name="line.29976"></a>
<span class="sourceLineNo">29977</span> while (it.hasNext()) {<a name="line.29977"></a>
<span class="sourceLineNo">29978</span> final double ix = it.aDouble;<a name="line.29978"></a>
<span class="sourceLineNo">29979</span> float ox;<a name="line.29979"></a>
<span class="sourceLineNo">29980</span> ox = (float) (ix*ix);<a name="line.29980"></a>
<span class="sourceLineNo">29981</span> for (int j = 0; j &lt; is; j++) {<a name="line.29981"></a>
<span class="sourceLineNo">29982</span> oaf32data[it.oIndex + j] = ox;<a name="line.29982"></a>
<span class="sourceLineNo">29983</span> }<a name="line.29983"></a>
<span class="sourceLineNo">29984</span> }<a name="line.29984"></a>
<span class="sourceLineNo">29985</span> } else {<a name="line.29985"></a>
<span class="sourceLineNo">29986</span> while (it.hasNext()) {<a name="line.29986"></a>
<span class="sourceLineNo">29987</span> final long ix = it.aLong;<a name="line.29987"></a>
<span class="sourceLineNo">29988</span> float ox;<a name="line.29988"></a>
<span class="sourceLineNo">29989</span> ox = (ix*ix);<a name="line.29989"></a>
<span class="sourceLineNo">29990</span> for (int j = 0; j &lt; is; j++) {<a name="line.29990"></a>
<span class="sourceLineNo">29991</span> oaf32data[it.oIndex + j] = ox;<a name="line.29991"></a>
<span class="sourceLineNo">29992</span> }<a name="line.29992"></a>
<span class="sourceLineNo">29993</span> }<a name="line.29993"></a>
<span class="sourceLineNo">29994</span> }<a name="line.29994"></a>
<span class="sourceLineNo">29995</span> } else {<a name="line.29995"></a>
<span class="sourceLineNo">29996</span> if (it.isOutputDouble()) {<a name="line.29996"></a>
<span class="sourceLineNo">29997</span> while (it.hasNext()) {<a name="line.29997"></a>
<span class="sourceLineNo">29998</span> for (int j = 0; j &lt; is; j++) {<a name="line.29998"></a>
<span class="sourceLineNo">29999</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.29999"></a>
<span class="sourceLineNo">30000</span> float ox;<a name="line.30000"></a>
<span class="sourceLineNo">30001</span> ox = (float) (ix*ix);<a name="line.30001"></a>
<span class="sourceLineNo">30002</span> oaf32data[it.oIndex + j] = ox;<a name="line.30002"></a>
<span class="sourceLineNo">30003</span> }<a name="line.30003"></a>
<span class="sourceLineNo">30004</span> }<a name="line.30004"></a>
<span class="sourceLineNo">30005</span> } else {<a name="line.30005"></a>
<span class="sourceLineNo">30006</span> while (it.hasNext()) {<a name="line.30006"></a>
<span class="sourceLineNo">30007</span> for (int j = 0; j &lt; is; j++) {<a name="line.30007"></a>
<span class="sourceLineNo">30008</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.30008"></a>
<span class="sourceLineNo">30009</span> float ox;<a name="line.30009"></a>
<span class="sourceLineNo">30010</span> ox = (ix*ix);<a name="line.30010"></a>
<span class="sourceLineNo">30011</span> oaf32data[it.oIndex + j] = ox;<a name="line.30011"></a>
<span class="sourceLineNo">30012</span> }<a name="line.30012"></a>
<span class="sourceLineNo">30013</span> }<a name="line.30013"></a>
<span class="sourceLineNo">30014</span> }<a name="line.30014"></a>
<span class="sourceLineNo">30015</span> }<a name="line.30015"></a>
<span class="sourceLineNo">30016</span> break;<a name="line.30016"></a>
<span class="sourceLineNo">30017</span> case Dataset.ARRAYFLOAT64:<a name="line.30017"></a>
<span class="sourceLineNo">30018</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.30018"></a>
<span class="sourceLineNo">30019</span> if (is == 1) {<a name="line.30019"></a>
<span class="sourceLineNo">30020</span> if (it.isOutputDouble()) {<a name="line.30020"></a>
<span class="sourceLineNo">30021</span> while (it.hasNext()) {<a name="line.30021"></a>
<span class="sourceLineNo">30022</span> final double ix = it.aDouble;<a name="line.30022"></a>
<span class="sourceLineNo">30023</span> double ox;<a name="line.30023"></a>
<span class="sourceLineNo">30024</span> ox = (ix*ix);<a name="line.30024"></a>
<span class="sourceLineNo">30025</span> oaf64data[it.oIndex] = ox;<a name="line.30025"></a>
<span class="sourceLineNo">30026</span> }<a name="line.30026"></a>
<span class="sourceLineNo">30027</span> } else {<a name="line.30027"></a>
<span class="sourceLineNo">30028</span> while (it.hasNext()) {<a name="line.30028"></a>
<span class="sourceLineNo">30029</span> final long ix = it.aLong;<a name="line.30029"></a>
<span class="sourceLineNo">30030</span> double ox;<a name="line.30030"></a>
<span class="sourceLineNo">30031</span> ox = (ix*ix);<a name="line.30031"></a>
<span class="sourceLineNo">30032</span> oaf64data[it.oIndex] = ox;<a name="line.30032"></a>
<span class="sourceLineNo">30033</span> }<a name="line.30033"></a>
<span class="sourceLineNo">30034</span> }<a name="line.30034"></a>
<span class="sourceLineNo">30035</span> } else if (as == 1) {<a name="line.30035"></a>
<span class="sourceLineNo">30036</span> if (it.isOutputDouble()) {<a name="line.30036"></a>
<span class="sourceLineNo">30037</span> while (it.hasNext()) {<a name="line.30037"></a>
<span class="sourceLineNo">30038</span> final double ix = it.aDouble;<a name="line.30038"></a>
<span class="sourceLineNo">30039</span> double ox;<a name="line.30039"></a>
<span class="sourceLineNo">30040</span> ox = (ix*ix);<a name="line.30040"></a>
<span class="sourceLineNo">30041</span> for (int j = 0; j &lt; is; j++) {<a name="line.30041"></a>
<span class="sourceLineNo">30042</span> oaf64data[it.oIndex + j] = ox;<a name="line.30042"></a>
<span class="sourceLineNo">30043</span> }<a name="line.30043"></a>
<span class="sourceLineNo">30044</span> }<a name="line.30044"></a>
<span class="sourceLineNo">30045</span> } else {<a name="line.30045"></a>
<span class="sourceLineNo">30046</span> while (it.hasNext()) {<a name="line.30046"></a>
<span class="sourceLineNo">30047</span> final long ix = it.aLong;<a name="line.30047"></a>
<span class="sourceLineNo">30048</span> double ox;<a name="line.30048"></a>
<span class="sourceLineNo">30049</span> ox = (ix*ix);<a name="line.30049"></a>
<span class="sourceLineNo">30050</span> for (int j = 0; j &lt; is; j++) {<a name="line.30050"></a>
<span class="sourceLineNo">30051</span> oaf64data[it.oIndex + j] = ox;<a name="line.30051"></a>
<span class="sourceLineNo">30052</span> }<a name="line.30052"></a>
<span class="sourceLineNo">30053</span> }<a name="line.30053"></a>
<span class="sourceLineNo">30054</span> }<a name="line.30054"></a>
<span class="sourceLineNo">30055</span> } else {<a name="line.30055"></a>
<span class="sourceLineNo">30056</span> if (it.isOutputDouble()) {<a name="line.30056"></a>
<span class="sourceLineNo">30057</span> while (it.hasNext()) {<a name="line.30057"></a>
<span class="sourceLineNo">30058</span> for (int j = 0; j &lt; is; j++) {<a name="line.30058"></a>
<span class="sourceLineNo">30059</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.30059"></a>
<span class="sourceLineNo">30060</span> double ox;<a name="line.30060"></a>
<span class="sourceLineNo">30061</span> ox = (ix*ix);<a name="line.30061"></a>
<span class="sourceLineNo">30062</span> oaf64data[it.oIndex + j] = ox;<a name="line.30062"></a>
<span class="sourceLineNo">30063</span> }<a name="line.30063"></a>
<span class="sourceLineNo">30064</span> }<a name="line.30064"></a>
<span class="sourceLineNo">30065</span> } else {<a name="line.30065"></a>
<span class="sourceLineNo">30066</span> while (it.hasNext()) {<a name="line.30066"></a>
<span class="sourceLineNo">30067</span> for (int j = 0; j &lt; is; j++) {<a name="line.30067"></a>
<span class="sourceLineNo">30068</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.30068"></a>
<span class="sourceLineNo">30069</span> double ox;<a name="line.30069"></a>
<span class="sourceLineNo">30070</span> ox = (ix*ix);<a name="line.30070"></a>
<span class="sourceLineNo">30071</span> oaf64data[it.oIndex + j] = ox;<a name="line.30071"></a>
<span class="sourceLineNo">30072</span> }<a name="line.30072"></a>
<span class="sourceLineNo">30073</span> }<a name="line.30073"></a>
<span class="sourceLineNo">30074</span> }<a name="line.30074"></a>
<span class="sourceLineNo">30075</span> }<a name="line.30075"></a>
<span class="sourceLineNo">30076</span> break;<a name="line.30076"></a>
<span class="sourceLineNo">30077</span> case Dataset.COMPLEX64:<a name="line.30077"></a>
<span class="sourceLineNo">30078</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.30078"></a>
<span class="sourceLineNo">30079</span> if (!da.isComplex()) {<a name="line.30079"></a>
<span class="sourceLineNo">30080</span> if (it.isOutputDouble()) {<a name="line.30080"></a>
<span class="sourceLineNo">30081</span> final double iy = 0;<a name="line.30081"></a>
<span class="sourceLineNo">30082</span> while (it.hasNext()) {<a name="line.30082"></a>
<span class="sourceLineNo">30083</span> final double ix = it.aDouble;<a name="line.30083"></a>
<span class="sourceLineNo">30084</span> float ox;<a name="line.30084"></a>
<span class="sourceLineNo">30085</span> float oy;<a name="line.30085"></a>
<span class="sourceLineNo">30086</span> ox = (float) (ix*ix - iy*iy);<a name="line.30086"></a>
<span class="sourceLineNo">30087</span> oy = (float) (2.*ix*iy);<a name="line.30087"></a>
<span class="sourceLineNo">30088</span> oc64data[it.oIndex] = ox;<a name="line.30088"></a>
<span class="sourceLineNo">30089</span> oc64data[it.oIndex + 1] = oy;<a name="line.30089"></a>
<span class="sourceLineNo">30090</span> }<a name="line.30090"></a>
<span class="sourceLineNo">30091</span> } else {<a name="line.30091"></a>
<span class="sourceLineNo">30092</span> final long iy = 0;<a name="line.30092"></a>
<span class="sourceLineNo">30093</span> while (it.hasNext()) {<a name="line.30093"></a>
<span class="sourceLineNo">30094</span> final long ix = it.aLong;<a name="line.30094"></a>
<span class="sourceLineNo">30095</span> float ox;<a name="line.30095"></a>
<span class="sourceLineNo">30096</span> float oy;<a name="line.30096"></a>
<span class="sourceLineNo">30097</span> ox = (float) toLong(ix*ix - iy*iy);<a name="line.30097"></a>
<span class="sourceLineNo">30098</span> oy = (float) toLong(2.*ix*iy);<a name="line.30098"></a>
<span class="sourceLineNo">30099</span> oc64data[it.oIndex] = ox;<a name="line.30099"></a>
<span class="sourceLineNo">30100</span> oc64data[it.oIndex + 1] = oy;<a name="line.30100"></a>
<span class="sourceLineNo">30101</span> }<a name="line.30101"></a>
<span class="sourceLineNo">30102</span> }<a name="line.30102"></a>
<span class="sourceLineNo">30103</span> } else {<a name="line.30103"></a>
<span class="sourceLineNo">30104</span> while (it.hasNext()) {<a name="line.30104"></a>
<span class="sourceLineNo">30105</span> final double ix = it.aDouble;<a name="line.30105"></a>
<span class="sourceLineNo">30106</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.30106"></a>
<span class="sourceLineNo">30107</span> float ox;<a name="line.30107"></a>
<span class="sourceLineNo">30108</span> float oy;<a name="line.30108"></a>
<span class="sourceLineNo">30109</span> ox = (float) (ix*ix - iy*iy);<a name="line.30109"></a>
<span class="sourceLineNo">30110</span> oy = (float) (2.*ix*iy);<a name="line.30110"></a>
<span class="sourceLineNo">30111</span> oc64data[it.oIndex] = ox;<a name="line.30111"></a>
<span class="sourceLineNo">30112</span> oc64data[it.oIndex + 1] = oy;<a name="line.30112"></a>
<span class="sourceLineNo">30113</span> }<a name="line.30113"></a>
<span class="sourceLineNo">30114</span> }<a name="line.30114"></a>
<span class="sourceLineNo">30115</span> break;<a name="line.30115"></a>
<span class="sourceLineNo">30116</span> case Dataset.COMPLEX128:<a name="line.30116"></a>
<span class="sourceLineNo">30117</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.30117"></a>
<span class="sourceLineNo">30118</span> if (!da.isComplex()) {<a name="line.30118"></a>
<span class="sourceLineNo">30119</span> if (it.isOutputDouble()) {<a name="line.30119"></a>
<span class="sourceLineNo">30120</span> final double iy = 0;<a name="line.30120"></a>
<span class="sourceLineNo">30121</span> while (it.hasNext()) {<a name="line.30121"></a>
<span class="sourceLineNo">30122</span> final double ix = it.aDouble;<a name="line.30122"></a>
<span class="sourceLineNo">30123</span> double ox;<a name="line.30123"></a>
<span class="sourceLineNo">30124</span> double oy;<a name="line.30124"></a>
<span class="sourceLineNo">30125</span> ox = (ix*ix - iy*iy);<a name="line.30125"></a>
<span class="sourceLineNo">30126</span> oy = (2.*ix*iy);<a name="line.30126"></a>
<span class="sourceLineNo">30127</span> oc128data[it.oIndex] = ox;<a name="line.30127"></a>
<span class="sourceLineNo">30128</span> oc128data[it.oIndex + 1] = oy;<a name="line.30128"></a>
<span class="sourceLineNo">30129</span> }<a name="line.30129"></a>
<span class="sourceLineNo">30130</span> } else {<a name="line.30130"></a>
<span class="sourceLineNo">30131</span> final long iy = 0;<a name="line.30131"></a>
<span class="sourceLineNo">30132</span> while (it.hasNext()) {<a name="line.30132"></a>
<span class="sourceLineNo">30133</span> final long ix = it.aLong;<a name="line.30133"></a>
<span class="sourceLineNo">30134</span> double ox;<a name="line.30134"></a>
<span class="sourceLineNo">30135</span> double oy;<a name="line.30135"></a>
<span class="sourceLineNo">30136</span> ox = (ix*ix - iy*iy);<a name="line.30136"></a>
<span class="sourceLineNo">30137</span> oy = (2.*ix*iy);<a name="line.30137"></a>
<span class="sourceLineNo">30138</span> oc128data[it.oIndex] = ox;<a name="line.30138"></a>
<span class="sourceLineNo">30139</span> oc128data[it.oIndex + 1] = oy;<a name="line.30139"></a>
<span class="sourceLineNo">30140</span> }<a name="line.30140"></a>
<span class="sourceLineNo">30141</span> }<a name="line.30141"></a>
<span class="sourceLineNo">30142</span> } else {<a name="line.30142"></a>
<span class="sourceLineNo">30143</span> while (it.hasNext()) {<a name="line.30143"></a>
<span class="sourceLineNo">30144</span> final double ix = it.aDouble;<a name="line.30144"></a>
<span class="sourceLineNo">30145</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.30145"></a>
<span class="sourceLineNo">30146</span> double ox;<a name="line.30146"></a>
<span class="sourceLineNo">30147</span> double oy;<a name="line.30147"></a>
<span class="sourceLineNo">30148</span> ox = (ix*ix - iy*iy);<a name="line.30148"></a>
<span class="sourceLineNo">30149</span> oy = (2.*ix*iy);<a name="line.30149"></a>
<span class="sourceLineNo">30150</span> oc128data[it.oIndex] = ox;<a name="line.30150"></a>
<span class="sourceLineNo">30151</span> oc128data[it.oIndex + 1] = oy;<a name="line.30151"></a>
<span class="sourceLineNo">30152</span> }<a name="line.30152"></a>
<span class="sourceLineNo">30153</span> }<a name="line.30153"></a>
<span class="sourceLineNo">30154</span> break;<a name="line.30154"></a>
<span class="sourceLineNo">30155</span> default:<a name="line.30155"></a>
<span class="sourceLineNo">30156</span> throw new IllegalArgumentException("square supports integer, compound integer, real, compound real, complex datasets only");<a name="line.30156"></a>
<span class="sourceLineNo">30157</span> }<a name="line.30157"></a>
<span class="sourceLineNo">30158</span><a name="line.30158"></a>
<span class="sourceLineNo">30159</span> addFunctionName(result, "square");<a name="line.30159"></a>
<span class="sourceLineNo">30160</span> return result;<a name="line.30160"></a>
<span class="sourceLineNo">30161</span> }<a name="line.30161"></a>
<span class="sourceLineNo">30162</span><a name="line.30162"></a>
<span class="sourceLineNo">30163</span> /**<a name="line.30163"></a>
<span class="sourceLineNo">30164</span> * floor - evaluate the floor function on each element of the dataset<a name="line.30164"></a>
<span class="sourceLineNo">30165</span> * @param a<a name="line.30165"></a>
<span class="sourceLineNo">30166</span> * @return dataset<a name="line.30166"></a>
<span class="sourceLineNo">30167</span> */<a name="line.30167"></a>
<span class="sourceLineNo">30168</span> public static Dataset floor(final Object a) {<a name="line.30168"></a>
<span class="sourceLineNo">30169</span> return floor(a, null);<a name="line.30169"></a>
<span class="sourceLineNo">30170</span> }<a name="line.30170"></a>
<span class="sourceLineNo">30171</span><a name="line.30171"></a>
<span class="sourceLineNo">30172</span> /**<a name="line.30172"></a>
<span class="sourceLineNo">30173</span> * floor - evaluate the floor function on each element of the dataset<a name="line.30173"></a>
<span class="sourceLineNo">30174</span> * @param a<a name="line.30174"></a>
<span class="sourceLineNo">30175</span> * @param o output can be null - in which case, a new dataset is created<a name="line.30175"></a>
<span class="sourceLineNo">30176</span> * @return dataset<a name="line.30176"></a>
<span class="sourceLineNo">30177</span> */<a name="line.30177"></a>
<span class="sourceLineNo">30178</span> public static Dataset floor(final Object a, final Dataset o) {<a name="line.30178"></a>
<span class="sourceLineNo">30179</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.30179"></a>
<span class="sourceLineNo">30180</span> SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true);<a name="line.30180"></a>
<span class="sourceLineNo">30181</span> final Dataset result = it.getOutput();<a name="line.30181"></a>
<span class="sourceLineNo">30182</span> if (!result.isComplex()) {<a name="line.30182"></a>
<span class="sourceLineNo">30183</span> if (da.isComplex()) {<a name="line.30183"></a>
<span class="sourceLineNo">30184</span> da = da.getRealView();<a name="line.30184"></a>
<span class="sourceLineNo">30185</span> it = new SingleInputBroadcastIterator(da, result, true);<a name="line.30185"></a>
<span class="sourceLineNo">30186</span> }<a name="line.30186"></a>
<span class="sourceLineNo">30187</span> }<a name="line.30187"></a>
<span class="sourceLineNo">30188</span> final int is = result.getElementsPerItem();<a name="line.30188"></a>
<span class="sourceLineNo">30189</span> final int as = da.getElementsPerItem();<a name="line.30189"></a>
<span class="sourceLineNo">30190</span> final int dt = result.getDType();<a name="line.30190"></a>
<span class="sourceLineNo">30191</span><a name="line.30191"></a>
<span class="sourceLineNo">30192</span> switch(dt) {<a name="line.30192"></a>
<span class="sourceLineNo">30193</span> case Dataset.INT8:<a name="line.30193"></a>
<span class="sourceLineNo">30194</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.30194"></a>
<span class="sourceLineNo">30195</span> if (it.isOutputDouble()) {<a name="line.30195"></a>
<span class="sourceLineNo">30196</span> while (it.hasNext()) {<a name="line.30196"></a>
<span class="sourceLineNo">30197</span> final double ix = it.aDouble;<a name="line.30197"></a>
<span class="sourceLineNo">30198</span> byte ox;<a name="line.30198"></a>
<span class="sourceLineNo">30199</span> ox = (byte) toLong(ix);<a name="line.30199"></a>
<span class="sourceLineNo">30200</span> oi8data[it.oIndex] = ox;<a name="line.30200"></a>
<span class="sourceLineNo">30201</span> }<a name="line.30201"></a>
<span class="sourceLineNo">30202</span> } else {<a name="line.30202"></a>
<span class="sourceLineNo">30203</span> while (it.hasNext()) {<a name="line.30203"></a>
<span class="sourceLineNo">30204</span> final long ix = it.aLong;<a name="line.30204"></a>
<span class="sourceLineNo">30205</span> byte ox;<a name="line.30205"></a>
<span class="sourceLineNo">30206</span> ox = (byte) toLong(ix);<a name="line.30206"></a>
<span class="sourceLineNo">30207</span> oi8data[it.oIndex] = ox;<a name="line.30207"></a>
<span class="sourceLineNo">30208</span> }<a name="line.30208"></a>
<span class="sourceLineNo">30209</span> }<a name="line.30209"></a>
<span class="sourceLineNo">30210</span> break;<a name="line.30210"></a>
<span class="sourceLineNo">30211</span> case Dataset.INT16:<a name="line.30211"></a>
<span class="sourceLineNo">30212</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.30212"></a>
<span class="sourceLineNo">30213</span> if (it.isOutputDouble()) {<a name="line.30213"></a>
<span class="sourceLineNo">30214</span> while (it.hasNext()) {<a name="line.30214"></a>
<span class="sourceLineNo">30215</span> final double ix = it.aDouble;<a name="line.30215"></a>
<span class="sourceLineNo">30216</span> short ox;<a name="line.30216"></a>
<span class="sourceLineNo">30217</span> ox = (short) toLong(ix);<a name="line.30217"></a>
<span class="sourceLineNo">30218</span> oi16data[it.oIndex] = ox;<a name="line.30218"></a>
<span class="sourceLineNo">30219</span> }<a name="line.30219"></a>
<span class="sourceLineNo">30220</span> } else {<a name="line.30220"></a>
<span class="sourceLineNo">30221</span> while (it.hasNext()) {<a name="line.30221"></a>
<span class="sourceLineNo">30222</span> final long ix = it.aLong;<a name="line.30222"></a>
<span class="sourceLineNo">30223</span> short ox;<a name="line.30223"></a>
<span class="sourceLineNo">30224</span> ox = (short) toLong(ix);<a name="line.30224"></a>
<span class="sourceLineNo">30225</span> oi16data[it.oIndex] = ox;<a name="line.30225"></a>
<span class="sourceLineNo">30226</span> }<a name="line.30226"></a>
<span class="sourceLineNo">30227</span> }<a name="line.30227"></a>
<span class="sourceLineNo">30228</span> break;<a name="line.30228"></a>
<span class="sourceLineNo">30229</span> case Dataset.INT64:<a name="line.30229"></a>
<span class="sourceLineNo">30230</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.30230"></a>
<span class="sourceLineNo">30231</span> if (it.isOutputDouble()) {<a name="line.30231"></a>
<span class="sourceLineNo">30232</span> while (it.hasNext()) {<a name="line.30232"></a>
<span class="sourceLineNo">30233</span> final double ix = it.aDouble;<a name="line.30233"></a>
<span class="sourceLineNo">30234</span> long ox;<a name="line.30234"></a>
<span class="sourceLineNo">30235</span> ox = toLong(ix);<a name="line.30235"></a>
<span class="sourceLineNo">30236</span> oi64data[it.oIndex] = ox;<a name="line.30236"></a>
<span class="sourceLineNo">30237</span> }<a name="line.30237"></a>
<span class="sourceLineNo">30238</span> } else {<a name="line.30238"></a>
<span class="sourceLineNo">30239</span> while (it.hasNext()) {<a name="line.30239"></a>
<span class="sourceLineNo">30240</span> final long ix = it.aLong;<a name="line.30240"></a>
<span class="sourceLineNo">30241</span> long ox;<a name="line.30241"></a>
<span class="sourceLineNo">30242</span> ox = toLong(ix);<a name="line.30242"></a>
<span class="sourceLineNo">30243</span> oi64data[it.oIndex] = ox;<a name="line.30243"></a>
<span class="sourceLineNo">30244</span> }<a name="line.30244"></a>
<span class="sourceLineNo">30245</span> }<a name="line.30245"></a>
<span class="sourceLineNo">30246</span> break;<a name="line.30246"></a>
<span class="sourceLineNo">30247</span> case Dataset.INT32:<a name="line.30247"></a>
<span class="sourceLineNo">30248</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.30248"></a>
<span class="sourceLineNo">30249</span> if (it.isOutputDouble()) {<a name="line.30249"></a>
<span class="sourceLineNo">30250</span> while (it.hasNext()) {<a name="line.30250"></a>
<span class="sourceLineNo">30251</span> final double ix = it.aDouble;<a name="line.30251"></a>
<span class="sourceLineNo">30252</span> int ox;<a name="line.30252"></a>
<span class="sourceLineNo">30253</span> ox = (int) toLong(ix);<a name="line.30253"></a>
<span class="sourceLineNo">30254</span> oi32data[it.oIndex] = ox;<a name="line.30254"></a>
<span class="sourceLineNo">30255</span> }<a name="line.30255"></a>
<span class="sourceLineNo">30256</span> } else {<a name="line.30256"></a>
<span class="sourceLineNo">30257</span> while (it.hasNext()) {<a name="line.30257"></a>
<span class="sourceLineNo">30258</span> final long ix = it.aLong;<a name="line.30258"></a>
<span class="sourceLineNo">30259</span> int ox;<a name="line.30259"></a>
<span class="sourceLineNo">30260</span> ox = (int) toLong(ix);<a name="line.30260"></a>
<span class="sourceLineNo">30261</span> oi32data[it.oIndex] = ox;<a name="line.30261"></a>
<span class="sourceLineNo">30262</span> }<a name="line.30262"></a>
<span class="sourceLineNo">30263</span> }<a name="line.30263"></a>
<span class="sourceLineNo">30264</span> break;<a name="line.30264"></a>
<span class="sourceLineNo">30265</span> case Dataset.ARRAYINT8:<a name="line.30265"></a>
<span class="sourceLineNo">30266</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.30266"></a>
<span class="sourceLineNo">30267</span> if (is == 1) {<a name="line.30267"></a>
<span class="sourceLineNo">30268</span> if (it.isOutputDouble()) {<a name="line.30268"></a>
<span class="sourceLineNo">30269</span> while (it.hasNext()) {<a name="line.30269"></a>
<span class="sourceLineNo">30270</span> final double ix = it.aDouble;<a name="line.30270"></a>
<span class="sourceLineNo">30271</span> byte ox;<a name="line.30271"></a>
<span class="sourceLineNo">30272</span> ox = (byte) toLong(ix);<a name="line.30272"></a>
<span class="sourceLineNo">30273</span> oai8data[it.oIndex] = ox;<a name="line.30273"></a>
<span class="sourceLineNo">30274</span> }<a name="line.30274"></a>
<span class="sourceLineNo">30275</span> } else {<a name="line.30275"></a>
<span class="sourceLineNo">30276</span> while (it.hasNext()) {<a name="line.30276"></a>
<span class="sourceLineNo">30277</span> final long ix = it.aLong;<a name="line.30277"></a>
<span class="sourceLineNo">30278</span> byte ox;<a name="line.30278"></a>
<span class="sourceLineNo">30279</span> ox = (byte) toLong(ix);<a name="line.30279"></a>
<span class="sourceLineNo">30280</span> oai8data[it.oIndex] = ox;<a name="line.30280"></a>
<span class="sourceLineNo">30281</span> }<a name="line.30281"></a>
<span class="sourceLineNo">30282</span> }<a name="line.30282"></a>
<span class="sourceLineNo">30283</span> } else if (as == 1) {<a name="line.30283"></a>
<span class="sourceLineNo">30284</span> if (it.isOutputDouble()) {<a name="line.30284"></a>
<span class="sourceLineNo">30285</span> while (it.hasNext()) {<a name="line.30285"></a>
<span class="sourceLineNo">30286</span> final double ix = it.aDouble;<a name="line.30286"></a>
<span class="sourceLineNo">30287</span> byte ox;<a name="line.30287"></a>
<span class="sourceLineNo">30288</span> ox = (byte) toLong(ix);<a name="line.30288"></a>
<span class="sourceLineNo">30289</span> for (int j = 0; j &lt; is; j++) {<a name="line.30289"></a>
<span class="sourceLineNo">30290</span> oai8data[it.oIndex + j] = ox;<a name="line.30290"></a>
<span class="sourceLineNo">30291</span> }<a name="line.30291"></a>
<span class="sourceLineNo">30292</span> }<a name="line.30292"></a>
<span class="sourceLineNo">30293</span> } else {<a name="line.30293"></a>
<span class="sourceLineNo">30294</span> while (it.hasNext()) {<a name="line.30294"></a>
<span class="sourceLineNo">30295</span> final long ix = it.aLong;<a name="line.30295"></a>
<span class="sourceLineNo">30296</span> byte ox;<a name="line.30296"></a>
<span class="sourceLineNo">30297</span> ox = (byte) toLong(ix);<a name="line.30297"></a>
<span class="sourceLineNo">30298</span> for (int j = 0; j &lt; is; j++) {<a name="line.30298"></a>
<span class="sourceLineNo">30299</span> oai8data[it.oIndex + j] = ox;<a name="line.30299"></a>
<span class="sourceLineNo">30300</span> }<a name="line.30300"></a>
<span class="sourceLineNo">30301</span> }<a name="line.30301"></a>
<span class="sourceLineNo">30302</span> }<a name="line.30302"></a>
<span class="sourceLineNo">30303</span> } else {<a name="line.30303"></a>
<span class="sourceLineNo">30304</span> if (it.isOutputDouble()) {<a name="line.30304"></a>
<span class="sourceLineNo">30305</span> while (it.hasNext()) {<a name="line.30305"></a>
<span class="sourceLineNo">30306</span> for (int j = 0; j &lt; is; j++) {<a name="line.30306"></a>
<span class="sourceLineNo">30307</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.30307"></a>
<span class="sourceLineNo">30308</span> byte ox;<a name="line.30308"></a>
<span class="sourceLineNo">30309</span> ox = (byte) toLong(ix);<a name="line.30309"></a>
<span class="sourceLineNo">30310</span> oai8data[it.oIndex + j] = ox;<a name="line.30310"></a>
<span class="sourceLineNo">30311</span> }<a name="line.30311"></a>
<span class="sourceLineNo">30312</span> }<a name="line.30312"></a>
<span class="sourceLineNo">30313</span> } else {<a name="line.30313"></a>
<span class="sourceLineNo">30314</span> while (it.hasNext()) {<a name="line.30314"></a>
<span class="sourceLineNo">30315</span> for (int j = 0; j &lt; is; j++) {<a name="line.30315"></a>
<span class="sourceLineNo">30316</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.30316"></a>
<span class="sourceLineNo">30317</span> byte ox;<a name="line.30317"></a>
<span class="sourceLineNo">30318</span> ox = (byte) toLong(ix);<a name="line.30318"></a>
<span class="sourceLineNo">30319</span> oai8data[it.oIndex + j] = ox;<a name="line.30319"></a>
<span class="sourceLineNo">30320</span> }<a name="line.30320"></a>
<span class="sourceLineNo">30321</span> }<a name="line.30321"></a>
<span class="sourceLineNo">30322</span> }<a name="line.30322"></a>
<span class="sourceLineNo">30323</span> }<a name="line.30323"></a>
<span class="sourceLineNo">30324</span> break;<a name="line.30324"></a>
<span class="sourceLineNo">30325</span> case Dataset.ARRAYINT16:<a name="line.30325"></a>
<span class="sourceLineNo">30326</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.30326"></a>
<span class="sourceLineNo">30327</span> if (is == 1) {<a name="line.30327"></a>
<span class="sourceLineNo">30328</span> if (it.isOutputDouble()) {<a name="line.30328"></a>
<span class="sourceLineNo">30329</span> while (it.hasNext()) {<a name="line.30329"></a>
<span class="sourceLineNo">30330</span> final double ix = it.aDouble;<a name="line.30330"></a>
<span class="sourceLineNo">30331</span> short ox;<a name="line.30331"></a>
<span class="sourceLineNo">30332</span> ox = (short) toLong(ix);<a name="line.30332"></a>
<span class="sourceLineNo">30333</span> oai16data[it.oIndex] = ox;<a name="line.30333"></a>
<span class="sourceLineNo">30334</span> }<a name="line.30334"></a>
<span class="sourceLineNo">30335</span> } else {<a name="line.30335"></a>
<span class="sourceLineNo">30336</span> while (it.hasNext()) {<a name="line.30336"></a>
<span class="sourceLineNo">30337</span> final long ix = it.aLong;<a name="line.30337"></a>
<span class="sourceLineNo">30338</span> short ox;<a name="line.30338"></a>
<span class="sourceLineNo">30339</span> ox = (short) toLong(ix);<a name="line.30339"></a>
<span class="sourceLineNo">30340</span> oai16data[it.oIndex] = ox;<a name="line.30340"></a>
<span class="sourceLineNo">30341</span> }<a name="line.30341"></a>
<span class="sourceLineNo">30342</span> }<a name="line.30342"></a>
<span class="sourceLineNo">30343</span> } else if (as == 1) {<a name="line.30343"></a>
<span class="sourceLineNo">30344</span> if (it.isOutputDouble()) {<a name="line.30344"></a>
<span class="sourceLineNo">30345</span> while (it.hasNext()) {<a name="line.30345"></a>
<span class="sourceLineNo">30346</span> final double ix = it.aDouble;<a name="line.30346"></a>
<span class="sourceLineNo">30347</span> short ox;<a name="line.30347"></a>
<span class="sourceLineNo">30348</span> ox = (short) toLong(ix);<a name="line.30348"></a>
<span class="sourceLineNo">30349</span> for (int j = 0; j &lt; is; j++) {<a name="line.30349"></a>
<span class="sourceLineNo">30350</span> oai16data[it.oIndex + j] = ox;<a name="line.30350"></a>
<span class="sourceLineNo">30351</span> }<a name="line.30351"></a>
<span class="sourceLineNo">30352</span> }<a name="line.30352"></a>
<span class="sourceLineNo">30353</span> } else {<a name="line.30353"></a>
<span class="sourceLineNo">30354</span> while (it.hasNext()) {<a name="line.30354"></a>
<span class="sourceLineNo">30355</span> final long ix = it.aLong;<a name="line.30355"></a>
<span class="sourceLineNo">30356</span> short ox;<a name="line.30356"></a>
<span class="sourceLineNo">30357</span> ox = (short) toLong(ix);<a name="line.30357"></a>
<span class="sourceLineNo">30358</span> for (int j = 0; j &lt; is; j++) {<a name="line.30358"></a>
<span class="sourceLineNo">30359</span> oai16data[it.oIndex + j] = ox;<a name="line.30359"></a>
<span class="sourceLineNo">30360</span> }<a name="line.30360"></a>
<span class="sourceLineNo">30361</span> }<a name="line.30361"></a>
<span class="sourceLineNo">30362</span> }<a name="line.30362"></a>
<span class="sourceLineNo">30363</span> } else {<a name="line.30363"></a>
<span class="sourceLineNo">30364</span> if (it.isOutputDouble()) {<a name="line.30364"></a>
<span class="sourceLineNo">30365</span> while (it.hasNext()) {<a name="line.30365"></a>
<span class="sourceLineNo">30366</span> for (int j = 0; j &lt; is; j++) {<a name="line.30366"></a>
<span class="sourceLineNo">30367</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.30367"></a>
<span class="sourceLineNo">30368</span> short ox;<a name="line.30368"></a>
<span class="sourceLineNo">30369</span> ox = (short) toLong(ix);<a name="line.30369"></a>
<span class="sourceLineNo">30370</span> oai16data[it.oIndex + j] = ox;<a name="line.30370"></a>
<span class="sourceLineNo">30371</span> }<a name="line.30371"></a>
<span class="sourceLineNo">30372</span> }<a name="line.30372"></a>
<span class="sourceLineNo">30373</span> } else {<a name="line.30373"></a>
<span class="sourceLineNo">30374</span> while (it.hasNext()) {<a name="line.30374"></a>
<span class="sourceLineNo">30375</span> for (int j = 0; j &lt; is; j++) {<a name="line.30375"></a>
<span class="sourceLineNo">30376</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.30376"></a>
<span class="sourceLineNo">30377</span> short ox;<a name="line.30377"></a>
<span class="sourceLineNo">30378</span> ox = (short) toLong(ix);<a name="line.30378"></a>
<span class="sourceLineNo">30379</span> oai16data[it.oIndex + j] = ox;<a name="line.30379"></a>
<span class="sourceLineNo">30380</span> }<a name="line.30380"></a>
<span class="sourceLineNo">30381</span> }<a name="line.30381"></a>
<span class="sourceLineNo">30382</span> }<a name="line.30382"></a>
<span class="sourceLineNo">30383</span> }<a name="line.30383"></a>
<span class="sourceLineNo">30384</span> break;<a name="line.30384"></a>
<span class="sourceLineNo">30385</span> case Dataset.ARRAYINT64:<a name="line.30385"></a>
<span class="sourceLineNo">30386</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.30386"></a>
<span class="sourceLineNo">30387</span> if (is == 1) {<a name="line.30387"></a>
<span class="sourceLineNo">30388</span> if (it.isOutputDouble()) {<a name="line.30388"></a>
<span class="sourceLineNo">30389</span> while (it.hasNext()) {<a name="line.30389"></a>
<span class="sourceLineNo">30390</span> final double ix = it.aDouble;<a name="line.30390"></a>
<span class="sourceLineNo">30391</span> long ox;<a name="line.30391"></a>
<span class="sourceLineNo">30392</span> ox = toLong(ix);<a name="line.30392"></a>
<span class="sourceLineNo">30393</span> oai64data[it.oIndex] = ox;<a name="line.30393"></a>
<span class="sourceLineNo">30394</span> }<a name="line.30394"></a>
<span class="sourceLineNo">30395</span> } else {<a name="line.30395"></a>
<span class="sourceLineNo">30396</span> while (it.hasNext()) {<a name="line.30396"></a>
<span class="sourceLineNo">30397</span> final long ix = it.aLong;<a name="line.30397"></a>
<span class="sourceLineNo">30398</span> long ox;<a name="line.30398"></a>
<span class="sourceLineNo">30399</span> ox = toLong(ix);<a name="line.30399"></a>
<span class="sourceLineNo">30400</span> oai64data[it.oIndex] = ox;<a name="line.30400"></a>
<span class="sourceLineNo">30401</span> }<a name="line.30401"></a>
<span class="sourceLineNo">30402</span> }<a name="line.30402"></a>
<span class="sourceLineNo">30403</span> } else if (as == 1) {<a name="line.30403"></a>
<span class="sourceLineNo">30404</span> if (it.isOutputDouble()) {<a name="line.30404"></a>
<span class="sourceLineNo">30405</span> while (it.hasNext()) {<a name="line.30405"></a>
<span class="sourceLineNo">30406</span> final double ix = it.aDouble;<a name="line.30406"></a>
<span class="sourceLineNo">30407</span> long ox;<a name="line.30407"></a>
<span class="sourceLineNo">30408</span> ox = toLong(ix);<a name="line.30408"></a>
<span class="sourceLineNo">30409</span> for (int j = 0; j &lt; is; j++) {<a name="line.30409"></a>
<span class="sourceLineNo">30410</span> oai64data[it.oIndex + j] = ox;<a name="line.30410"></a>
<span class="sourceLineNo">30411</span> }<a name="line.30411"></a>
<span class="sourceLineNo">30412</span> }<a name="line.30412"></a>
<span class="sourceLineNo">30413</span> } else {<a name="line.30413"></a>
<span class="sourceLineNo">30414</span> while (it.hasNext()) {<a name="line.30414"></a>
<span class="sourceLineNo">30415</span> final long ix = it.aLong;<a name="line.30415"></a>
<span class="sourceLineNo">30416</span> long ox;<a name="line.30416"></a>
<span class="sourceLineNo">30417</span> ox = toLong(ix);<a name="line.30417"></a>
<span class="sourceLineNo">30418</span> for (int j = 0; j &lt; is; j++) {<a name="line.30418"></a>
<span class="sourceLineNo">30419</span> oai64data[it.oIndex + j] = ox;<a name="line.30419"></a>
<span class="sourceLineNo">30420</span> }<a name="line.30420"></a>
<span class="sourceLineNo">30421</span> }<a name="line.30421"></a>
<span class="sourceLineNo">30422</span> }<a name="line.30422"></a>
<span class="sourceLineNo">30423</span> } else {<a name="line.30423"></a>
<span class="sourceLineNo">30424</span> if (it.isOutputDouble()) {<a name="line.30424"></a>
<span class="sourceLineNo">30425</span> while (it.hasNext()) {<a name="line.30425"></a>
<span class="sourceLineNo">30426</span> for (int j = 0; j &lt; is; j++) {<a name="line.30426"></a>
<span class="sourceLineNo">30427</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.30427"></a>
<span class="sourceLineNo">30428</span> long ox;<a name="line.30428"></a>
<span class="sourceLineNo">30429</span> ox = toLong(ix);<a name="line.30429"></a>
<span class="sourceLineNo">30430</span> oai64data[it.oIndex + j] = ox;<a name="line.30430"></a>
<span class="sourceLineNo">30431</span> }<a name="line.30431"></a>
<span class="sourceLineNo">30432</span> }<a name="line.30432"></a>
<span class="sourceLineNo">30433</span> } else {<a name="line.30433"></a>
<span class="sourceLineNo">30434</span> while (it.hasNext()) {<a name="line.30434"></a>
<span class="sourceLineNo">30435</span> for (int j = 0; j &lt; is; j++) {<a name="line.30435"></a>
<span class="sourceLineNo">30436</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.30436"></a>
<span class="sourceLineNo">30437</span> long ox;<a name="line.30437"></a>
<span class="sourceLineNo">30438</span> ox = toLong(ix);<a name="line.30438"></a>
<span class="sourceLineNo">30439</span> oai64data[it.oIndex + j] = ox;<a name="line.30439"></a>
<span class="sourceLineNo">30440</span> }<a name="line.30440"></a>
<span class="sourceLineNo">30441</span> }<a name="line.30441"></a>
<span class="sourceLineNo">30442</span> }<a name="line.30442"></a>
<span class="sourceLineNo">30443</span> }<a name="line.30443"></a>
<span class="sourceLineNo">30444</span> break;<a name="line.30444"></a>
<span class="sourceLineNo">30445</span> case Dataset.ARRAYINT32:<a name="line.30445"></a>
<span class="sourceLineNo">30446</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.30446"></a>
<span class="sourceLineNo">30447</span> if (is == 1) {<a name="line.30447"></a>
<span class="sourceLineNo">30448</span> if (it.isOutputDouble()) {<a name="line.30448"></a>
<span class="sourceLineNo">30449</span> while (it.hasNext()) {<a name="line.30449"></a>
<span class="sourceLineNo">30450</span> final double ix = it.aDouble;<a name="line.30450"></a>
<span class="sourceLineNo">30451</span> int ox;<a name="line.30451"></a>
<span class="sourceLineNo">30452</span> ox = (int) toLong(ix);<a name="line.30452"></a>
<span class="sourceLineNo">30453</span> oai32data[it.oIndex] = ox;<a name="line.30453"></a>
<span class="sourceLineNo">30454</span> }<a name="line.30454"></a>
<span class="sourceLineNo">30455</span> } else {<a name="line.30455"></a>
<span class="sourceLineNo">30456</span> while (it.hasNext()) {<a name="line.30456"></a>
<span class="sourceLineNo">30457</span> final long ix = it.aLong;<a name="line.30457"></a>
<span class="sourceLineNo">30458</span> int ox;<a name="line.30458"></a>
<span class="sourceLineNo">30459</span> ox = (int) toLong(ix);<a name="line.30459"></a>
<span class="sourceLineNo">30460</span> oai32data[it.oIndex] = ox;<a name="line.30460"></a>
<span class="sourceLineNo">30461</span> }<a name="line.30461"></a>
<span class="sourceLineNo">30462</span> }<a name="line.30462"></a>
<span class="sourceLineNo">30463</span> } else if (as == 1) {<a name="line.30463"></a>
<span class="sourceLineNo">30464</span> if (it.isOutputDouble()) {<a name="line.30464"></a>
<span class="sourceLineNo">30465</span> while (it.hasNext()) {<a name="line.30465"></a>
<span class="sourceLineNo">30466</span> final double ix = it.aDouble;<a name="line.30466"></a>
<span class="sourceLineNo">30467</span> int ox;<a name="line.30467"></a>
<span class="sourceLineNo">30468</span> ox = (int) toLong(ix);<a name="line.30468"></a>
<span class="sourceLineNo">30469</span> for (int j = 0; j &lt; is; j++) {<a name="line.30469"></a>
<span class="sourceLineNo">30470</span> oai32data[it.oIndex + j] = ox;<a name="line.30470"></a>
<span class="sourceLineNo">30471</span> }<a name="line.30471"></a>
<span class="sourceLineNo">30472</span> }<a name="line.30472"></a>
<span class="sourceLineNo">30473</span> } else {<a name="line.30473"></a>
<span class="sourceLineNo">30474</span> while (it.hasNext()) {<a name="line.30474"></a>
<span class="sourceLineNo">30475</span> final long ix = it.aLong;<a name="line.30475"></a>
<span class="sourceLineNo">30476</span> int ox;<a name="line.30476"></a>
<span class="sourceLineNo">30477</span> ox = (int) toLong(ix);<a name="line.30477"></a>
<span class="sourceLineNo">30478</span> for (int j = 0; j &lt; is; j++) {<a name="line.30478"></a>
<span class="sourceLineNo">30479</span> oai32data[it.oIndex + j] = ox;<a name="line.30479"></a>
<span class="sourceLineNo">30480</span> }<a name="line.30480"></a>
<span class="sourceLineNo">30481</span> }<a name="line.30481"></a>
<span class="sourceLineNo">30482</span> }<a name="line.30482"></a>
<span class="sourceLineNo">30483</span> } else {<a name="line.30483"></a>
<span class="sourceLineNo">30484</span> if (it.isOutputDouble()) {<a name="line.30484"></a>
<span class="sourceLineNo">30485</span> while (it.hasNext()) {<a name="line.30485"></a>
<span class="sourceLineNo">30486</span> for (int j = 0; j &lt; is; j++) {<a name="line.30486"></a>
<span class="sourceLineNo">30487</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.30487"></a>
<span class="sourceLineNo">30488</span> int ox;<a name="line.30488"></a>
<span class="sourceLineNo">30489</span> ox = (int) toLong(ix);<a name="line.30489"></a>
<span class="sourceLineNo">30490</span> oai32data[it.oIndex + j] = ox;<a name="line.30490"></a>
<span class="sourceLineNo">30491</span> }<a name="line.30491"></a>
<span class="sourceLineNo">30492</span> }<a name="line.30492"></a>
<span class="sourceLineNo">30493</span> } else {<a name="line.30493"></a>
<span class="sourceLineNo">30494</span> while (it.hasNext()) {<a name="line.30494"></a>
<span class="sourceLineNo">30495</span> for (int j = 0; j &lt; is; j++) {<a name="line.30495"></a>
<span class="sourceLineNo">30496</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.30496"></a>
<span class="sourceLineNo">30497</span> int ox;<a name="line.30497"></a>
<span class="sourceLineNo">30498</span> ox = (int) toLong(ix);<a name="line.30498"></a>
<span class="sourceLineNo">30499</span> oai32data[it.oIndex + j] = ox;<a name="line.30499"></a>
<span class="sourceLineNo">30500</span> }<a name="line.30500"></a>
<span class="sourceLineNo">30501</span> }<a name="line.30501"></a>
<span class="sourceLineNo">30502</span> }<a name="line.30502"></a>
<span class="sourceLineNo">30503</span> }<a name="line.30503"></a>
<span class="sourceLineNo">30504</span> break;<a name="line.30504"></a>
<span class="sourceLineNo">30505</span> case Dataset.FLOAT32:<a name="line.30505"></a>
<span class="sourceLineNo">30506</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.30506"></a>
<span class="sourceLineNo">30507</span> if (it.isOutputDouble()) {<a name="line.30507"></a>
<span class="sourceLineNo">30508</span> while (it.hasNext()) {<a name="line.30508"></a>
<span class="sourceLineNo">30509</span> final double ix = it.aDouble;<a name="line.30509"></a>
<span class="sourceLineNo">30510</span> float ox;<a name="line.30510"></a>
<span class="sourceLineNo">30511</span> ox = (float) (Math.floor(ix));<a name="line.30511"></a>
<span class="sourceLineNo">30512</span> of32data[it.oIndex] = ox;<a name="line.30512"></a>
<span class="sourceLineNo">30513</span> }<a name="line.30513"></a>
<span class="sourceLineNo">30514</span> } else {<a name="line.30514"></a>
<span class="sourceLineNo">30515</span> while (it.hasNext()) {<a name="line.30515"></a>
<span class="sourceLineNo">30516</span> final long ix = it.aLong;<a name="line.30516"></a>
<span class="sourceLineNo">30517</span> float ox;<a name="line.30517"></a>
<span class="sourceLineNo">30518</span> ox = (float) (Math.floor(ix));<a name="line.30518"></a>
<span class="sourceLineNo">30519</span> of32data[it.oIndex] = ox;<a name="line.30519"></a>
<span class="sourceLineNo">30520</span> }<a name="line.30520"></a>
<span class="sourceLineNo">30521</span> }<a name="line.30521"></a>
<span class="sourceLineNo">30522</span> break;<a name="line.30522"></a>
<span class="sourceLineNo">30523</span> case Dataset.FLOAT64:<a name="line.30523"></a>
<span class="sourceLineNo">30524</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.30524"></a>
<span class="sourceLineNo">30525</span> if (it.isOutputDouble()) {<a name="line.30525"></a>
<span class="sourceLineNo">30526</span> while (it.hasNext()) {<a name="line.30526"></a>
<span class="sourceLineNo">30527</span> final double ix = it.aDouble;<a name="line.30527"></a>
<span class="sourceLineNo">30528</span> double ox;<a name="line.30528"></a>
<span class="sourceLineNo">30529</span> ox = (Math.floor(ix));<a name="line.30529"></a>
<span class="sourceLineNo">30530</span> of64data[it.oIndex] = ox;<a name="line.30530"></a>
<span class="sourceLineNo">30531</span> }<a name="line.30531"></a>
<span class="sourceLineNo">30532</span> } else {<a name="line.30532"></a>
<span class="sourceLineNo">30533</span> while (it.hasNext()) {<a name="line.30533"></a>
<span class="sourceLineNo">30534</span> final long ix = it.aLong;<a name="line.30534"></a>
<span class="sourceLineNo">30535</span> double ox;<a name="line.30535"></a>
<span class="sourceLineNo">30536</span> ox = (Math.floor(ix));<a name="line.30536"></a>
<span class="sourceLineNo">30537</span> of64data[it.oIndex] = ox;<a name="line.30537"></a>
<span class="sourceLineNo">30538</span> }<a name="line.30538"></a>
<span class="sourceLineNo">30539</span> }<a name="line.30539"></a>
<span class="sourceLineNo">30540</span> break;<a name="line.30540"></a>
<span class="sourceLineNo">30541</span> case Dataset.ARRAYFLOAT32:<a name="line.30541"></a>
<span class="sourceLineNo">30542</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.30542"></a>
<span class="sourceLineNo">30543</span> if (is == 1) {<a name="line.30543"></a>
<span class="sourceLineNo">30544</span> if (it.isOutputDouble()) {<a name="line.30544"></a>
<span class="sourceLineNo">30545</span> while (it.hasNext()) {<a name="line.30545"></a>
<span class="sourceLineNo">30546</span> final double ix = it.aDouble;<a name="line.30546"></a>
<span class="sourceLineNo">30547</span> float ox;<a name="line.30547"></a>
<span class="sourceLineNo">30548</span> ox = (float) (Math.floor(ix));<a name="line.30548"></a>
<span class="sourceLineNo">30549</span> oaf32data[it.oIndex] = ox;<a name="line.30549"></a>
<span class="sourceLineNo">30550</span> }<a name="line.30550"></a>
<span class="sourceLineNo">30551</span> } else {<a name="line.30551"></a>
<span class="sourceLineNo">30552</span> while (it.hasNext()) {<a name="line.30552"></a>
<span class="sourceLineNo">30553</span> final long ix = it.aLong;<a name="line.30553"></a>
<span class="sourceLineNo">30554</span> float ox;<a name="line.30554"></a>
<span class="sourceLineNo">30555</span> ox = (float) (Math.floor(ix));<a name="line.30555"></a>
<span class="sourceLineNo">30556</span> oaf32data[it.oIndex] = ox;<a name="line.30556"></a>
<span class="sourceLineNo">30557</span> }<a name="line.30557"></a>
<span class="sourceLineNo">30558</span> }<a name="line.30558"></a>
<span class="sourceLineNo">30559</span> } else if (as == 1) {<a name="line.30559"></a>
<span class="sourceLineNo">30560</span> if (it.isOutputDouble()) {<a name="line.30560"></a>
<span class="sourceLineNo">30561</span> while (it.hasNext()) {<a name="line.30561"></a>
<span class="sourceLineNo">30562</span> final double ix = it.aDouble;<a name="line.30562"></a>
<span class="sourceLineNo">30563</span> float ox;<a name="line.30563"></a>
<span class="sourceLineNo">30564</span> ox = (float) (Math.floor(ix));<a name="line.30564"></a>
<span class="sourceLineNo">30565</span> for (int j = 0; j &lt; is; j++) {<a name="line.30565"></a>
<span class="sourceLineNo">30566</span> oaf32data[it.oIndex + j] = ox;<a name="line.30566"></a>
<span class="sourceLineNo">30567</span> }<a name="line.30567"></a>
<span class="sourceLineNo">30568</span> }<a name="line.30568"></a>
<span class="sourceLineNo">30569</span> } else {<a name="line.30569"></a>
<span class="sourceLineNo">30570</span> while (it.hasNext()) {<a name="line.30570"></a>
<span class="sourceLineNo">30571</span> final long ix = it.aLong;<a name="line.30571"></a>
<span class="sourceLineNo">30572</span> float ox;<a name="line.30572"></a>
<span class="sourceLineNo">30573</span> ox = (float) (Math.floor(ix));<a name="line.30573"></a>
<span class="sourceLineNo">30574</span> for (int j = 0; j &lt; is; j++) {<a name="line.30574"></a>
<span class="sourceLineNo">30575</span> oaf32data[it.oIndex + j] = ox;<a name="line.30575"></a>
<span class="sourceLineNo">30576</span> }<a name="line.30576"></a>
<span class="sourceLineNo">30577</span> }<a name="line.30577"></a>
<span class="sourceLineNo">30578</span> }<a name="line.30578"></a>
<span class="sourceLineNo">30579</span> } else {<a name="line.30579"></a>
<span class="sourceLineNo">30580</span> if (it.isOutputDouble()) {<a name="line.30580"></a>
<span class="sourceLineNo">30581</span> while (it.hasNext()) {<a name="line.30581"></a>
<span class="sourceLineNo">30582</span> for (int j = 0; j &lt; is; j++) {<a name="line.30582"></a>
<span class="sourceLineNo">30583</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.30583"></a>
<span class="sourceLineNo">30584</span> float ox;<a name="line.30584"></a>
<span class="sourceLineNo">30585</span> ox = (float) (Math.floor(ix));<a name="line.30585"></a>
<span class="sourceLineNo">30586</span> oaf32data[it.oIndex + j] = ox;<a name="line.30586"></a>
<span class="sourceLineNo">30587</span> }<a name="line.30587"></a>
<span class="sourceLineNo">30588</span> }<a name="line.30588"></a>
<span class="sourceLineNo">30589</span> } else {<a name="line.30589"></a>
<span class="sourceLineNo">30590</span> while (it.hasNext()) {<a name="line.30590"></a>
<span class="sourceLineNo">30591</span> for (int j = 0; j &lt; is; j++) {<a name="line.30591"></a>
<span class="sourceLineNo">30592</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.30592"></a>
<span class="sourceLineNo">30593</span> float ox;<a name="line.30593"></a>
<span class="sourceLineNo">30594</span> ox = (float) (Math.floor(ix));<a name="line.30594"></a>
<span class="sourceLineNo">30595</span> oaf32data[it.oIndex + j] = ox;<a name="line.30595"></a>
<span class="sourceLineNo">30596</span> }<a name="line.30596"></a>
<span class="sourceLineNo">30597</span> }<a name="line.30597"></a>
<span class="sourceLineNo">30598</span> }<a name="line.30598"></a>
<span class="sourceLineNo">30599</span> }<a name="line.30599"></a>
<span class="sourceLineNo">30600</span> break;<a name="line.30600"></a>
<span class="sourceLineNo">30601</span> case Dataset.ARRAYFLOAT64:<a name="line.30601"></a>
<span class="sourceLineNo">30602</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.30602"></a>
<span class="sourceLineNo">30603</span> if (is == 1) {<a name="line.30603"></a>
<span class="sourceLineNo">30604</span> if (it.isOutputDouble()) {<a name="line.30604"></a>
<span class="sourceLineNo">30605</span> while (it.hasNext()) {<a name="line.30605"></a>
<span class="sourceLineNo">30606</span> final double ix = it.aDouble;<a name="line.30606"></a>
<span class="sourceLineNo">30607</span> double ox;<a name="line.30607"></a>
<span class="sourceLineNo">30608</span> ox = (Math.floor(ix));<a name="line.30608"></a>
<span class="sourceLineNo">30609</span> oaf64data[it.oIndex] = ox;<a name="line.30609"></a>
<span class="sourceLineNo">30610</span> }<a name="line.30610"></a>
<span class="sourceLineNo">30611</span> } else {<a name="line.30611"></a>
<span class="sourceLineNo">30612</span> while (it.hasNext()) {<a name="line.30612"></a>
<span class="sourceLineNo">30613</span> final long ix = it.aLong;<a name="line.30613"></a>
<span class="sourceLineNo">30614</span> double ox;<a name="line.30614"></a>
<span class="sourceLineNo">30615</span> ox = (Math.floor(ix));<a name="line.30615"></a>
<span class="sourceLineNo">30616</span> oaf64data[it.oIndex] = ox;<a name="line.30616"></a>
<span class="sourceLineNo">30617</span> }<a name="line.30617"></a>
<span class="sourceLineNo">30618</span> }<a name="line.30618"></a>
<span class="sourceLineNo">30619</span> } else if (as == 1) {<a name="line.30619"></a>
<span class="sourceLineNo">30620</span> if (it.isOutputDouble()) {<a name="line.30620"></a>
<span class="sourceLineNo">30621</span> while (it.hasNext()) {<a name="line.30621"></a>
<span class="sourceLineNo">30622</span> final double ix = it.aDouble;<a name="line.30622"></a>
<span class="sourceLineNo">30623</span> double ox;<a name="line.30623"></a>
<span class="sourceLineNo">30624</span> ox = (Math.floor(ix));<a name="line.30624"></a>
<span class="sourceLineNo">30625</span> for (int j = 0; j &lt; is; j++) {<a name="line.30625"></a>
<span class="sourceLineNo">30626</span> oaf64data[it.oIndex + j] = ox;<a name="line.30626"></a>
<span class="sourceLineNo">30627</span> }<a name="line.30627"></a>
<span class="sourceLineNo">30628</span> }<a name="line.30628"></a>
<span class="sourceLineNo">30629</span> } else {<a name="line.30629"></a>
<span class="sourceLineNo">30630</span> while (it.hasNext()) {<a name="line.30630"></a>
<span class="sourceLineNo">30631</span> final long ix = it.aLong;<a name="line.30631"></a>
<span class="sourceLineNo">30632</span> double ox;<a name="line.30632"></a>
<span class="sourceLineNo">30633</span> ox = (Math.floor(ix));<a name="line.30633"></a>
<span class="sourceLineNo">30634</span> for (int j = 0; j &lt; is; j++) {<a name="line.30634"></a>
<span class="sourceLineNo">30635</span> oaf64data[it.oIndex + j] = ox;<a name="line.30635"></a>
<span class="sourceLineNo">30636</span> }<a name="line.30636"></a>
<span class="sourceLineNo">30637</span> }<a name="line.30637"></a>
<span class="sourceLineNo">30638</span> }<a name="line.30638"></a>
<span class="sourceLineNo">30639</span> } else {<a name="line.30639"></a>
<span class="sourceLineNo">30640</span> if (it.isOutputDouble()) {<a name="line.30640"></a>
<span class="sourceLineNo">30641</span> while (it.hasNext()) {<a name="line.30641"></a>
<span class="sourceLineNo">30642</span> for (int j = 0; j &lt; is; j++) {<a name="line.30642"></a>
<span class="sourceLineNo">30643</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.30643"></a>
<span class="sourceLineNo">30644</span> double ox;<a name="line.30644"></a>
<span class="sourceLineNo">30645</span> ox = (Math.floor(ix));<a name="line.30645"></a>
<span class="sourceLineNo">30646</span> oaf64data[it.oIndex + j] = ox;<a name="line.30646"></a>
<span class="sourceLineNo">30647</span> }<a name="line.30647"></a>
<span class="sourceLineNo">30648</span> }<a name="line.30648"></a>
<span class="sourceLineNo">30649</span> } else {<a name="line.30649"></a>
<span class="sourceLineNo">30650</span> while (it.hasNext()) {<a name="line.30650"></a>
<span class="sourceLineNo">30651</span> for (int j = 0; j &lt; is; j++) {<a name="line.30651"></a>
<span class="sourceLineNo">30652</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.30652"></a>
<span class="sourceLineNo">30653</span> double ox;<a name="line.30653"></a>
<span class="sourceLineNo">30654</span> ox = (Math.floor(ix));<a name="line.30654"></a>
<span class="sourceLineNo">30655</span> oaf64data[it.oIndex + j] = ox;<a name="line.30655"></a>
<span class="sourceLineNo">30656</span> }<a name="line.30656"></a>
<span class="sourceLineNo">30657</span> }<a name="line.30657"></a>
<span class="sourceLineNo">30658</span> }<a name="line.30658"></a>
<span class="sourceLineNo">30659</span> }<a name="line.30659"></a>
<span class="sourceLineNo">30660</span> break;<a name="line.30660"></a>
<span class="sourceLineNo">30661</span> case Dataset.COMPLEX64:<a name="line.30661"></a>
<span class="sourceLineNo">30662</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.30662"></a>
<span class="sourceLineNo">30663</span> if (!da.isComplex()) {<a name="line.30663"></a>
<span class="sourceLineNo">30664</span> if (it.isOutputDouble()) {<a name="line.30664"></a>
<span class="sourceLineNo">30665</span> final double iy = 0;<a name="line.30665"></a>
<span class="sourceLineNo">30666</span> while (it.hasNext()) {<a name="line.30666"></a>
<span class="sourceLineNo">30667</span> final double ix = it.aDouble;<a name="line.30667"></a>
<span class="sourceLineNo">30668</span> float ox;<a name="line.30668"></a>
<span class="sourceLineNo">30669</span> float oy;<a name="line.30669"></a>
<span class="sourceLineNo">30670</span> ox = (float) (Math.floor(ix));<a name="line.30670"></a>
<span class="sourceLineNo">30671</span> oy = (float) (Math.floor(iy));<a name="line.30671"></a>
<span class="sourceLineNo">30672</span> oc64data[it.oIndex] = ox;<a name="line.30672"></a>
<span class="sourceLineNo">30673</span> oc64data[it.oIndex + 1] = oy;<a name="line.30673"></a>
<span class="sourceLineNo">30674</span> }<a name="line.30674"></a>
<span class="sourceLineNo">30675</span> } else {<a name="line.30675"></a>
<span class="sourceLineNo">30676</span> final long iy = 0;<a name="line.30676"></a>
<span class="sourceLineNo">30677</span> while (it.hasNext()) {<a name="line.30677"></a>
<span class="sourceLineNo">30678</span> final long ix = it.aLong;<a name="line.30678"></a>
<span class="sourceLineNo">30679</span> float ox;<a name="line.30679"></a>
<span class="sourceLineNo">30680</span> float oy;<a name="line.30680"></a>
<span class="sourceLineNo">30681</span> ox = (float) toLong(Math.floor(ix));<a name="line.30681"></a>
<span class="sourceLineNo">30682</span> oy = (float) toLong(Math.floor(iy));<a name="line.30682"></a>
<span class="sourceLineNo">30683</span> oc64data[it.oIndex] = ox;<a name="line.30683"></a>
<span class="sourceLineNo">30684</span> oc64data[it.oIndex + 1] = oy;<a name="line.30684"></a>
<span class="sourceLineNo">30685</span> }<a name="line.30685"></a>
<span class="sourceLineNo">30686</span> }<a name="line.30686"></a>
<span class="sourceLineNo">30687</span> } else {<a name="line.30687"></a>
<span class="sourceLineNo">30688</span> while (it.hasNext()) {<a name="line.30688"></a>
<span class="sourceLineNo">30689</span> final double ix = it.aDouble;<a name="line.30689"></a>
<span class="sourceLineNo">30690</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.30690"></a>
<span class="sourceLineNo">30691</span> float ox;<a name="line.30691"></a>
<span class="sourceLineNo">30692</span> float oy;<a name="line.30692"></a>
<span class="sourceLineNo">30693</span> ox = (float) (Math.floor(ix));<a name="line.30693"></a>
<span class="sourceLineNo">30694</span> oy = (float) (Math.floor(iy));<a name="line.30694"></a>
<span class="sourceLineNo">30695</span> oc64data[it.oIndex] = ox;<a name="line.30695"></a>
<span class="sourceLineNo">30696</span> oc64data[it.oIndex + 1] = oy;<a name="line.30696"></a>
<span class="sourceLineNo">30697</span> }<a name="line.30697"></a>
<span class="sourceLineNo">30698</span> }<a name="line.30698"></a>
<span class="sourceLineNo">30699</span> break;<a name="line.30699"></a>
<span class="sourceLineNo">30700</span> case Dataset.COMPLEX128:<a name="line.30700"></a>
<span class="sourceLineNo">30701</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.30701"></a>
<span class="sourceLineNo">30702</span> if (!da.isComplex()) {<a name="line.30702"></a>
<span class="sourceLineNo">30703</span> if (it.isOutputDouble()) {<a name="line.30703"></a>
<span class="sourceLineNo">30704</span> final double iy = 0;<a name="line.30704"></a>
<span class="sourceLineNo">30705</span> while (it.hasNext()) {<a name="line.30705"></a>
<span class="sourceLineNo">30706</span> final double ix = it.aDouble;<a name="line.30706"></a>
<span class="sourceLineNo">30707</span> double ox;<a name="line.30707"></a>
<span class="sourceLineNo">30708</span> double oy;<a name="line.30708"></a>
<span class="sourceLineNo">30709</span> ox = (Math.floor(ix));<a name="line.30709"></a>
<span class="sourceLineNo">30710</span> oy = (Math.floor(iy));<a name="line.30710"></a>
<span class="sourceLineNo">30711</span> oc128data[it.oIndex] = ox;<a name="line.30711"></a>
<span class="sourceLineNo">30712</span> oc128data[it.oIndex + 1] = oy;<a name="line.30712"></a>
<span class="sourceLineNo">30713</span> }<a name="line.30713"></a>
<span class="sourceLineNo">30714</span> } else {<a name="line.30714"></a>
<span class="sourceLineNo">30715</span> final long iy = 0;<a name="line.30715"></a>
<span class="sourceLineNo">30716</span> while (it.hasNext()) {<a name="line.30716"></a>
<span class="sourceLineNo">30717</span> final long ix = it.aLong;<a name="line.30717"></a>
<span class="sourceLineNo">30718</span> double ox;<a name="line.30718"></a>
<span class="sourceLineNo">30719</span> double oy;<a name="line.30719"></a>
<span class="sourceLineNo">30720</span> ox = (double) (Math.floor(ix));<a name="line.30720"></a>
<span class="sourceLineNo">30721</span> oy = (double) (Math.floor(iy));<a name="line.30721"></a>
<span class="sourceLineNo">30722</span> oc128data[it.oIndex] = ox;<a name="line.30722"></a>
<span class="sourceLineNo">30723</span> oc128data[it.oIndex + 1] = oy;<a name="line.30723"></a>
<span class="sourceLineNo">30724</span> }<a name="line.30724"></a>
<span class="sourceLineNo">30725</span> }<a name="line.30725"></a>
<span class="sourceLineNo">30726</span> } else {<a name="line.30726"></a>
<span class="sourceLineNo">30727</span> while (it.hasNext()) {<a name="line.30727"></a>
<span class="sourceLineNo">30728</span> final double ix = it.aDouble;<a name="line.30728"></a>
<span class="sourceLineNo">30729</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.30729"></a>
<span class="sourceLineNo">30730</span> double ox;<a name="line.30730"></a>
<span class="sourceLineNo">30731</span> double oy;<a name="line.30731"></a>
<span class="sourceLineNo">30732</span> ox = (Math.floor(ix));<a name="line.30732"></a>
<span class="sourceLineNo">30733</span> oy = (Math.floor(iy));<a name="line.30733"></a>
<span class="sourceLineNo">30734</span> oc128data[it.oIndex] = ox;<a name="line.30734"></a>
<span class="sourceLineNo">30735</span> oc128data[it.oIndex + 1] = oy;<a name="line.30735"></a>
<span class="sourceLineNo">30736</span> }<a name="line.30736"></a>
<span class="sourceLineNo">30737</span> }<a name="line.30737"></a>
<span class="sourceLineNo">30738</span> break;<a name="line.30738"></a>
<span class="sourceLineNo">30739</span> default:<a name="line.30739"></a>
<span class="sourceLineNo">30740</span> throw new IllegalArgumentException("floor supports integer, compound integer, real, compound real, complex datasets only");<a name="line.30740"></a>
<span class="sourceLineNo">30741</span> }<a name="line.30741"></a>
<span class="sourceLineNo">30742</span><a name="line.30742"></a>
<span class="sourceLineNo">30743</span> addFunctionName(result, "floor");<a name="line.30743"></a>
<span class="sourceLineNo">30744</span> return result;<a name="line.30744"></a>
<span class="sourceLineNo">30745</span> }<a name="line.30745"></a>
<span class="sourceLineNo">30746</span><a name="line.30746"></a>
<span class="sourceLineNo">30747</span> /**<a name="line.30747"></a>
<span class="sourceLineNo">30748</span> * ceil - evaluate the ceiling function on each element of the dataset<a name="line.30748"></a>
<span class="sourceLineNo">30749</span> * @param a<a name="line.30749"></a>
<span class="sourceLineNo">30750</span> * @return dataset<a name="line.30750"></a>
<span class="sourceLineNo">30751</span> */<a name="line.30751"></a>
<span class="sourceLineNo">30752</span> public static Dataset ceil(final Object a) {<a name="line.30752"></a>
<span class="sourceLineNo">30753</span> return ceil(a, null);<a name="line.30753"></a>
<span class="sourceLineNo">30754</span> }<a name="line.30754"></a>
<span class="sourceLineNo">30755</span><a name="line.30755"></a>
<span class="sourceLineNo">30756</span> /**<a name="line.30756"></a>
<span class="sourceLineNo">30757</span> * ceil - evaluate the ceiling function on each element of the dataset<a name="line.30757"></a>
<span class="sourceLineNo">30758</span> * @param a<a name="line.30758"></a>
<span class="sourceLineNo">30759</span> * @param o output can be null - in which case, a new dataset is created<a name="line.30759"></a>
<span class="sourceLineNo">30760</span> * @return dataset<a name="line.30760"></a>
<span class="sourceLineNo">30761</span> */<a name="line.30761"></a>
<span class="sourceLineNo">30762</span> public static Dataset ceil(final Object a, final Dataset o) {<a name="line.30762"></a>
<span class="sourceLineNo">30763</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.30763"></a>
<span class="sourceLineNo">30764</span> SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true);<a name="line.30764"></a>
<span class="sourceLineNo">30765</span> final Dataset result = it.getOutput();<a name="line.30765"></a>
<span class="sourceLineNo">30766</span> if (!result.isComplex()) {<a name="line.30766"></a>
<span class="sourceLineNo">30767</span> if (da.isComplex()) {<a name="line.30767"></a>
<span class="sourceLineNo">30768</span> da = da.getRealView();<a name="line.30768"></a>
<span class="sourceLineNo">30769</span> it = new SingleInputBroadcastIterator(da, result, true);<a name="line.30769"></a>
<span class="sourceLineNo">30770</span> }<a name="line.30770"></a>
<span class="sourceLineNo">30771</span> }<a name="line.30771"></a>
<span class="sourceLineNo">30772</span> final int is = result.getElementsPerItem();<a name="line.30772"></a>
<span class="sourceLineNo">30773</span> final int as = da.getElementsPerItem();<a name="line.30773"></a>
<span class="sourceLineNo">30774</span> final int dt = result.getDType();<a name="line.30774"></a>
<span class="sourceLineNo">30775</span><a name="line.30775"></a>
<span class="sourceLineNo">30776</span> switch(dt) {<a name="line.30776"></a>
<span class="sourceLineNo">30777</span> case Dataset.INT8:<a name="line.30777"></a>
<span class="sourceLineNo">30778</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.30778"></a>
<span class="sourceLineNo">30779</span> if (it.isOutputDouble()) {<a name="line.30779"></a>
<span class="sourceLineNo">30780</span> while (it.hasNext()) {<a name="line.30780"></a>
<span class="sourceLineNo">30781</span> final double ix = it.aDouble;<a name="line.30781"></a>
<span class="sourceLineNo">30782</span> byte ox;<a name="line.30782"></a>
<span class="sourceLineNo">30783</span> ox = (byte) toLong(ix);<a name="line.30783"></a>
<span class="sourceLineNo">30784</span> oi8data[it.oIndex] = ox;<a name="line.30784"></a>
<span class="sourceLineNo">30785</span> }<a name="line.30785"></a>
<span class="sourceLineNo">30786</span> } else {<a name="line.30786"></a>
<span class="sourceLineNo">30787</span> while (it.hasNext()) {<a name="line.30787"></a>
<span class="sourceLineNo">30788</span> final long ix = it.aLong;<a name="line.30788"></a>
<span class="sourceLineNo">30789</span> byte ox;<a name="line.30789"></a>
<span class="sourceLineNo">30790</span> ox = (byte) toLong(ix);<a name="line.30790"></a>
<span class="sourceLineNo">30791</span> oi8data[it.oIndex] = ox;<a name="line.30791"></a>
<span class="sourceLineNo">30792</span> }<a name="line.30792"></a>
<span class="sourceLineNo">30793</span> }<a name="line.30793"></a>
<span class="sourceLineNo">30794</span> break;<a name="line.30794"></a>
<span class="sourceLineNo">30795</span> case Dataset.INT16:<a name="line.30795"></a>
<span class="sourceLineNo">30796</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.30796"></a>
<span class="sourceLineNo">30797</span> if (it.isOutputDouble()) {<a name="line.30797"></a>
<span class="sourceLineNo">30798</span> while (it.hasNext()) {<a name="line.30798"></a>
<span class="sourceLineNo">30799</span> final double ix = it.aDouble;<a name="line.30799"></a>
<span class="sourceLineNo">30800</span> short ox;<a name="line.30800"></a>
<span class="sourceLineNo">30801</span> ox = (short) toLong(ix);<a name="line.30801"></a>
<span class="sourceLineNo">30802</span> oi16data[it.oIndex] = ox;<a name="line.30802"></a>
<span class="sourceLineNo">30803</span> }<a name="line.30803"></a>
<span class="sourceLineNo">30804</span> } else {<a name="line.30804"></a>
<span class="sourceLineNo">30805</span> while (it.hasNext()) {<a name="line.30805"></a>
<span class="sourceLineNo">30806</span> final long ix = it.aLong;<a name="line.30806"></a>
<span class="sourceLineNo">30807</span> short ox;<a name="line.30807"></a>
<span class="sourceLineNo">30808</span> ox = (short) toLong(ix);<a name="line.30808"></a>
<span class="sourceLineNo">30809</span> oi16data[it.oIndex] = ox;<a name="line.30809"></a>
<span class="sourceLineNo">30810</span> }<a name="line.30810"></a>
<span class="sourceLineNo">30811</span> }<a name="line.30811"></a>
<span class="sourceLineNo">30812</span> break;<a name="line.30812"></a>
<span class="sourceLineNo">30813</span> case Dataset.INT64:<a name="line.30813"></a>
<span class="sourceLineNo">30814</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.30814"></a>
<span class="sourceLineNo">30815</span> if (it.isOutputDouble()) {<a name="line.30815"></a>
<span class="sourceLineNo">30816</span> while (it.hasNext()) {<a name="line.30816"></a>
<span class="sourceLineNo">30817</span> final double ix = it.aDouble;<a name="line.30817"></a>
<span class="sourceLineNo">30818</span> long ox;<a name="line.30818"></a>
<span class="sourceLineNo">30819</span> ox = toLong(ix);<a name="line.30819"></a>
<span class="sourceLineNo">30820</span> oi64data[it.oIndex] = ox;<a name="line.30820"></a>
<span class="sourceLineNo">30821</span> }<a name="line.30821"></a>
<span class="sourceLineNo">30822</span> } else {<a name="line.30822"></a>
<span class="sourceLineNo">30823</span> while (it.hasNext()) {<a name="line.30823"></a>
<span class="sourceLineNo">30824</span> final long ix = it.aLong;<a name="line.30824"></a>
<span class="sourceLineNo">30825</span> long ox;<a name="line.30825"></a>
<span class="sourceLineNo">30826</span> ox = toLong(ix);<a name="line.30826"></a>
<span class="sourceLineNo">30827</span> oi64data[it.oIndex] = ox;<a name="line.30827"></a>
<span class="sourceLineNo">30828</span> }<a name="line.30828"></a>
<span class="sourceLineNo">30829</span> }<a name="line.30829"></a>
<span class="sourceLineNo">30830</span> break;<a name="line.30830"></a>
<span class="sourceLineNo">30831</span> case Dataset.INT32:<a name="line.30831"></a>
<span class="sourceLineNo">30832</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.30832"></a>
<span class="sourceLineNo">30833</span> if (it.isOutputDouble()) {<a name="line.30833"></a>
<span class="sourceLineNo">30834</span> while (it.hasNext()) {<a name="line.30834"></a>
<span class="sourceLineNo">30835</span> final double ix = it.aDouble;<a name="line.30835"></a>
<span class="sourceLineNo">30836</span> int ox;<a name="line.30836"></a>
<span class="sourceLineNo">30837</span> ox = (int) toLong(ix);<a name="line.30837"></a>
<span class="sourceLineNo">30838</span> oi32data[it.oIndex] = ox;<a name="line.30838"></a>
<span class="sourceLineNo">30839</span> }<a name="line.30839"></a>
<span class="sourceLineNo">30840</span> } else {<a name="line.30840"></a>
<span class="sourceLineNo">30841</span> while (it.hasNext()) {<a name="line.30841"></a>
<span class="sourceLineNo">30842</span> final long ix = it.aLong;<a name="line.30842"></a>
<span class="sourceLineNo">30843</span> int ox;<a name="line.30843"></a>
<span class="sourceLineNo">30844</span> ox = (int) toLong(ix);<a name="line.30844"></a>
<span class="sourceLineNo">30845</span> oi32data[it.oIndex] = ox;<a name="line.30845"></a>
<span class="sourceLineNo">30846</span> }<a name="line.30846"></a>
<span class="sourceLineNo">30847</span> }<a name="line.30847"></a>
<span class="sourceLineNo">30848</span> break;<a name="line.30848"></a>
<span class="sourceLineNo">30849</span> case Dataset.ARRAYINT8:<a name="line.30849"></a>
<span class="sourceLineNo">30850</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.30850"></a>
<span class="sourceLineNo">30851</span> if (is == 1) {<a name="line.30851"></a>
<span class="sourceLineNo">30852</span> if (it.isOutputDouble()) {<a name="line.30852"></a>
<span class="sourceLineNo">30853</span> while (it.hasNext()) {<a name="line.30853"></a>
<span class="sourceLineNo">30854</span> final double ix = it.aDouble;<a name="line.30854"></a>
<span class="sourceLineNo">30855</span> byte ox;<a name="line.30855"></a>
<span class="sourceLineNo">30856</span> ox = (byte) toLong(ix);<a name="line.30856"></a>
<span class="sourceLineNo">30857</span> oai8data[it.oIndex] = ox;<a name="line.30857"></a>
<span class="sourceLineNo">30858</span> }<a name="line.30858"></a>
<span class="sourceLineNo">30859</span> } else {<a name="line.30859"></a>
<span class="sourceLineNo">30860</span> while (it.hasNext()) {<a name="line.30860"></a>
<span class="sourceLineNo">30861</span> final long ix = it.aLong;<a name="line.30861"></a>
<span class="sourceLineNo">30862</span> byte ox;<a name="line.30862"></a>
<span class="sourceLineNo">30863</span> ox = (byte) toLong(ix);<a name="line.30863"></a>
<span class="sourceLineNo">30864</span> oai8data[it.oIndex] = ox;<a name="line.30864"></a>
<span class="sourceLineNo">30865</span> }<a name="line.30865"></a>
<span class="sourceLineNo">30866</span> }<a name="line.30866"></a>
<span class="sourceLineNo">30867</span> } else if (as == 1) {<a name="line.30867"></a>
<span class="sourceLineNo">30868</span> if (it.isOutputDouble()) {<a name="line.30868"></a>
<span class="sourceLineNo">30869</span> while (it.hasNext()) {<a name="line.30869"></a>
<span class="sourceLineNo">30870</span> final double ix = it.aDouble;<a name="line.30870"></a>
<span class="sourceLineNo">30871</span> byte ox;<a name="line.30871"></a>
<span class="sourceLineNo">30872</span> ox = (byte) toLong(ix);<a name="line.30872"></a>
<span class="sourceLineNo">30873</span> for (int j = 0; j &lt; is; j++) {<a name="line.30873"></a>
<span class="sourceLineNo">30874</span> oai8data[it.oIndex + j] = ox;<a name="line.30874"></a>
<span class="sourceLineNo">30875</span> }<a name="line.30875"></a>
<span class="sourceLineNo">30876</span> }<a name="line.30876"></a>
<span class="sourceLineNo">30877</span> } else {<a name="line.30877"></a>
<span class="sourceLineNo">30878</span> while (it.hasNext()) {<a name="line.30878"></a>
<span class="sourceLineNo">30879</span> final long ix = it.aLong;<a name="line.30879"></a>
<span class="sourceLineNo">30880</span> byte ox;<a name="line.30880"></a>
<span class="sourceLineNo">30881</span> ox = (byte) toLong(ix);<a name="line.30881"></a>
<span class="sourceLineNo">30882</span> for (int j = 0; j &lt; is; j++) {<a name="line.30882"></a>
<span class="sourceLineNo">30883</span> oai8data[it.oIndex + j] = ox;<a name="line.30883"></a>
<span class="sourceLineNo">30884</span> }<a name="line.30884"></a>
<span class="sourceLineNo">30885</span> }<a name="line.30885"></a>
<span class="sourceLineNo">30886</span> }<a name="line.30886"></a>
<span class="sourceLineNo">30887</span> } else {<a name="line.30887"></a>
<span class="sourceLineNo">30888</span> if (it.isOutputDouble()) {<a name="line.30888"></a>
<span class="sourceLineNo">30889</span> while (it.hasNext()) {<a name="line.30889"></a>
<span class="sourceLineNo">30890</span> for (int j = 0; j &lt; is; j++) {<a name="line.30890"></a>
<span class="sourceLineNo">30891</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.30891"></a>
<span class="sourceLineNo">30892</span> byte ox;<a name="line.30892"></a>
<span class="sourceLineNo">30893</span> ox = (byte) toLong(ix);<a name="line.30893"></a>
<span class="sourceLineNo">30894</span> oai8data[it.oIndex + j] = ox;<a name="line.30894"></a>
<span class="sourceLineNo">30895</span> }<a name="line.30895"></a>
<span class="sourceLineNo">30896</span> }<a name="line.30896"></a>
<span class="sourceLineNo">30897</span> } else {<a name="line.30897"></a>
<span class="sourceLineNo">30898</span> while (it.hasNext()) {<a name="line.30898"></a>
<span class="sourceLineNo">30899</span> for (int j = 0; j &lt; is; j++) {<a name="line.30899"></a>
<span class="sourceLineNo">30900</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.30900"></a>
<span class="sourceLineNo">30901</span> byte ox;<a name="line.30901"></a>
<span class="sourceLineNo">30902</span> ox = (byte) toLong(ix);<a name="line.30902"></a>
<span class="sourceLineNo">30903</span> oai8data[it.oIndex + j] = ox;<a name="line.30903"></a>
<span class="sourceLineNo">30904</span> }<a name="line.30904"></a>
<span class="sourceLineNo">30905</span> }<a name="line.30905"></a>
<span class="sourceLineNo">30906</span> }<a name="line.30906"></a>
<span class="sourceLineNo">30907</span> }<a name="line.30907"></a>
<span class="sourceLineNo">30908</span> break;<a name="line.30908"></a>
<span class="sourceLineNo">30909</span> case Dataset.ARRAYINT16:<a name="line.30909"></a>
<span class="sourceLineNo">30910</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.30910"></a>
<span class="sourceLineNo">30911</span> if (is == 1) {<a name="line.30911"></a>
<span class="sourceLineNo">30912</span> if (it.isOutputDouble()) {<a name="line.30912"></a>
<span class="sourceLineNo">30913</span> while (it.hasNext()) {<a name="line.30913"></a>
<span class="sourceLineNo">30914</span> final double ix = it.aDouble;<a name="line.30914"></a>
<span class="sourceLineNo">30915</span> short ox;<a name="line.30915"></a>
<span class="sourceLineNo">30916</span> ox = (short) toLong(ix);<a name="line.30916"></a>
<span class="sourceLineNo">30917</span> oai16data[it.oIndex] = ox;<a name="line.30917"></a>
<span class="sourceLineNo">30918</span> }<a name="line.30918"></a>
<span class="sourceLineNo">30919</span> } else {<a name="line.30919"></a>
<span class="sourceLineNo">30920</span> while (it.hasNext()) {<a name="line.30920"></a>
<span class="sourceLineNo">30921</span> final long ix = it.aLong;<a name="line.30921"></a>
<span class="sourceLineNo">30922</span> short ox;<a name="line.30922"></a>
<span class="sourceLineNo">30923</span> ox = (short) toLong(ix);<a name="line.30923"></a>
<span class="sourceLineNo">30924</span> oai16data[it.oIndex] = ox;<a name="line.30924"></a>
<span class="sourceLineNo">30925</span> }<a name="line.30925"></a>
<span class="sourceLineNo">30926</span> }<a name="line.30926"></a>
<span class="sourceLineNo">30927</span> } else if (as == 1) {<a name="line.30927"></a>
<span class="sourceLineNo">30928</span> if (it.isOutputDouble()) {<a name="line.30928"></a>
<span class="sourceLineNo">30929</span> while (it.hasNext()) {<a name="line.30929"></a>
<span class="sourceLineNo">30930</span> final double ix = it.aDouble;<a name="line.30930"></a>
<span class="sourceLineNo">30931</span> short ox;<a name="line.30931"></a>
<span class="sourceLineNo">30932</span> ox = (short) toLong(ix);<a name="line.30932"></a>
<span class="sourceLineNo">30933</span> for (int j = 0; j &lt; is; j++) {<a name="line.30933"></a>
<span class="sourceLineNo">30934</span> oai16data[it.oIndex + j] = ox;<a name="line.30934"></a>
<span class="sourceLineNo">30935</span> }<a name="line.30935"></a>
<span class="sourceLineNo">30936</span> }<a name="line.30936"></a>
<span class="sourceLineNo">30937</span> } else {<a name="line.30937"></a>
<span class="sourceLineNo">30938</span> while (it.hasNext()) {<a name="line.30938"></a>
<span class="sourceLineNo">30939</span> final long ix = it.aLong;<a name="line.30939"></a>
<span class="sourceLineNo">30940</span> short ox;<a name="line.30940"></a>
<span class="sourceLineNo">30941</span> ox = (short) toLong(ix);<a name="line.30941"></a>
<span class="sourceLineNo">30942</span> for (int j = 0; j &lt; is; j++) {<a name="line.30942"></a>
<span class="sourceLineNo">30943</span> oai16data[it.oIndex + j] = ox;<a name="line.30943"></a>
<span class="sourceLineNo">30944</span> }<a name="line.30944"></a>
<span class="sourceLineNo">30945</span> }<a name="line.30945"></a>
<span class="sourceLineNo">30946</span> }<a name="line.30946"></a>
<span class="sourceLineNo">30947</span> } else {<a name="line.30947"></a>
<span class="sourceLineNo">30948</span> if (it.isOutputDouble()) {<a name="line.30948"></a>
<span class="sourceLineNo">30949</span> while (it.hasNext()) {<a name="line.30949"></a>
<span class="sourceLineNo">30950</span> for (int j = 0; j &lt; is; j++) {<a name="line.30950"></a>
<span class="sourceLineNo">30951</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.30951"></a>
<span class="sourceLineNo">30952</span> short ox;<a name="line.30952"></a>
<span class="sourceLineNo">30953</span> ox = (short) toLong(ix);<a name="line.30953"></a>
<span class="sourceLineNo">30954</span> oai16data[it.oIndex + j] = ox;<a name="line.30954"></a>
<span class="sourceLineNo">30955</span> }<a name="line.30955"></a>
<span class="sourceLineNo">30956</span> }<a name="line.30956"></a>
<span class="sourceLineNo">30957</span> } else {<a name="line.30957"></a>
<span class="sourceLineNo">30958</span> while (it.hasNext()) {<a name="line.30958"></a>
<span class="sourceLineNo">30959</span> for (int j = 0; j &lt; is; j++) {<a name="line.30959"></a>
<span class="sourceLineNo">30960</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.30960"></a>
<span class="sourceLineNo">30961</span> short ox;<a name="line.30961"></a>
<span class="sourceLineNo">30962</span> ox = (short) toLong(ix);<a name="line.30962"></a>
<span class="sourceLineNo">30963</span> oai16data[it.oIndex + j] = ox;<a name="line.30963"></a>
<span class="sourceLineNo">30964</span> }<a name="line.30964"></a>
<span class="sourceLineNo">30965</span> }<a name="line.30965"></a>
<span class="sourceLineNo">30966</span> }<a name="line.30966"></a>
<span class="sourceLineNo">30967</span> }<a name="line.30967"></a>
<span class="sourceLineNo">30968</span> break;<a name="line.30968"></a>
<span class="sourceLineNo">30969</span> case Dataset.ARRAYINT64:<a name="line.30969"></a>
<span class="sourceLineNo">30970</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.30970"></a>
<span class="sourceLineNo">30971</span> if (is == 1) {<a name="line.30971"></a>
<span class="sourceLineNo">30972</span> if (it.isOutputDouble()) {<a name="line.30972"></a>
<span class="sourceLineNo">30973</span> while (it.hasNext()) {<a name="line.30973"></a>
<span class="sourceLineNo">30974</span> final double ix = it.aDouble;<a name="line.30974"></a>
<span class="sourceLineNo">30975</span> long ox;<a name="line.30975"></a>
<span class="sourceLineNo">30976</span> ox = toLong(ix);<a name="line.30976"></a>
<span class="sourceLineNo">30977</span> oai64data[it.oIndex] = ox;<a name="line.30977"></a>
<span class="sourceLineNo">30978</span> }<a name="line.30978"></a>
<span class="sourceLineNo">30979</span> } else {<a name="line.30979"></a>
<span class="sourceLineNo">30980</span> while (it.hasNext()) {<a name="line.30980"></a>
<span class="sourceLineNo">30981</span> final long ix = it.aLong;<a name="line.30981"></a>
<span class="sourceLineNo">30982</span> long ox;<a name="line.30982"></a>
<span class="sourceLineNo">30983</span> ox = toLong(ix);<a name="line.30983"></a>
<span class="sourceLineNo">30984</span> oai64data[it.oIndex] = ox;<a name="line.30984"></a>
<span class="sourceLineNo">30985</span> }<a name="line.30985"></a>
<span class="sourceLineNo">30986</span> }<a name="line.30986"></a>
<span class="sourceLineNo">30987</span> } else if (as == 1) {<a name="line.30987"></a>
<span class="sourceLineNo">30988</span> if (it.isOutputDouble()) {<a name="line.30988"></a>
<span class="sourceLineNo">30989</span> while (it.hasNext()) {<a name="line.30989"></a>
<span class="sourceLineNo">30990</span> final double ix = it.aDouble;<a name="line.30990"></a>
<span class="sourceLineNo">30991</span> long ox;<a name="line.30991"></a>
<span class="sourceLineNo">30992</span> ox = toLong(ix);<a name="line.30992"></a>
<span class="sourceLineNo">30993</span> for (int j = 0; j &lt; is; j++) {<a name="line.30993"></a>
<span class="sourceLineNo">30994</span> oai64data[it.oIndex + j] = ox;<a name="line.30994"></a>
<span class="sourceLineNo">30995</span> }<a name="line.30995"></a>
<span class="sourceLineNo">30996</span> }<a name="line.30996"></a>
<span class="sourceLineNo">30997</span> } else {<a name="line.30997"></a>
<span class="sourceLineNo">30998</span> while (it.hasNext()) {<a name="line.30998"></a>
<span class="sourceLineNo">30999</span> final long ix = it.aLong;<a name="line.30999"></a>
<span class="sourceLineNo">31000</span> long ox;<a name="line.31000"></a>
<span class="sourceLineNo">31001</span> ox = toLong(ix);<a name="line.31001"></a>
<span class="sourceLineNo">31002</span> for (int j = 0; j &lt; is; j++) {<a name="line.31002"></a>
<span class="sourceLineNo">31003</span> oai64data[it.oIndex + j] = ox;<a name="line.31003"></a>
<span class="sourceLineNo">31004</span> }<a name="line.31004"></a>
<span class="sourceLineNo">31005</span> }<a name="line.31005"></a>
<span class="sourceLineNo">31006</span> }<a name="line.31006"></a>
<span class="sourceLineNo">31007</span> } else {<a name="line.31007"></a>
<span class="sourceLineNo">31008</span> if (it.isOutputDouble()) {<a name="line.31008"></a>
<span class="sourceLineNo">31009</span> while (it.hasNext()) {<a name="line.31009"></a>
<span class="sourceLineNo">31010</span> for (int j = 0; j &lt; is; j++) {<a name="line.31010"></a>
<span class="sourceLineNo">31011</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.31011"></a>
<span class="sourceLineNo">31012</span> long ox;<a name="line.31012"></a>
<span class="sourceLineNo">31013</span> ox = toLong(ix);<a name="line.31013"></a>
<span class="sourceLineNo">31014</span> oai64data[it.oIndex + j] = ox;<a name="line.31014"></a>
<span class="sourceLineNo">31015</span> }<a name="line.31015"></a>
<span class="sourceLineNo">31016</span> }<a name="line.31016"></a>
<span class="sourceLineNo">31017</span> } else {<a name="line.31017"></a>
<span class="sourceLineNo">31018</span> while (it.hasNext()) {<a name="line.31018"></a>
<span class="sourceLineNo">31019</span> for (int j = 0; j &lt; is; j++) {<a name="line.31019"></a>
<span class="sourceLineNo">31020</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.31020"></a>
<span class="sourceLineNo">31021</span> long ox;<a name="line.31021"></a>
<span class="sourceLineNo">31022</span> ox = toLong(ix);<a name="line.31022"></a>
<span class="sourceLineNo">31023</span> oai64data[it.oIndex + j] = ox;<a name="line.31023"></a>
<span class="sourceLineNo">31024</span> }<a name="line.31024"></a>
<span class="sourceLineNo">31025</span> }<a name="line.31025"></a>
<span class="sourceLineNo">31026</span> }<a name="line.31026"></a>
<span class="sourceLineNo">31027</span> }<a name="line.31027"></a>
<span class="sourceLineNo">31028</span> break;<a name="line.31028"></a>
<span class="sourceLineNo">31029</span> case Dataset.ARRAYINT32:<a name="line.31029"></a>
<span class="sourceLineNo">31030</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.31030"></a>
<span class="sourceLineNo">31031</span> if (is == 1) {<a name="line.31031"></a>
<span class="sourceLineNo">31032</span> if (it.isOutputDouble()) {<a name="line.31032"></a>
<span class="sourceLineNo">31033</span> while (it.hasNext()) {<a name="line.31033"></a>
<span class="sourceLineNo">31034</span> final double ix = it.aDouble;<a name="line.31034"></a>
<span class="sourceLineNo">31035</span> int ox;<a name="line.31035"></a>
<span class="sourceLineNo">31036</span> ox = (int) toLong(ix);<a name="line.31036"></a>
<span class="sourceLineNo">31037</span> oai32data[it.oIndex] = ox;<a name="line.31037"></a>
<span class="sourceLineNo">31038</span> }<a name="line.31038"></a>
<span class="sourceLineNo">31039</span> } else {<a name="line.31039"></a>
<span class="sourceLineNo">31040</span> while (it.hasNext()) {<a name="line.31040"></a>
<span class="sourceLineNo">31041</span> final long ix = it.aLong;<a name="line.31041"></a>
<span class="sourceLineNo">31042</span> int ox;<a name="line.31042"></a>
<span class="sourceLineNo">31043</span> ox = (int) toLong(ix);<a name="line.31043"></a>
<span class="sourceLineNo">31044</span> oai32data[it.oIndex] = ox;<a name="line.31044"></a>
<span class="sourceLineNo">31045</span> }<a name="line.31045"></a>
<span class="sourceLineNo">31046</span> }<a name="line.31046"></a>
<span class="sourceLineNo">31047</span> } else if (as == 1) {<a name="line.31047"></a>
<span class="sourceLineNo">31048</span> if (it.isOutputDouble()) {<a name="line.31048"></a>
<span class="sourceLineNo">31049</span> while (it.hasNext()) {<a name="line.31049"></a>
<span class="sourceLineNo">31050</span> final double ix = it.aDouble;<a name="line.31050"></a>
<span class="sourceLineNo">31051</span> int ox;<a name="line.31051"></a>
<span class="sourceLineNo">31052</span> ox = (int) toLong(ix);<a name="line.31052"></a>
<span class="sourceLineNo">31053</span> for (int j = 0; j &lt; is; j++) {<a name="line.31053"></a>
<span class="sourceLineNo">31054</span> oai32data[it.oIndex + j] = ox;<a name="line.31054"></a>
<span class="sourceLineNo">31055</span> }<a name="line.31055"></a>
<span class="sourceLineNo">31056</span> }<a name="line.31056"></a>
<span class="sourceLineNo">31057</span> } else {<a name="line.31057"></a>
<span class="sourceLineNo">31058</span> while (it.hasNext()) {<a name="line.31058"></a>
<span class="sourceLineNo">31059</span> final long ix = it.aLong;<a name="line.31059"></a>
<span class="sourceLineNo">31060</span> int ox;<a name="line.31060"></a>
<span class="sourceLineNo">31061</span> ox = (int) toLong(ix);<a name="line.31061"></a>
<span class="sourceLineNo">31062</span> for (int j = 0; j &lt; is; j++) {<a name="line.31062"></a>
<span class="sourceLineNo">31063</span> oai32data[it.oIndex + j] = ox;<a name="line.31063"></a>
<span class="sourceLineNo">31064</span> }<a name="line.31064"></a>
<span class="sourceLineNo">31065</span> }<a name="line.31065"></a>
<span class="sourceLineNo">31066</span> }<a name="line.31066"></a>
<span class="sourceLineNo">31067</span> } else {<a name="line.31067"></a>
<span class="sourceLineNo">31068</span> if (it.isOutputDouble()) {<a name="line.31068"></a>
<span class="sourceLineNo">31069</span> while (it.hasNext()) {<a name="line.31069"></a>
<span class="sourceLineNo">31070</span> for (int j = 0; j &lt; is; j++) {<a name="line.31070"></a>
<span class="sourceLineNo">31071</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.31071"></a>
<span class="sourceLineNo">31072</span> int ox;<a name="line.31072"></a>
<span class="sourceLineNo">31073</span> ox = (int) toLong(ix);<a name="line.31073"></a>
<span class="sourceLineNo">31074</span> oai32data[it.oIndex + j] = ox;<a name="line.31074"></a>
<span class="sourceLineNo">31075</span> }<a name="line.31075"></a>
<span class="sourceLineNo">31076</span> }<a name="line.31076"></a>
<span class="sourceLineNo">31077</span> } else {<a name="line.31077"></a>
<span class="sourceLineNo">31078</span> while (it.hasNext()) {<a name="line.31078"></a>
<span class="sourceLineNo">31079</span> for (int j = 0; j &lt; is; j++) {<a name="line.31079"></a>
<span class="sourceLineNo">31080</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.31080"></a>
<span class="sourceLineNo">31081</span> int ox;<a name="line.31081"></a>
<span class="sourceLineNo">31082</span> ox = (int) toLong(ix);<a name="line.31082"></a>
<span class="sourceLineNo">31083</span> oai32data[it.oIndex + j] = ox;<a name="line.31083"></a>
<span class="sourceLineNo">31084</span> }<a name="line.31084"></a>
<span class="sourceLineNo">31085</span> }<a name="line.31085"></a>
<span class="sourceLineNo">31086</span> }<a name="line.31086"></a>
<span class="sourceLineNo">31087</span> }<a name="line.31087"></a>
<span class="sourceLineNo">31088</span> break;<a name="line.31088"></a>
<span class="sourceLineNo">31089</span> case Dataset.FLOAT32:<a name="line.31089"></a>
<span class="sourceLineNo">31090</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.31090"></a>
<span class="sourceLineNo">31091</span> if (it.isOutputDouble()) {<a name="line.31091"></a>
<span class="sourceLineNo">31092</span> while (it.hasNext()) {<a name="line.31092"></a>
<span class="sourceLineNo">31093</span> final double ix = it.aDouble;<a name="line.31093"></a>
<span class="sourceLineNo">31094</span> float ox;<a name="line.31094"></a>
<span class="sourceLineNo">31095</span> ox = (float) (Math.ceil(ix));<a name="line.31095"></a>
<span class="sourceLineNo">31096</span> of32data[it.oIndex] = ox;<a name="line.31096"></a>
<span class="sourceLineNo">31097</span> }<a name="line.31097"></a>
<span class="sourceLineNo">31098</span> } else {<a name="line.31098"></a>
<span class="sourceLineNo">31099</span> while (it.hasNext()) {<a name="line.31099"></a>
<span class="sourceLineNo">31100</span> final long ix = it.aLong;<a name="line.31100"></a>
<span class="sourceLineNo">31101</span> float ox;<a name="line.31101"></a>
<span class="sourceLineNo">31102</span> ox = (float) (Math.ceil(ix));<a name="line.31102"></a>
<span class="sourceLineNo">31103</span> of32data[it.oIndex] = ox;<a name="line.31103"></a>
<span class="sourceLineNo">31104</span> }<a name="line.31104"></a>
<span class="sourceLineNo">31105</span> }<a name="line.31105"></a>
<span class="sourceLineNo">31106</span> break;<a name="line.31106"></a>
<span class="sourceLineNo">31107</span> case Dataset.FLOAT64:<a name="line.31107"></a>
<span class="sourceLineNo">31108</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.31108"></a>
<span class="sourceLineNo">31109</span> if (it.isOutputDouble()) {<a name="line.31109"></a>
<span class="sourceLineNo">31110</span> while (it.hasNext()) {<a name="line.31110"></a>
<span class="sourceLineNo">31111</span> final double ix = it.aDouble;<a name="line.31111"></a>
<span class="sourceLineNo">31112</span> double ox;<a name="line.31112"></a>
<span class="sourceLineNo">31113</span> ox = (Math.ceil(ix));<a name="line.31113"></a>
<span class="sourceLineNo">31114</span> of64data[it.oIndex] = ox;<a name="line.31114"></a>
<span class="sourceLineNo">31115</span> }<a name="line.31115"></a>
<span class="sourceLineNo">31116</span> } else {<a name="line.31116"></a>
<span class="sourceLineNo">31117</span> while (it.hasNext()) {<a name="line.31117"></a>
<span class="sourceLineNo">31118</span> final long ix = it.aLong;<a name="line.31118"></a>
<span class="sourceLineNo">31119</span> double ox;<a name="line.31119"></a>
<span class="sourceLineNo">31120</span> ox = (Math.ceil(ix));<a name="line.31120"></a>
<span class="sourceLineNo">31121</span> of64data[it.oIndex] = ox;<a name="line.31121"></a>
<span class="sourceLineNo">31122</span> }<a name="line.31122"></a>
<span class="sourceLineNo">31123</span> }<a name="line.31123"></a>
<span class="sourceLineNo">31124</span> break;<a name="line.31124"></a>
<span class="sourceLineNo">31125</span> case Dataset.ARRAYFLOAT32:<a name="line.31125"></a>
<span class="sourceLineNo">31126</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.31126"></a>
<span class="sourceLineNo">31127</span> if (is == 1) {<a name="line.31127"></a>
<span class="sourceLineNo">31128</span> if (it.isOutputDouble()) {<a name="line.31128"></a>
<span class="sourceLineNo">31129</span> while (it.hasNext()) {<a name="line.31129"></a>
<span class="sourceLineNo">31130</span> final double ix = it.aDouble;<a name="line.31130"></a>
<span class="sourceLineNo">31131</span> float ox;<a name="line.31131"></a>
<span class="sourceLineNo">31132</span> ox = (float) (Math.ceil(ix));<a name="line.31132"></a>
<span class="sourceLineNo">31133</span> oaf32data[it.oIndex] = ox;<a name="line.31133"></a>
<span class="sourceLineNo">31134</span> }<a name="line.31134"></a>
<span class="sourceLineNo">31135</span> } else {<a name="line.31135"></a>
<span class="sourceLineNo">31136</span> while (it.hasNext()) {<a name="line.31136"></a>
<span class="sourceLineNo">31137</span> final long ix = it.aLong;<a name="line.31137"></a>
<span class="sourceLineNo">31138</span> float ox;<a name="line.31138"></a>
<span class="sourceLineNo">31139</span> ox = (float) (Math.ceil(ix));<a name="line.31139"></a>
<span class="sourceLineNo">31140</span> oaf32data[it.oIndex] = ox;<a name="line.31140"></a>
<span class="sourceLineNo">31141</span> }<a name="line.31141"></a>
<span class="sourceLineNo">31142</span> }<a name="line.31142"></a>
<span class="sourceLineNo">31143</span> } else if (as == 1) {<a name="line.31143"></a>
<span class="sourceLineNo">31144</span> if (it.isOutputDouble()) {<a name="line.31144"></a>
<span class="sourceLineNo">31145</span> while (it.hasNext()) {<a name="line.31145"></a>
<span class="sourceLineNo">31146</span> final double ix = it.aDouble;<a name="line.31146"></a>
<span class="sourceLineNo">31147</span> float ox;<a name="line.31147"></a>
<span class="sourceLineNo">31148</span> ox = (float) (Math.ceil(ix));<a name="line.31148"></a>
<span class="sourceLineNo">31149</span> for (int j = 0; j &lt; is; j++) {<a name="line.31149"></a>
<span class="sourceLineNo">31150</span> oaf32data[it.oIndex + j] = ox;<a name="line.31150"></a>
<span class="sourceLineNo">31151</span> }<a name="line.31151"></a>
<span class="sourceLineNo">31152</span> }<a name="line.31152"></a>
<span class="sourceLineNo">31153</span> } else {<a name="line.31153"></a>
<span class="sourceLineNo">31154</span> while (it.hasNext()) {<a name="line.31154"></a>
<span class="sourceLineNo">31155</span> final long ix = it.aLong;<a name="line.31155"></a>
<span class="sourceLineNo">31156</span> float ox;<a name="line.31156"></a>
<span class="sourceLineNo">31157</span> ox = (float) (Math.ceil(ix));<a name="line.31157"></a>
<span class="sourceLineNo">31158</span> for (int j = 0; j &lt; is; j++) {<a name="line.31158"></a>
<span class="sourceLineNo">31159</span> oaf32data[it.oIndex + j] = ox;<a name="line.31159"></a>
<span class="sourceLineNo">31160</span> }<a name="line.31160"></a>
<span class="sourceLineNo">31161</span> }<a name="line.31161"></a>
<span class="sourceLineNo">31162</span> }<a name="line.31162"></a>
<span class="sourceLineNo">31163</span> } else {<a name="line.31163"></a>
<span class="sourceLineNo">31164</span> if (it.isOutputDouble()) {<a name="line.31164"></a>
<span class="sourceLineNo">31165</span> while (it.hasNext()) {<a name="line.31165"></a>
<span class="sourceLineNo">31166</span> for (int j = 0; j &lt; is; j++) {<a name="line.31166"></a>
<span class="sourceLineNo">31167</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.31167"></a>
<span class="sourceLineNo">31168</span> float ox;<a name="line.31168"></a>
<span class="sourceLineNo">31169</span> ox = (float) (Math.ceil(ix));<a name="line.31169"></a>
<span class="sourceLineNo">31170</span> oaf32data[it.oIndex + j] = ox;<a name="line.31170"></a>
<span class="sourceLineNo">31171</span> }<a name="line.31171"></a>
<span class="sourceLineNo">31172</span> }<a name="line.31172"></a>
<span class="sourceLineNo">31173</span> } else {<a name="line.31173"></a>
<span class="sourceLineNo">31174</span> while (it.hasNext()) {<a name="line.31174"></a>
<span class="sourceLineNo">31175</span> for (int j = 0; j &lt; is; j++) {<a name="line.31175"></a>
<span class="sourceLineNo">31176</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.31176"></a>
<span class="sourceLineNo">31177</span> float ox;<a name="line.31177"></a>
<span class="sourceLineNo">31178</span> ox = (float) (Math.ceil(ix));<a name="line.31178"></a>
<span class="sourceLineNo">31179</span> oaf32data[it.oIndex + j] = ox;<a name="line.31179"></a>
<span class="sourceLineNo">31180</span> }<a name="line.31180"></a>
<span class="sourceLineNo">31181</span> }<a name="line.31181"></a>
<span class="sourceLineNo">31182</span> }<a name="line.31182"></a>
<span class="sourceLineNo">31183</span> }<a name="line.31183"></a>
<span class="sourceLineNo">31184</span> break;<a name="line.31184"></a>
<span class="sourceLineNo">31185</span> case Dataset.ARRAYFLOAT64:<a name="line.31185"></a>
<span class="sourceLineNo">31186</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.31186"></a>
<span class="sourceLineNo">31187</span> if (is == 1) {<a name="line.31187"></a>
<span class="sourceLineNo">31188</span> if (it.isOutputDouble()) {<a name="line.31188"></a>
<span class="sourceLineNo">31189</span> while (it.hasNext()) {<a name="line.31189"></a>
<span class="sourceLineNo">31190</span> final double ix = it.aDouble;<a name="line.31190"></a>
<span class="sourceLineNo">31191</span> double ox;<a name="line.31191"></a>
<span class="sourceLineNo">31192</span> ox = (Math.ceil(ix));<a name="line.31192"></a>
<span class="sourceLineNo">31193</span> oaf64data[it.oIndex] = ox;<a name="line.31193"></a>
<span class="sourceLineNo">31194</span> }<a name="line.31194"></a>
<span class="sourceLineNo">31195</span> } else {<a name="line.31195"></a>
<span class="sourceLineNo">31196</span> while (it.hasNext()) {<a name="line.31196"></a>
<span class="sourceLineNo">31197</span> final long ix = it.aLong;<a name="line.31197"></a>
<span class="sourceLineNo">31198</span> double ox;<a name="line.31198"></a>
<span class="sourceLineNo">31199</span> ox = (Math.ceil(ix));<a name="line.31199"></a>
<span class="sourceLineNo">31200</span> oaf64data[it.oIndex] = ox;<a name="line.31200"></a>
<span class="sourceLineNo">31201</span> }<a name="line.31201"></a>
<span class="sourceLineNo">31202</span> }<a name="line.31202"></a>
<span class="sourceLineNo">31203</span> } else if (as == 1) {<a name="line.31203"></a>
<span class="sourceLineNo">31204</span> if (it.isOutputDouble()) {<a name="line.31204"></a>
<span class="sourceLineNo">31205</span> while (it.hasNext()) {<a name="line.31205"></a>
<span class="sourceLineNo">31206</span> final double ix = it.aDouble;<a name="line.31206"></a>
<span class="sourceLineNo">31207</span> double ox;<a name="line.31207"></a>
<span class="sourceLineNo">31208</span> ox = (Math.ceil(ix));<a name="line.31208"></a>
<span class="sourceLineNo">31209</span> for (int j = 0; j &lt; is; j++) {<a name="line.31209"></a>
<span class="sourceLineNo">31210</span> oaf64data[it.oIndex + j] = ox;<a name="line.31210"></a>
<span class="sourceLineNo">31211</span> }<a name="line.31211"></a>
<span class="sourceLineNo">31212</span> }<a name="line.31212"></a>
<span class="sourceLineNo">31213</span> } else {<a name="line.31213"></a>
<span class="sourceLineNo">31214</span> while (it.hasNext()) {<a name="line.31214"></a>
<span class="sourceLineNo">31215</span> final long ix = it.aLong;<a name="line.31215"></a>
<span class="sourceLineNo">31216</span> double ox;<a name="line.31216"></a>
<span class="sourceLineNo">31217</span> ox = (Math.ceil(ix));<a name="line.31217"></a>
<span class="sourceLineNo">31218</span> for (int j = 0; j &lt; is; j++) {<a name="line.31218"></a>
<span class="sourceLineNo">31219</span> oaf64data[it.oIndex + j] = ox;<a name="line.31219"></a>
<span class="sourceLineNo">31220</span> }<a name="line.31220"></a>
<span class="sourceLineNo">31221</span> }<a name="line.31221"></a>
<span class="sourceLineNo">31222</span> }<a name="line.31222"></a>
<span class="sourceLineNo">31223</span> } else {<a name="line.31223"></a>
<span class="sourceLineNo">31224</span> if (it.isOutputDouble()) {<a name="line.31224"></a>
<span class="sourceLineNo">31225</span> while (it.hasNext()) {<a name="line.31225"></a>
<span class="sourceLineNo">31226</span> for (int j = 0; j &lt; is; j++) {<a name="line.31226"></a>
<span class="sourceLineNo">31227</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.31227"></a>
<span class="sourceLineNo">31228</span> double ox;<a name="line.31228"></a>
<span class="sourceLineNo">31229</span> ox = (Math.ceil(ix));<a name="line.31229"></a>
<span class="sourceLineNo">31230</span> oaf64data[it.oIndex + j] = ox;<a name="line.31230"></a>
<span class="sourceLineNo">31231</span> }<a name="line.31231"></a>
<span class="sourceLineNo">31232</span> }<a name="line.31232"></a>
<span class="sourceLineNo">31233</span> } else {<a name="line.31233"></a>
<span class="sourceLineNo">31234</span> while (it.hasNext()) {<a name="line.31234"></a>
<span class="sourceLineNo">31235</span> for (int j = 0; j &lt; is; j++) {<a name="line.31235"></a>
<span class="sourceLineNo">31236</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.31236"></a>
<span class="sourceLineNo">31237</span> double ox;<a name="line.31237"></a>
<span class="sourceLineNo">31238</span> ox = (Math.ceil(ix));<a name="line.31238"></a>
<span class="sourceLineNo">31239</span> oaf64data[it.oIndex + j] = ox;<a name="line.31239"></a>
<span class="sourceLineNo">31240</span> }<a name="line.31240"></a>
<span class="sourceLineNo">31241</span> }<a name="line.31241"></a>
<span class="sourceLineNo">31242</span> }<a name="line.31242"></a>
<span class="sourceLineNo">31243</span> }<a name="line.31243"></a>
<span class="sourceLineNo">31244</span> break;<a name="line.31244"></a>
<span class="sourceLineNo">31245</span> case Dataset.COMPLEX64:<a name="line.31245"></a>
<span class="sourceLineNo">31246</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.31246"></a>
<span class="sourceLineNo">31247</span> if (!da.isComplex()) {<a name="line.31247"></a>
<span class="sourceLineNo">31248</span> if (it.isOutputDouble()) {<a name="line.31248"></a>
<span class="sourceLineNo">31249</span> final double iy = 0;<a name="line.31249"></a>
<span class="sourceLineNo">31250</span> while (it.hasNext()) {<a name="line.31250"></a>
<span class="sourceLineNo">31251</span> final double ix = it.aDouble;<a name="line.31251"></a>
<span class="sourceLineNo">31252</span> float ox;<a name="line.31252"></a>
<span class="sourceLineNo">31253</span> float oy;<a name="line.31253"></a>
<span class="sourceLineNo">31254</span> ox = (float) (Math.ceil(ix));<a name="line.31254"></a>
<span class="sourceLineNo">31255</span> oy = (float) (Math.ceil(iy));<a name="line.31255"></a>
<span class="sourceLineNo">31256</span> oc64data[it.oIndex] = ox;<a name="line.31256"></a>
<span class="sourceLineNo">31257</span> oc64data[it.oIndex + 1] = oy;<a name="line.31257"></a>
<span class="sourceLineNo">31258</span> }<a name="line.31258"></a>
<span class="sourceLineNo">31259</span> } else {<a name="line.31259"></a>
<span class="sourceLineNo">31260</span> final long iy = 0;<a name="line.31260"></a>
<span class="sourceLineNo">31261</span> while (it.hasNext()) {<a name="line.31261"></a>
<span class="sourceLineNo">31262</span> final long ix = it.aLong;<a name="line.31262"></a>
<span class="sourceLineNo">31263</span> float ox;<a name="line.31263"></a>
<span class="sourceLineNo">31264</span> float oy;<a name="line.31264"></a>
<span class="sourceLineNo">31265</span> ox = (float) toLong(Math.ceil(ix));<a name="line.31265"></a>
<span class="sourceLineNo">31266</span> oy = (float) toLong(Math.ceil(iy));<a name="line.31266"></a>
<span class="sourceLineNo">31267</span> oc64data[it.oIndex] = ox;<a name="line.31267"></a>
<span class="sourceLineNo">31268</span> oc64data[it.oIndex + 1] = oy;<a name="line.31268"></a>
<span class="sourceLineNo">31269</span> }<a name="line.31269"></a>
<span class="sourceLineNo">31270</span> }<a name="line.31270"></a>
<span class="sourceLineNo">31271</span> } else {<a name="line.31271"></a>
<span class="sourceLineNo">31272</span> while (it.hasNext()) {<a name="line.31272"></a>
<span class="sourceLineNo">31273</span> final double ix = it.aDouble;<a name="line.31273"></a>
<span class="sourceLineNo">31274</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.31274"></a>
<span class="sourceLineNo">31275</span> float ox;<a name="line.31275"></a>
<span class="sourceLineNo">31276</span> float oy;<a name="line.31276"></a>
<span class="sourceLineNo">31277</span> ox = (float) (Math.ceil(ix));<a name="line.31277"></a>
<span class="sourceLineNo">31278</span> oy = (float) (Math.ceil(iy));<a name="line.31278"></a>
<span class="sourceLineNo">31279</span> oc64data[it.oIndex] = ox;<a name="line.31279"></a>
<span class="sourceLineNo">31280</span> oc64data[it.oIndex + 1] = oy;<a name="line.31280"></a>
<span class="sourceLineNo">31281</span> }<a name="line.31281"></a>
<span class="sourceLineNo">31282</span> }<a name="line.31282"></a>
<span class="sourceLineNo">31283</span> break;<a name="line.31283"></a>
<span class="sourceLineNo">31284</span> case Dataset.COMPLEX128:<a name="line.31284"></a>
<span class="sourceLineNo">31285</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.31285"></a>
<span class="sourceLineNo">31286</span> if (!da.isComplex()) {<a name="line.31286"></a>
<span class="sourceLineNo">31287</span> if (it.isOutputDouble()) {<a name="line.31287"></a>
<span class="sourceLineNo">31288</span> final double iy = 0;<a name="line.31288"></a>
<span class="sourceLineNo">31289</span> while (it.hasNext()) {<a name="line.31289"></a>
<span class="sourceLineNo">31290</span> final double ix = it.aDouble;<a name="line.31290"></a>
<span class="sourceLineNo">31291</span> double ox;<a name="line.31291"></a>
<span class="sourceLineNo">31292</span> double oy;<a name="line.31292"></a>
<span class="sourceLineNo">31293</span> ox = (Math.ceil(ix));<a name="line.31293"></a>
<span class="sourceLineNo">31294</span> oy = (Math.ceil(iy));<a name="line.31294"></a>
<span class="sourceLineNo">31295</span> oc128data[it.oIndex] = ox;<a name="line.31295"></a>
<span class="sourceLineNo">31296</span> oc128data[it.oIndex + 1] = oy;<a name="line.31296"></a>
<span class="sourceLineNo">31297</span> }<a name="line.31297"></a>
<span class="sourceLineNo">31298</span> } else {<a name="line.31298"></a>
<span class="sourceLineNo">31299</span> final long iy = 0;<a name="line.31299"></a>
<span class="sourceLineNo">31300</span> while (it.hasNext()) {<a name="line.31300"></a>
<span class="sourceLineNo">31301</span> final long ix = it.aLong;<a name="line.31301"></a>
<span class="sourceLineNo">31302</span> double ox;<a name="line.31302"></a>
<span class="sourceLineNo">31303</span> double oy;<a name="line.31303"></a>
<span class="sourceLineNo">31304</span> ox = (double) (Math.ceil(ix));<a name="line.31304"></a>
<span class="sourceLineNo">31305</span> oy = (double) (Math.ceil(iy));<a name="line.31305"></a>
<span class="sourceLineNo">31306</span> oc128data[it.oIndex] = ox;<a name="line.31306"></a>
<span class="sourceLineNo">31307</span> oc128data[it.oIndex + 1] = oy;<a name="line.31307"></a>
<span class="sourceLineNo">31308</span> }<a name="line.31308"></a>
<span class="sourceLineNo">31309</span> }<a name="line.31309"></a>
<span class="sourceLineNo">31310</span> } else {<a name="line.31310"></a>
<span class="sourceLineNo">31311</span> while (it.hasNext()) {<a name="line.31311"></a>
<span class="sourceLineNo">31312</span> final double ix = it.aDouble;<a name="line.31312"></a>
<span class="sourceLineNo">31313</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.31313"></a>
<span class="sourceLineNo">31314</span> double ox;<a name="line.31314"></a>
<span class="sourceLineNo">31315</span> double oy;<a name="line.31315"></a>
<span class="sourceLineNo">31316</span> ox = (Math.ceil(ix));<a name="line.31316"></a>
<span class="sourceLineNo">31317</span> oy = (Math.ceil(iy));<a name="line.31317"></a>
<span class="sourceLineNo">31318</span> oc128data[it.oIndex] = ox;<a name="line.31318"></a>
<span class="sourceLineNo">31319</span> oc128data[it.oIndex + 1] = oy;<a name="line.31319"></a>
<span class="sourceLineNo">31320</span> }<a name="line.31320"></a>
<span class="sourceLineNo">31321</span> }<a name="line.31321"></a>
<span class="sourceLineNo">31322</span> break;<a name="line.31322"></a>
<span class="sourceLineNo">31323</span> default:<a name="line.31323"></a>
<span class="sourceLineNo">31324</span> throw new IllegalArgumentException("ceil supports integer, compound integer, real, compound real, complex datasets only");<a name="line.31324"></a>
<span class="sourceLineNo">31325</span> }<a name="line.31325"></a>
<span class="sourceLineNo">31326</span><a name="line.31326"></a>
<span class="sourceLineNo">31327</span> addFunctionName(result, "ceil");<a name="line.31327"></a>
<span class="sourceLineNo">31328</span> return result;<a name="line.31328"></a>
<span class="sourceLineNo">31329</span> }<a name="line.31329"></a>
<span class="sourceLineNo">31330</span><a name="line.31330"></a>
<span class="sourceLineNo">31331</span> /**<a name="line.31331"></a>
<span class="sourceLineNo">31332</span> * rint - round each element of the dataset<a name="line.31332"></a>
<span class="sourceLineNo">31333</span> * @param a<a name="line.31333"></a>
<span class="sourceLineNo">31334</span> * @return dataset<a name="line.31334"></a>
<span class="sourceLineNo">31335</span> */<a name="line.31335"></a>
<span class="sourceLineNo">31336</span> public static Dataset rint(final Object a) {<a name="line.31336"></a>
<span class="sourceLineNo">31337</span> return rint(a, null);<a name="line.31337"></a>
<span class="sourceLineNo">31338</span> }<a name="line.31338"></a>
<span class="sourceLineNo">31339</span><a name="line.31339"></a>
<span class="sourceLineNo">31340</span> /**<a name="line.31340"></a>
<span class="sourceLineNo">31341</span> * rint - round each element of the dataset<a name="line.31341"></a>
<span class="sourceLineNo">31342</span> * @param a<a name="line.31342"></a>
<span class="sourceLineNo">31343</span> * @param o output can be null - in which case, a new dataset is created<a name="line.31343"></a>
<span class="sourceLineNo">31344</span> * @return dataset<a name="line.31344"></a>
<span class="sourceLineNo">31345</span> */<a name="line.31345"></a>
<span class="sourceLineNo">31346</span> public static Dataset rint(final Object a, final Dataset o) {<a name="line.31346"></a>
<span class="sourceLineNo">31347</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.31347"></a>
<span class="sourceLineNo">31348</span> SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true);<a name="line.31348"></a>
<span class="sourceLineNo">31349</span> final Dataset result = it.getOutput();<a name="line.31349"></a>
<span class="sourceLineNo">31350</span> if (!result.isComplex()) {<a name="line.31350"></a>
<span class="sourceLineNo">31351</span> if (da.isComplex()) {<a name="line.31351"></a>
<span class="sourceLineNo">31352</span> da = da.getRealView();<a name="line.31352"></a>
<span class="sourceLineNo">31353</span> it = new SingleInputBroadcastIterator(da, result, true);<a name="line.31353"></a>
<span class="sourceLineNo">31354</span> }<a name="line.31354"></a>
<span class="sourceLineNo">31355</span> }<a name="line.31355"></a>
<span class="sourceLineNo">31356</span> final int is = result.getElementsPerItem();<a name="line.31356"></a>
<span class="sourceLineNo">31357</span> final int as = da.getElementsPerItem();<a name="line.31357"></a>
<span class="sourceLineNo">31358</span> final int dt = result.getDType();<a name="line.31358"></a>
<span class="sourceLineNo">31359</span><a name="line.31359"></a>
<span class="sourceLineNo">31360</span> switch(dt) {<a name="line.31360"></a>
<span class="sourceLineNo">31361</span> case Dataset.INT8:<a name="line.31361"></a>
<span class="sourceLineNo">31362</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.31362"></a>
<span class="sourceLineNo">31363</span> if (it.isOutputDouble()) {<a name="line.31363"></a>
<span class="sourceLineNo">31364</span> while (it.hasNext()) {<a name="line.31364"></a>
<span class="sourceLineNo">31365</span> final double ix = it.aDouble;<a name="line.31365"></a>
<span class="sourceLineNo">31366</span> byte ox;<a name="line.31366"></a>
<span class="sourceLineNo">31367</span> ox = (byte) toLong(ix);<a name="line.31367"></a>
<span class="sourceLineNo">31368</span> oi8data[it.oIndex] = ox;<a name="line.31368"></a>
<span class="sourceLineNo">31369</span> }<a name="line.31369"></a>
<span class="sourceLineNo">31370</span> } else {<a name="line.31370"></a>
<span class="sourceLineNo">31371</span> while (it.hasNext()) {<a name="line.31371"></a>
<span class="sourceLineNo">31372</span> final long ix = it.aLong;<a name="line.31372"></a>
<span class="sourceLineNo">31373</span> byte ox;<a name="line.31373"></a>
<span class="sourceLineNo">31374</span> ox = (byte) toLong(ix);<a name="line.31374"></a>
<span class="sourceLineNo">31375</span> oi8data[it.oIndex] = ox;<a name="line.31375"></a>
<span class="sourceLineNo">31376</span> }<a name="line.31376"></a>
<span class="sourceLineNo">31377</span> }<a name="line.31377"></a>
<span class="sourceLineNo">31378</span> break;<a name="line.31378"></a>
<span class="sourceLineNo">31379</span> case Dataset.INT16:<a name="line.31379"></a>
<span class="sourceLineNo">31380</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.31380"></a>
<span class="sourceLineNo">31381</span> if (it.isOutputDouble()) {<a name="line.31381"></a>
<span class="sourceLineNo">31382</span> while (it.hasNext()) {<a name="line.31382"></a>
<span class="sourceLineNo">31383</span> final double ix = it.aDouble;<a name="line.31383"></a>
<span class="sourceLineNo">31384</span> short ox;<a name="line.31384"></a>
<span class="sourceLineNo">31385</span> ox = (short) toLong(ix);<a name="line.31385"></a>
<span class="sourceLineNo">31386</span> oi16data[it.oIndex] = ox;<a name="line.31386"></a>
<span class="sourceLineNo">31387</span> }<a name="line.31387"></a>
<span class="sourceLineNo">31388</span> } else {<a name="line.31388"></a>
<span class="sourceLineNo">31389</span> while (it.hasNext()) {<a name="line.31389"></a>
<span class="sourceLineNo">31390</span> final long ix = it.aLong;<a name="line.31390"></a>
<span class="sourceLineNo">31391</span> short ox;<a name="line.31391"></a>
<span class="sourceLineNo">31392</span> ox = (short) toLong(ix);<a name="line.31392"></a>
<span class="sourceLineNo">31393</span> oi16data[it.oIndex] = ox;<a name="line.31393"></a>
<span class="sourceLineNo">31394</span> }<a name="line.31394"></a>
<span class="sourceLineNo">31395</span> }<a name="line.31395"></a>
<span class="sourceLineNo">31396</span> break;<a name="line.31396"></a>
<span class="sourceLineNo">31397</span> case Dataset.INT64:<a name="line.31397"></a>
<span class="sourceLineNo">31398</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.31398"></a>
<span class="sourceLineNo">31399</span> if (it.isOutputDouble()) {<a name="line.31399"></a>
<span class="sourceLineNo">31400</span> while (it.hasNext()) {<a name="line.31400"></a>
<span class="sourceLineNo">31401</span> final double ix = it.aDouble;<a name="line.31401"></a>
<span class="sourceLineNo">31402</span> long ox;<a name="line.31402"></a>
<span class="sourceLineNo">31403</span> ox = toLong(ix);<a name="line.31403"></a>
<span class="sourceLineNo">31404</span> oi64data[it.oIndex] = ox;<a name="line.31404"></a>
<span class="sourceLineNo">31405</span> }<a name="line.31405"></a>
<span class="sourceLineNo">31406</span> } else {<a name="line.31406"></a>
<span class="sourceLineNo">31407</span> while (it.hasNext()) {<a name="line.31407"></a>
<span class="sourceLineNo">31408</span> final long ix = it.aLong;<a name="line.31408"></a>
<span class="sourceLineNo">31409</span> long ox;<a name="line.31409"></a>
<span class="sourceLineNo">31410</span> ox = toLong(ix);<a name="line.31410"></a>
<span class="sourceLineNo">31411</span> oi64data[it.oIndex] = ox;<a name="line.31411"></a>
<span class="sourceLineNo">31412</span> }<a name="line.31412"></a>
<span class="sourceLineNo">31413</span> }<a name="line.31413"></a>
<span class="sourceLineNo">31414</span> break;<a name="line.31414"></a>
<span class="sourceLineNo">31415</span> case Dataset.INT32:<a name="line.31415"></a>
<span class="sourceLineNo">31416</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.31416"></a>
<span class="sourceLineNo">31417</span> if (it.isOutputDouble()) {<a name="line.31417"></a>
<span class="sourceLineNo">31418</span> while (it.hasNext()) {<a name="line.31418"></a>
<span class="sourceLineNo">31419</span> final double ix = it.aDouble;<a name="line.31419"></a>
<span class="sourceLineNo">31420</span> int ox;<a name="line.31420"></a>
<span class="sourceLineNo">31421</span> ox = (int) toLong(ix);<a name="line.31421"></a>
<span class="sourceLineNo">31422</span> oi32data[it.oIndex] = ox;<a name="line.31422"></a>
<span class="sourceLineNo">31423</span> }<a name="line.31423"></a>
<span class="sourceLineNo">31424</span> } else {<a name="line.31424"></a>
<span class="sourceLineNo">31425</span> while (it.hasNext()) {<a name="line.31425"></a>
<span class="sourceLineNo">31426</span> final long ix = it.aLong;<a name="line.31426"></a>
<span class="sourceLineNo">31427</span> int ox;<a name="line.31427"></a>
<span class="sourceLineNo">31428</span> ox = (int) toLong(ix);<a name="line.31428"></a>
<span class="sourceLineNo">31429</span> oi32data[it.oIndex] = ox;<a name="line.31429"></a>
<span class="sourceLineNo">31430</span> }<a name="line.31430"></a>
<span class="sourceLineNo">31431</span> }<a name="line.31431"></a>
<span class="sourceLineNo">31432</span> break;<a name="line.31432"></a>
<span class="sourceLineNo">31433</span> case Dataset.ARRAYINT8:<a name="line.31433"></a>
<span class="sourceLineNo">31434</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.31434"></a>
<span class="sourceLineNo">31435</span> if (is == 1) {<a name="line.31435"></a>
<span class="sourceLineNo">31436</span> if (it.isOutputDouble()) {<a name="line.31436"></a>
<span class="sourceLineNo">31437</span> while (it.hasNext()) {<a name="line.31437"></a>
<span class="sourceLineNo">31438</span> final double ix = it.aDouble;<a name="line.31438"></a>
<span class="sourceLineNo">31439</span> byte ox;<a name="line.31439"></a>
<span class="sourceLineNo">31440</span> ox = (byte) toLong(ix);<a name="line.31440"></a>
<span class="sourceLineNo">31441</span> oai8data[it.oIndex] = ox;<a name="line.31441"></a>
<span class="sourceLineNo">31442</span> }<a name="line.31442"></a>
<span class="sourceLineNo">31443</span> } else {<a name="line.31443"></a>
<span class="sourceLineNo">31444</span> while (it.hasNext()) {<a name="line.31444"></a>
<span class="sourceLineNo">31445</span> final long ix = it.aLong;<a name="line.31445"></a>
<span class="sourceLineNo">31446</span> byte ox;<a name="line.31446"></a>
<span class="sourceLineNo">31447</span> ox = (byte) toLong(ix);<a name="line.31447"></a>
<span class="sourceLineNo">31448</span> oai8data[it.oIndex] = ox;<a name="line.31448"></a>
<span class="sourceLineNo">31449</span> }<a name="line.31449"></a>
<span class="sourceLineNo">31450</span> }<a name="line.31450"></a>
<span class="sourceLineNo">31451</span> } else if (as == 1) {<a name="line.31451"></a>
<span class="sourceLineNo">31452</span> if (it.isOutputDouble()) {<a name="line.31452"></a>
<span class="sourceLineNo">31453</span> while (it.hasNext()) {<a name="line.31453"></a>
<span class="sourceLineNo">31454</span> final double ix = it.aDouble;<a name="line.31454"></a>
<span class="sourceLineNo">31455</span> byte ox;<a name="line.31455"></a>
<span class="sourceLineNo">31456</span> ox = (byte) toLong(ix);<a name="line.31456"></a>
<span class="sourceLineNo">31457</span> for (int j = 0; j &lt; is; j++) {<a name="line.31457"></a>
<span class="sourceLineNo">31458</span> oai8data[it.oIndex + j] = ox;<a name="line.31458"></a>
<span class="sourceLineNo">31459</span> }<a name="line.31459"></a>
<span class="sourceLineNo">31460</span> }<a name="line.31460"></a>
<span class="sourceLineNo">31461</span> } else {<a name="line.31461"></a>
<span class="sourceLineNo">31462</span> while (it.hasNext()) {<a name="line.31462"></a>
<span class="sourceLineNo">31463</span> final long ix = it.aLong;<a name="line.31463"></a>
<span class="sourceLineNo">31464</span> byte ox;<a name="line.31464"></a>
<span class="sourceLineNo">31465</span> ox = (byte) toLong(ix);<a name="line.31465"></a>
<span class="sourceLineNo">31466</span> for (int j = 0; j &lt; is; j++) {<a name="line.31466"></a>
<span class="sourceLineNo">31467</span> oai8data[it.oIndex + j] = ox;<a name="line.31467"></a>
<span class="sourceLineNo">31468</span> }<a name="line.31468"></a>
<span class="sourceLineNo">31469</span> }<a name="line.31469"></a>
<span class="sourceLineNo">31470</span> }<a name="line.31470"></a>
<span class="sourceLineNo">31471</span> } else {<a name="line.31471"></a>
<span class="sourceLineNo">31472</span> if (it.isOutputDouble()) {<a name="line.31472"></a>
<span class="sourceLineNo">31473</span> while (it.hasNext()) {<a name="line.31473"></a>
<span class="sourceLineNo">31474</span> for (int j = 0; j &lt; is; j++) {<a name="line.31474"></a>
<span class="sourceLineNo">31475</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.31475"></a>
<span class="sourceLineNo">31476</span> byte ox;<a name="line.31476"></a>
<span class="sourceLineNo">31477</span> ox = (byte) toLong(ix);<a name="line.31477"></a>
<span class="sourceLineNo">31478</span> oai8data[it.oIndex + j] = ox;<a name="line.31478"></a>
<span class="sourceLineNo">31479</span> }<a name="line.31479"></a>
<span class="sourceLineNo">31480</span> }<a name="line.31480"></a>
<span class="sourceLineNo">31481</span> } else {<a name="line.31481"></a>
<span class="sourceLineNo">31482</span> while (it.hasNext()) {<a name="line.31482"></a>
<span class="sourceLineNo">31483</span> for (int j = 0; j &lt; is; j++) {<a name="line.31483"></a>
<span class="sourceLineNo">31484</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.31484"></a>
<span class="sourceLineNo">31485</span> byte ox;<a name="line.31485"></a>
<span class="sourceLineNo">31486</span> ox = (byte) toLong(ix);<a name="line.31486"></a>
<span class="sourceLineNo">31487</span> oai8data[it.oIndex + j] = ox;<a name="line.31487"></a>
<span class="sourceLineNo">31488</span> }<a name="line.31488"></a>
<span class="sourceLineNo">31489</span> }<a name="line.31489"></a>
<span class="sourceLineNo">31490</span> }<a name="line.31490"></a>
<span class="sourceLineNo">31491</span> }<a name="line.31491"></a>
<span class="sourceLineNo">31492</span> break;<a name="line.31492"></a>
<span class="sourceLineNo">31493</span> case Dataset.ARRAYINT16:<a name="line.31493"></a>
<span class="sourceLineNo">31494</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.31494"></a>
<span class="sourceLineNo">31495</span> if (is == 1) {<a name="line.31495"></a>
<span class="sourceLineNo">31496</span> if (it.isOutputDouble()) {<a name="line.31496"></a>
<span class="sourceLineNo">31497</span> while (it.hasNext()) {<a name="line.31497"></a>
<span class="sourceLineNo">31498</span> final double ix = it.aDouble;<a name="line.31498"></a>
<span class="sourceLineNo">31499</span> short ox;<a name="line.31499"></a>
<span class="sourceLineNo">31500</span> ox = (short) toLong(ix);<a name="line.31500"></a>
<span class="sourceLineNo">31501</span> oai16data[it.oIndex] = ox;<a name="line.31501"></a>
<span class="sourceLineNo">31502</span> }<a name="line.31502"></a>
<span class="sourceLineNo">31503</span> } else {<a name="line.31503"></a>
<span class="sourceLineNo">31504</span> while (it.hasNext()) {<a name="line.31504"></a>
<span class="sourceLineNo">31505</span> final long ix = it.aLong;<a name="line.31505"></a>
<span class="sourceLineNo">31506</span> short ox;<a name="line.31506"></a>
<span class="sourceLineNo">31507</span> ox = (short) toLong(ix);<a name="line.31507"></a>
<span class="sourceLineNo">31508</span> oai16data[it.oIndex] = ox;<a name="line.31508"></a>
<span class="sourceLineNo">31509</span> }<a name="line.31509"></a>
<span class="sourceLineNo">31510</span> }<a name="line.31510"></a>
<span class="sourceLineNo">31511</span> } else if (as == 1) {<a name="line.31511"></a>
<span class="sourceLineNo">31512</span> if (it.isOutputDouble()) {<a name="line.31512"></a>
<span class="sourceLineNo">31513</span> while (it.hasNext()) {<a name="line.31513"></a>
<span class="sourceLineNo">31514</span> final double ix = it.aDouble;<a name="line.31514"></a>
<span class="sourceLineNo">31515</span> short ox;<a name="line.31515"></a>
<span class="sourceLineNo">31516</span> ox = (short) toLong(ix);<a name="line.31516"></a>
<span class="sourceLineNo">31517</span> for (int j = 0; j &lt; is; j++) {<a name="line.31517"></a>
<span class="sourceLineNo">31518</span> oai16data[it.oIndex + j] = ox;<a name="line.31518"></a>
<span class="sourceLineNo">31519</span> }<a name="line.31519"></a>
<span class="sourceLineNo">31520</span> }<a name="line.31520"></a>
<span class="sourceLineNo">31521</span> } else {<a name="line.31521"></a>
<span class="sourceLineNo">31522</span> while (it.hasNext()) {<a name="line.31522"></a>
<span class="sourceLineNo">31523</span> final long ix = it.aLong;<a name="line.31523"></a>
<span class="sourceLineNo">31524</span> short ox;<a name="line.31524"></a>
<span class="sourceLineNo">31525</span> ox = (short) toLong(ix);<a name="line.31525"></a>
<span class="sourceLineNo">31526</span> for (int j = 0; j &lt; is; j++) {<a name="line.31526"></a>
<span class="sourceLineNo">31527</span> oai16data[it.oIndex + j] = ox;<a name="line.31527"></a>
<span class="sourceLineNo">31528</span> }<a name="line.31528"></a>
<span class="sourceLineNo">31529</span> }<a name="line.31529"></a>
<span class="sourceLineNo">31530</span> }<a name="line.31530"></a>
<span class="sourceLineNo">31531</span> } else {<a name="line.31531"></a>
<span class="sourceLineNo">31532</span> if (it.isOutputDouble()) {<a name="line.31532"></a>
<span class="sourceLineNo">31533</span> while (it.hasNext()) {<a name="line.31533"></a>
<span class="sourceLineNo">31534</span> for (int j = 0; j &lt; is; j++) {<a name="line.31534"></a>
<span class="sourceLineNo">31535</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.31535"></a>
<span class="sourceLineNo">31536</span> short ox;<a name="line.31536"></a>
<span class="sourceLineNo">31537</span> ox = (short) toLong(ix);<a name="line.31537"></a>
<span class="sourceLineNo">31538</span> oai16data[it.oIndex + j] = ox;<a name="line.31538"></a>
<span class="sourceLineNo">31539</span> }<a name="line.31539"></a>
<span class="sourceLineNo">31540</span> }<a name="line.31540"></a>
<span class="sourceLineNo">31541</span> } else {<a name="line.31541"></a>
<span class="sourceLineNo">31542</span> while (it.hasNext()) {<a name="line.31542"></a>
<span class="sourceLineNo">31543</span> for (int j = 0; j &lt; is; j++) {<a name="line.31543"></a>
<span class="sourceLineNo">31544</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.31544"></a>
<span class="sourceLineNo">31545</span> short ox;<a name="line.31545"></a>
<span class="sourceLineNo">31546</span> ox = (short) toLong(ix);<a name="line.31546"></a>
<span class="sourceLineNo">31547</span> oai16data[it.oIndex + j] = ox;<a name="line.31547"></a>
<span class="sourceLineNo">31548</span> }<a name="line.31548"></a>
<span class="sourceLineNo">31549</span> }<a name="line.31549"></a>
<span class="sourceLineNo">31550</span> }<a name="line.31550"></a>
<span class="sourceLineNo">31551</span> }<a name="line.31551"></a>
<span class="sourceLineNo">31552</span> break;<a name="line.31552"></a>
<span class="sourceLineNo">31553</span> case Dataset.ARRAYINT64:<a name="line.31553"></a>
<span class="sourceLineNo">31554</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.31554"></a>
<span class="sourceLineNo">31555</span> if (is == 1) {<a name="line.31555"></a>
<span class="sourceLineNo">31556</span> if (it.isOutputDouble()) {<a name="line.31556"></a>
<span class="sourceLineNo">31557</span> while (it.hasNext()) {<a name="line.31557"></a>
<span class="sourceLineNo">31558</span> final double ix = it.aDouble;<a name="line.31558"></a>
<span class="sourceLineNo">31559</span> long ox;<a name="line.31559"></a>
<span class="sourceLineNo">31560</span> ox = toLong(ix);<a name="line.31560"></a>
<span class="sourceLineNo">31561</span> oai64data[it.oIndex] = ox;<a name="line.31561"></a>
<span class="sourceLineNo">31562</span> }<a name="line.31562"></a>
<span class="sourceLineNo">31563</span> } else {<a name="line.31563"></a>
<span class="sourceLineNo">31564</span> while (it.hasNext()) {<a name="line.31564"></a>
<span class="sourceLineNo">31565</span> final long ix = it.aLong;<a name="line.31565"></a>
<span class="sourceLineNo">31566</span> long ox;<a name="line.31566"></a>
<span class="sourceLineNo">31567</span> ox = toLong(ix);<a name="line.31567"></a>
<span class="sourceLineNo">31568</span> oai64data[it.oIndex] = ox;<a name="line.31568"></a>
<span class="sourceLineNo">31569</span> }<a name="line.31569"></a>
<span class="sourceLineNo">31570</span> }<a name="line.31570"></a>
<span class="sourceLineNo">31571</span> } else if (as == 1) {<a name="line.31571"></a>
<span class="sourceLineNo">31572</span> if (it.isOutputDouble()) {<a name="line.31572"></a>
<span class="sourceLineNo">31573</span> while (it.hasNext()) {<a name="line.31573"></a>
<span class="sourceLineNo">31574</span> final double ix = it.aDouble;<a name="line.31574"></a>
<span class="sourceLineNo">31575</span> long ox;<a name="line.31575"></a>
<span class="sourceLineNo">31576</span> ox = toLong(ix);<a name="line.31576"></a>
<span class="sourceLineNo">31577</span> for (int j = 0; j &lt; is; j++) {<a name="line.31577"></a>
<span class="sourceLineNo">31578</span> oai64data[it.oIndex + j] = ox;<a name="line.31578"></a>
<span class="sourceLineNo">31579</span> }<a name="line.31579"></a>
<span class="sourceLineNo">31580</span> }<a name="line.31580"></a>
<span class="sourceLineNo">31581</span> } else {<a name="line.31581"></a>
<span class="sourceLineNo">31582</span> while (it.hasNext()) {<a name="line.31582"></a>
<span class="sourceLineNo">31583</span> final long ix = it.aLong;<a name="line.31583"></a>
<span class="sourceLineNo">31584</span> long ox;<a name="line.31584"></a>
<span class="sourceLineNo">31585</span> ox = toLong(ix);<a name="line.31585"></a>
<span class="sourceLineNo">31586</span> for (int j = 0; j &lt; is; j++) {<a name="line.31586"></a>
<span class="sourceLineNo">31587</span> oai64data[it.oIndex + j] = ox;<a name="line.31587"></a>
<span class="sourceLineNo">31588</span> }<a name="line.31588"></a>
<span class="sourceLineNo">31589</span> }<a name="line.31589"></a>
<span class="sourceLineNo">31590</span> }<a name="line.31590"></a>
<span class="sourceLineNo">31591</span> } else {<a name="line.31591"></a>
<span class="sourceLineNo">31592</span> if (it.isOutputDouble()) {<a name="line.31592"></a>
<span class="sourceLineNo">31593</span> while (it.hasNext()) {<a name="line.31593"></a>
<span class="sourceLineNo">31594</span> for (int j = 0; j &lt; is; j++) {<a name="line.31594"></a>
<span class="sourceLineNo">31595</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.31595"></a>
<span class="sourceLineNo">31596</span> long ox;<a name="line.31596"></a>
<span class="sourceLineNo">31597</span> ox = toLong(ix);<a name="line.31597"></a>
<span class="sourceLineNo">31598</span> oai64data[it.oIndex + j] = ox;<a name="line.31598"></a>
<span class="sourceLineNo">31599</span> }<a name="line.31599"></a>
<span class="sourceLineNo">31600</span> }<a name="line.31600"></a>
<span class="sourceLineNo">31601</span> } else {<a name="line.31601"></a>
<span class="sourceLineNo">31602</span> while (it.hasNext()) {<a name="line.31602"></a>
<span class="sourceLineNo">31603</span> for (int j = 0; j &lt; is; j++) {<a name="line.31603"></a>
<span class="sourceLineNo">31604</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.31604"></a>
<span class="sourceLineNo">31605</span> long ox;<a name="line.31605"></a>
<span class="sourceLineNo">31606</span> ox = toLong(ix);<a name="line.31606"></a>
<span class="sourceLineNo">31607</span> oai64data[it.oIndex + j] = ox;<a name="line.31607"></a>
<span class="sourceLineNo">31608</span> }<a name="line.31608"></a>
<span class="sourceLineNo">31609</span> }<a name="line.31609"></a>
<span class="sourceLineNo">31610</span> }<a name="line.31610"></a>
<span class="sourceLineNo">31611</span> }<a name="line.31611"></a>
<span class="sourceLineNo">31612</span> break;<a name="line.31612"></a>
<span class="sourceLineNo">31613</span> case Dataset.ARRAYINT32:<a name="line.31613"></a>
<span class="sourceLineNo">31614</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.31614"></a>
<span class="sourceLineNo">31615</span> if (is == 1) {<a name="line.31615"></a>
<span class="sourceLineNo">31616</span> if (it.isOutputDouble()) {<a name="line.31616"></a>
<span class="sourceLineNo">31617</span> while (it.hasNext()) {<a name="line.31617"></a>
<span class="sourceLineNo">31618</span> final double ix = it.aDouble;<a name="line.31618"></a>
<span class="sourceLineNo">31619</span> int ox;<a name="line.31619"></a>
<span class="sourceLineNo">31620</span> ox = (int) toLong(ix);<a name="line.31620"></a>
<span class="sourceLineNo">31621</span> oai32data[it.oIndex] = ox;<a name="line.31621"></a>
<span class="sourceLineNo">31622</span> }<a name="line.31622"></a>
<span class="sourceLineNo">31623</span> } else {<a name="line.31623"></a>
<span class="sourceLineNo">31624</span> while (it.hasNext()) {<a name="line.31624"></a>
<span class="sourceLineNo">31625</span> final long ix = it.aLong;<a name="line.31625"></a>
<span class="sourceLineNo">31626</span> int ox;<a name="line.31626"></a>
<span class="sourceLineNo">31627</span> ox = (int) toLong(ix);<a name="line.31627"></a>
<span class="sourceLineNo">31628</span> oai32data[it.oIndex] = ox;<a name="line.31628"></a>
<span class="sourceLineNo">31629</span> }<a name="line.31629"></a>
<span class="sourceLineNo">31630</span> }<a name="line.31630"></a>
<span class="sourceLineNo">31631</span> } else if (as == 1) {<a name="line.31631"></a>
<span class="sourceLineNo">31632</span> if (it.isOutputDouble()) {<a name="line.31632"></a>
<span class="sourceLineNo">31633</span> while (it.hasNext()) {<a name="line.31633"></a>
<span class="sourceLineNo">31634</span> final double ix = it.aDouble;<a name="line.31634"></a>
<span class="sourceLineNo">31635</span> int ox;<a name="line.31635"></a>
<span class="sourceLineNo">31636</span> ox = (int) toLong(ix);<a name="line.31636"></a>
<span class="sourceLineNo">31637</span> for (int j = 0; j &lt; is; j++) {<a name="line.31637"></a>
<span class="sourceLineNo">31638</span> oai32data[it.oIndex + j] = ox;<a name="line.31638"></a>
<span class="sourceLineNo">31639</span> }<a name="line.31639"></a>
<span class="sourceLineNo">31640</span> }<a name="line.31640"></a>
<span class="sourceLineNo">31641</span> } else {<a name="line.31641"></a>
<span class="sourceLineNo">31642</span> while (it.hasNext()) {<a name="line.31642"></a>
<span class="sourceLineNo">31643</span> final long ix = it.aLong;<a name="line.31643"></a>
<span class="sourceLineNo">31644</span> int ox;<a name="line.31644"></a>
<span class="sourceLineNo">31645</span> ox = (int) toLong(ix);<a name="line.31645"></a>
<span class="sourceLineNo">31646</span> for (int j = 0; j &lt; is; j++) {<a name="line.31646"></a>
<span class="sourceLineNo">31647</span> oai32data[it.oIndex + j] = ox;<a name="line.31647"></a>
<span class="sourceLineNo">31648</span> }<a name="line.31648"></a>
<span class="sourceLineNo">31649</span> }<a name="line.31649"></a>
<span class="sourceLineNo">31650</span> }<a name="line.31650"></a>
<span class="sourceLineNo">31651</span> } else {<a name="line.31651"></a>
<span class="sourceLineNo">31652</span> if (it.isOutputDouble()) {<a name="line.31652"></a>
<span class="sourceLineNo">31653</span> while (it.hasNext()) {<a name="line.31653"></a>
<span class="sourceLineNo">31654</span> for (int j = 0; j &lt; is; j++) {<a name="line.31654"></a>
<span class="sourceLineNo">31655</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.31655"></a>
<span class="sourceLineNo">31656</span> int ox;<a name="line.31656"></a>
<span class="sourceLineNo">31657</span> ox = (int) toLong(ix);<a name="line.31657"></a>
<span class="sourceLineNo">31658</span> oai32data[it.oIndex + j] = ox;<a name="line.31658"></a>
<span class="sourceLineNo">31659</span> }<a name="line.31659"></a>
<span class="sourceLineNo">31660</span> }<a name="line.31660"></a>
<span class="sourceLineNo">31661</span> } else {<a name="line.31661"></a>
<span class="sourceLineNo">31662</span> while (it.hasNext()) {<a name="line.31662"></a>
<span class="sourceLineNo">31663</span> for (int j = 0; j &lt; is; j++) {<a name="line.31663"></a>
<span class="sourceLineNo">31664</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.31664"></a>
<span class="sourceLineNo">31665</span> int ox;<a name="line.31665"></a>
<span class="sourceLineNo">31666</span> ox = (int) toLong(ix);<a name="line.31666"></a>
<span class="sourceLineNo">31667</span> oai32data[it.oIndex + j] = ox;<a name="line.31667"></a>
<span class="sourceLineNo">31668</span> }<a name="line.31668"></a>
<span class="sourceLineNo">31669</span> }<a name="line.31669"></a>
<span class="sourceLineNo">31670</span> }<a name="line.31670"></a>
<span class="sourceLineNo">31671</span> }<a name="line.31671"></a>
<span class="sourceLineNo">31672</span> break;<a name="line.31672"></a>
<span class="sourceLineNo">31673</span> case Dataset.FLOAT32:<a name="line.31673"></a>
<span class="sourceLineNo">31674</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.31674"></a>
<span class="sourceLineNo">31675</span> if (it.isOutputDouble()) {<a name="line.31675"></a>
<span class="sourceLineNo">31676</span> while (it.hasNext()) {<a name="line.31676"></a>
<span class="sourceLineNo">31677</span> final double ix = it.aDouble;<a name="line.31677"></a>
<span class="sourceLineNo">31678</span> float ox;<a name="line.31678"></a>
<span class="sourceLineNo">31679</span> ox = (float) (Math.rint(ix));<a name="line.31679"></a>
<span class="sourceLineNo">31680</span> of32data[it.oIndex] = ox;<a name="line.31680"></a>
<span class="sourceLineNo">31681</span> }<a name="line.31681"></a>
<span class="sourceLineNo">31682</span> } else {<a name="line.31682"></a>
<span class="sourceLineNo">31683</span> while (it.hasNext()) {<a name="line.31683"></a>
<span class="sourceLineNo">31684</span> final long ix = it.aLong;<a name="line.31684"></a>
<span class="sourceLineNo">31685</span> float ox;<a name="line.31685"></a>
<span class="sourceLineNo">31686</span> ox = (float) (Math.rint(ix));<a name="line.31686"></a>
<span class="sourceLineNo">31687</span> of32data[it.oIndex] = ox;<a name="line.31687"></a>
<span class="sourceLineNo">31688</span> }<a name="line.31688"></a>
<span class="sourceLineNo">31689</span> }<a name="line.31689"></a>
<span class="sourceLineNo">31690</span> break;<a name="line.31690"></a>
<span class="sourceLineNo">31691</span> case Dataset.FLOAT64:<a name="line.31691"></a>
<span class="sourceLineNo">31692</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.31692"></a>
<span class="sourceLineNo">31693</span> if (it.isOutputDouble()) {<a name="line.31693"></a>
<span class="sourceLineNo">31694</span> while (it.hasNext()) {<a name="line.31694"></a>
<span class="sourceLineNo">31695</span> final double ix = it.aDouble;<a name="line.31695"></a>
<span class="sourceLineNo">31696</span> double ox;<a name="line.31696"></a>
<span class="sourceLineNo">31697</span> ox = (Math.rint(ix));<a name="line.31697"></a>
<span class="sourceLineNo">31698</span> of64data[it.oIndex] = ox;<a name="line.31698"></a>
<span class="sourceLineNo">31699</span> }<a name="line.31699"></a>
<span class="sourceLineNo">31700</span> } else {<a name="line.31700"></a>
<span class="sourceLineNo">31701</span> while (it.hasNext()) {<a name="line.31701"></a>
<span class="sourceLineNo">31702</span> final long ix = it.aLong;<a name="line.31702"></a>
<span class="sourceLineNo">31703</span> double ox;<a name="line.31703"></a>
<span class="sourceLineNo">31704</span> ox = (Math.rint(ix));<a name="line.31704"></a>
<span class="sourceLineNo">31705</span> of64data[it.oIndex] = ox;<a name="line.31705"></a>
<span class="sourceLineNo">31706</span> }<a name="line.31706"></a>
<span class="sourceLineNo">31707</span> }<a name="line.31707"></a>
<span class="sourceLineNo">31708</span> break;<a name="line.31708"></a>
<span class="sourceLineNo">31709</span> case Dataset.ARRAYFLOAT32:<a name="line.31709"></a>
<span class="sourceLineNo">31710</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.31710"></a>
<span class="sourceLineNo">31711</span> if (is == 1) {<a name="line.31711"></a>
<span class="sourceLineNo">31712</span> if (it.isOutputDouble()) {<a name="line.31712"></a>
<span class="sourceLineNo">31713</span> while (it.hasNext()) {<a name="line.31713"></a>
<span class="sourceLineNo">31714</span> final double ix = it.aDouble;<a name="line.31714"></a>
<span class="sourceLineNo">31715</span> float ox;<a name="line.31715"></a>
<span class="sourceLineNo">31716</span> ox = (float) (Math.rint(ix));<a name="line.31716"></a>
<span class="sourceLineNo">31717</span> oaf32data[it.oIndex] = ox;<a name="line.31717"></a>
<span class="sourceLineNo">31718</span> }<a name="line.31718"></a>
<span class="sourceLineNo">31719</span> } else {<a name="line.31719"></a>
<span class="sourceLineNo">31720</span> while (it.hasNext()) {<a name="line.31720"></a>
<span class="sourceLineNo">31721</span> final long ix = it.aLong;<a name="line.31721"></a>
<span class="sourceLineNo">31722</span> float ox;<a name="line.31722"></a>
<span class="sourceLineNo">31723</span> ox = (float) (Math.rint(ix));<a name="line.31723"></a>
<span class="sourceLineNo">31724</span> oaf32data[it.oIndex] = ox;<a name="line.31724"></a>
<span class="sourceLineNo">31725</span> }<a name="line.31725"></a>
<span class="sourceLineNo">31726</span> }<a name="line.31726"></a>
<span class="sourceLineNo">31727</span> } else if (as == 1) {<a name="line.31727"></a>
<span class="sourceLineNo">31728</span> if (it.isOutputDouble()) {<a name="line.31728"></a>
<span class="sourceLineNo">31729</span> while (it.hasNext()) {<a name="line.31729"></a>
<span class="sourceLineNo">31730</span> final double ix = it.aDouble;<a name="line.31730"></a>
<span class="sourceLineNo">31731</span> float ox;<a name="line.31731"></a>
<span class="sourceLineNo">31732</span> ox = (float) (Math.rint(ix));<a name="line.31732"></a>
<span class="sourceLineNo">31733</span> for (int j = 0; j &lt; is; j++) {<a name="line.31733"></a>
<span class="sourceLineNo">31734</span> oaf32data[it.oIndex + j] = ox;<a name="line.31734"></a>
<span class="sourceLineNo">31735</span> }<a name="line.31735"></a>
<span class="sourceLineNo">31736</span> }<a name="line.31736"></a>
<span class="sourceLineNo">31737</span> } else {<a name="line.31737"></a>
<span class="sourceLineNo">31738</span> while (it.hasNext()) {<a name="line.31738"></a>
<span class="sourceLineNo">31739</span> final long ix = it.aLong;<a name="line.31739"></a>
<span class="sourceLineNo">31740</span> float ox;<a name="line.31740"></a>
<span class="sourceLineNo">31741</span> ox = (float) (Math.rint(ix));<a name="line.31741"></a>
<span class="sourceLineNo">31742</span> for (int j = 0; j &lt; is; j++) {<a name="line.31742"></a>
<span class="sourceLineNo">31743</span> oaf32data[it.oIndex + j] = ox;<a name="line.31743"></a>
<span class="sourceLineNo">31744</span> }<a name="line.31744"></a>
<span class="sourceLineNo">31745</span> }<a name="line.31745"></a>
<span class="sourceLineNo">31746</span> }<a name="line.31746"></a>
<span class="sourceLineNo">31747</span> } else {<a name="line.31747"></a>
<span class="sourceLineNo">31748</span> if (it.isOutputDouble()) {<a name="line.31748"></a>
<span class="sourceLineNo">31749</span> while (it.hasNext()) {<a name="line.31749"></a>
<span class="sourceLineNo">31750</span> for (int j = 0; j &lt; is; j++) {<a name="line.31750"></a>
<span class="sourceLineNo">31751</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.31751"></a>
<span class="sourceLineNo">31752</span> float ox;<a name="line.31752"></a>
<span class="sourceLineNo">31753</span> ox = (float) (Math.rint(ix));<a name="line.31753"></a>
<span class="sourceLineNo">31754</span> oaf32data[it.oIndex + j] = ox;<a name="line.31754"></a>
<span class="sourceLineNo">31755</span> }<a name="line.31755"></a>
<span class="sourceLineNo">31756</span> }<a name="line.31756"></a>
<span class="sourceLineNo">31757</span> } else {<a name="line.31757"></a>
<span class="sourceLineNo">31758</span> while (it.hasNext()) {<a name="line.31758"></a>
<span class="sourceLineNo">31759</span> for (int j = 0; j &lt; is; j++) {<a name="line.31759"></a>
<span class="sourceLineNo">31760</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.31760"></a>
<span class="sourceLineNo">31761</span> float ox;<a name="line.31761"></a>
<span class="sourceLineNo">31762</span> ox = (float) (Math.rint(ix));<a name="line.31762"></a>
<span class="sourceLineNo">31763</span> oaf32data[it.oIndex + j] = ox;<a name="line.31763"></a>
<span class="sourceLineNo">31764</span> }<a name="line.31764"></a>
<span class="sourceLineNo">31765</span> }<a name="line.31765"></a>
<span class="sourceLineNo">31766</span> }<a name="line.31766"></a>
<span class="sourceLineNo">31767</span> }<a name="line.31767"></a>
<span class="sourceLineNo">31768</span> break;<a name="line.31768"></a>
<span class="sourceLineNo">31769</span> case Dataset.ARRAYFLOAT64:<a name="line.31769"></a>
<span class="sourceLineNo">31770</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.31770"></a>
<span class="sourceLineNo">31771</span> if (is == 1) {<a name="line.31771"></a>
<span class="sourceLineNo">31772</span> if (it.isOutputDouble()) {<a name="line.31772"></a>
<span class="sourceLineNo">31773</span> while (it.hasNext()) {<a name="line.31773"></a>
<span class="sourceLineNo">31774</span> final double ix = it.aDouble;<a name="line.31774"></a>
<span class="sourceLineNo">31775</span> double ox;<a name="line.31775"></a>
<span class="sourceLineNo">31776</span> ox = (Math.rint(ix));<a name="line.31776"></a>
<span class="sourceLineNo">31777</span> oaf64data[it.oIndex] = ox;<a name="line.31777"></a>
<span class="sourceLineNo">31778</span> }<a name="line.31778"></a>
<span class="sourceLineNo">31779</span> } else {<a name="line.31779"></a>
<span class="sourceLineNo">31780</span> while (it.hasNext()) {<a name="line.31780"></a>
<span class="sourceLineNo">31781</span> final long ix = it.aLong;<a name="line.31781"></a>
<span class="sourceLineNo">31782</span> double ox;<a name="line.31782"></a>
<span class="sourceLineNo">31783</span> ox = (Math.rint(ix));<a name="line.31783"></a>
<span class="sourceLineNo">31784</span> oaf64data[it.oIndex] = ox;<a name="line.31784"></a>
<span class="sourceLineNo">31785</span> }<a name="line.31785"></a>
<span class="sourceLineNo">31786</span> }<a name="line.31786"></a>
<span class="sourceLineNo">31787</span> } else if (as == 1) {<a name="line.31787"></a>
<span class="sourceLineNo">31788</span> if (it.isOutputDouble()) {<a name="line.31788"></a>
<span class="sourceLineNo">31789</span> while (it.hasNext()) {<a name="line.31789"></a>
<span class="sourceLineNo">31790</span> final double ix = it.aDouble;<a name="line.31790"></a>
<span class="sourceLineNo">31791</span> double ox;<a name="line.31791"></a>
<span class="sourceLineNo">31792</span> ox = (Math.rint(ix));<a name="line.31792"></a>
<span class="sourceLineNo">31793</span> for (int j = 0; j &lt; is; j++) {<a name="line.31793"></a>
<span class="sourceLineNo">31794</span> oaf64data[it.oIndex + j] = ox;<a name="line.31794"></a>
<span class="sourceLineNo">31795</span> }<a name="line.31795"></a>
<span class="sourceLineNo">31796</span> }<a name="line.31796"></a>
<span class="sourceLineNo">31797</span> } else {<a name="line.31797"></a>
<span class="sourceLineNo">31798</span> while (it.hasNext()) {<a name="line.31798"></a>
<span class="sourceLineNo">31799</span> final long ix = it.aLong;<a name="line.31799"></a>
<span class="sourceLineNo">31800</span> double ox;<a name="line.31800"></a>
<span class="sourceLineNo">31801</span> ox = (Math.rint(ix));<a name="line.31801"></a>
<span class="sourceLineNo">31802</span> for (int j = 0; j &lt; is; j++) {<a name="line.31802"></a>
<span class="sourceLineNo">31803</span> oaf64data[it.oIndex + j] = ox;<a name="line.31803"></a>
<span class="sourceLineNo">31804</span> }<a name="line.31804"></a>
<span class="sourceLineNo">31805</span> }<a name="line.31805"></a>
<span class="sourceLineNo">31806</span> }<a name="line.31806"></a>
<span class="sourceLineNo">31807</span> } else {<a name="line.31807"></a>
<span class="sourceLineNo">31808</span> if (it.isOutputDouble()) {<a name="line.31808"></a>
<span class="sourceLineNo">31809</span> while (it.hasNext()) {<a name="line.31809"></a>
<span class="sourceLineNo">31810</span> for (int j = 0; j &lt; is; j++) {<a name="line.31810"></a>
<span class="sourceLineNo">31811</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.31811"></a>
<span class="sourceLineNo">31812</span> double ox;<a name="line.31812"></a>
<span class="sourceLineNo">31813</span> ox = (Math.rint(ix));<a name="line.31813"></a>
<span class="sourceLineNo">31814</span> oaf64data[it.oIndex + j] = ox;<a name="line.31814"></a>
<span class="sourceLineNo">31815</span> }<a name="line.31815"></a>
<span class="sourceLineNo">31816</span> }<a name="line.31816"></a>
<span class="sourceLineNo">31817</span> } else {<a name="line.31817"></a>
<span class="sourceLineNo">31818</span> while (it.hasNext()) {<a name="line.31818"></a>
<span class="sourceLineNo">31819</span> for (int j = 0; j &lt; is; j++) {<a name="line.31819"></a>
<span class="sourceLineNo">31820</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.31820"></a>
<span class="sourceLineNo">31821</span> double ox;<a name="line.31821"></a>
<span class="sourceLineNo">31822</span> ox = (Math.rint(ix));<a name="line.31822"></a>
<span class="sourceLineNo">31823</span> oaf64data[it.oIndex + j] = ox;<a name="line.31823"></a>
<span class="sourceLineNo">31824</span> }<a name="line.31824"></a>
<span class="sourceLineNo">31825</span> }<a name="line.31825"></a>
<span class="sourceLineNo">31826</span> }<a name="line.31826"></a>
<span class="sourceLineNo">31827</span> }<a name="line.31827"></a>
<span class="sourceLineNo">31828</span> break;<a name="line.31828"></a>
<span class="sourceLineNo">31829</span> case Dataset.COMPLEX64:<a name="line.31829"></a>
<span class="sourceLineNo">31830</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.31830"></a>
<span class="sourceLineNo">31831</span> if (!da.isComplex()) {<a name="line.31831"></a>
<span class="sourceLineNo">31832</span> if (it.isOutputDouble()) {<a name="line.31832"></a>
<span class="sourceLineNo">31833</span> final double iy = 0;<a name="line.31833"></a>
<span class="sourceLineNo">31834</span> while (it.hasNext()) {<a name="line.31834"></a>
<span class="sourceLineNo">31835</span> final double ix = it.aDouble;<a name="line.31835"></a>
<span class="sourceLineNo">31836</span> float ox;<a name="line.31836"></a>
<span class="sourceLineNo">31837</span> float oy;<a name="line.31837"></a>
<span class="sourceLineNo">31838</span> ox = (float) (Math.rint(ix));<a name="line.31838"></a>
<span class="sourceLineNo">31839</span> oy = (float) (Math.rint(iy));<a name="line.31839"></a>
<span class="sourceLineNo">31840</span> oc64data[it.oIndex] = ox;<a name="line.31840"></a>
<span class="sourceLineNo">31841</span> oc64data[it.oIndex + 1] = oy;<a name="line.31841"></a>
<span class="sourceLineNo">31842</span> }<a name="line.31842"></a>
<span class="sourceLineNo">31843</span> } else {<a name="line.31843"></a>
<span class="sourceLineNo">31844</span> final long iy = 0;<a name="line.31844"></a>
<span class="sourceLineNo">31845</span> while (it.hasNext()) {<a name="line.31845"></a>
<span class="sourceLineNo">31846</span> final long ix = it.aLong;<a name="line.31846"></a>
<span class="sourceLineNo">31847</span> float ox;<a name="line.31847"></a>
<span class="sourceLineNo">31848</span> float oy;<a name="line.31848"></a>
<span class="sourceLineNo">31849</span> ox = (float) toLong(Math.rint(ix));<a name="line.31849"></a>
<span class="sourceLineNo">31850</span> oy = (float) toLong(Math.rint(iy));<a name="line.31850"></a>
<span class="sourceLineNo">31851</span> oc64data[it.oIndex] = ox;<a name="line.31851"></a>
<span class="sourceLineNo">31852</span> oc64data[it.oIndex + 1] = oy;<a name="line.31852"></a>
<span class="sourceLineNo">31853</span> }<a name="line.31853"></a>
<span class="sourceLineNo">31854</span> }<a name="line.31854"></a>
<span class="sourceLineNo">31855</span> } else {<a name="line.31855"></a>
<span class="sourceLineNo">31856</span> while (it.hasNext()) {<a name="line.31856"></a>
<span class="sourceLineNo">31857</span> final double ix = it.aDouble;<a name="line.31857"></a>
<span class="sourceLineNo">31858</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.31858"></a>
<span class="sourceLineNo">31859</span> float ox;<a name="line.31859"></a>
<span class="sourceLineNo">31860</span> float oy;<a name="line.31860"></a>
<span class="sourceLineNo">31861</span> ox = (float) (Math.rint(ix));<a name="line.31861"></a>
<span class="sourceLineNo">31862</span> oy = (float) (Math.rint(iy));<a name="line.31862"></a>
<span class="sourceLineNo">31863</span> oc64data[it.oIndex] = ox;<a name="line.31863"></a>
<span class="sourceLineNo">31864</span> oc64data[it.oIndex + 1] = oy;<a name="line.31864"></a>
<span class="sourceLineNo">31865</span> }<a name="line.31865"></a>
<span class="sourceLineNo">31866</span> }<a name="line.31866"></a>
<span class="sourceLineNo">31867</span> break;<a name="line.31867"></a>
<span class="sourceLineNo">31868</span> case Dataset.COMPLEX128:<a name="line.31868"></a>
<span class="sourceLineNo">31869</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.31869"></a>
<span class="sourceLineNo">31870</span> if (!da.isComplex()) {<a name="line.31870"></a>
<span class="sourceLineNo">31871</span> if (it.isOutputDouble()) {<a name="line.31871"></a>
<span class="sourceLineNo">31872</span> final double iy = 0;<a name="line.31872"></a>
<span class="sourceLineNo">31873</span> while (it.hasNext()) {<a name="line.31873"></a>
<span class="sourceLineNo">31874</span> final double ix = it.aDouble;<a name="line.31874"></a>
<span class="sourceLineNo">31875</span> double ox;<a name="line.31875"></a>
<span class="sourceLineNo">31876</span> double oy;<a name="line.31876"></a>
<span class="sourceLineNo">31877</span> ox = (Math.rint(ix));<a name="line.31877"></a>
<span class="sourceLineNo">31878</span> oy = (Math.rint(iy));<a name="line.31878"></a>
<span class="sourceLineNo">31879</span> oc128data[it.oIndex] = ox;<a name="line.31879"></a>
<span class="sourceLineNo">31880</span> oc128data[it.oIndex + 1] = oy;<a name="line.31880"></a>
<span class="sourceLineNo">31881</span> }<a name="line.31881"></a>
<span class="sourceLineNo">31882</span> } else {<a name="line.31882"></a>
<span class="sourceLineNo">31883</span> final long iy = 0;<a name="line.31883"></a>
<span class="sourceLineNo">31884</span> while (it.hasNext()) {<a name="line.31884"></a>
<span class="sourceLineNo">31885</span> final long ix = it.aLong;<a name="line.31885"></a>
<span class="sourceLineNo">31886</span> double ox;<a name="line.31886"></a>
<span class="sourceLineNo">31887</span> double oy;<a name="line.31887"></a>
<span class="sourceLineNo">31888</span> ox = (double) (Math.rint(ix));<a name="line.31888"></a>
<span class="sourceLineNo">31889</span> oy = (double) (Math.rint(iy));<a name="line.31889"></a>
<span class="sourceLineNo">31890</span> oc128data[it.oIndex] = ox;<a name="line.31890"></a>
<span class="sourceLineNo">31891</span> oc128data[it.oIndex + 1] = oy;<a name="line.31891"></a>
<span class="sourceLineNo">31892</span> }<a name="line.31892"></a>
<span class="sourceLineNo">31893</span> }<a name="line.31893"></a>
<span class="sourceLineNo">31894</span> } else {<a name="line.31894"></a>
<span class="sourceLineNo">31895</span> while (it.hasNext()) {<a name="line.31895"></a>
<span class="sourceLineNo">31896</span> final double ix = it.aDouble;<a name="line.31896"></a>
<span class="sourceLineNo">31897</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.31897"></a>
<span class="sourceLineNo">31898</span> double ox;<a name="line.31898"></a>
<span class="sourceLineNo">31899</span> double oy;<a name="line.31899"></a>
<span class="sourceLineNo">31900</span> ox = (Math.rint(ix));<a name="line.31900"></a>
<span class="sourceLineNo">31901</span> oy = (Math.rint(iy));<a name="line.31901"></a>
<span class="sourceLineNo">31902</span> oc128data[it.oIndex] = ox;<a name="line.31902"></a>
<span class="sourceLineNo">31903</span> oc128data[it.oIndex + 1] = oy;<a name="line.31903"></a>
<span class="sourceLineNo">31904</span> }<a name="line.31904"></a>
<span class="sourceLineNo">31905</span> }<a name="line.31905"></a>
<span class="sourceLineNo">31906</span> break;<a name="line.31906"></a>
<span class="sourceLineNo">31907</span> default:<a name="line.31907"></a>
<span class="sourceLineNo">31908</span> throw new IllegalArgumentException("rint supports integer, compound integer, real, compound real, complex datasets only");<a name="line.31908"></a>
<span class="sourceLineNo">31909</span> }<a name="line.31909"></a>
<span class="sourceLineNo">31910</span><a name="line.31910"></a>
<span class="sourceLineNo">31911</span> addFunctionName(result, "rint");<a name="line.31911"></a>
<span class="sourceLineNo">31912</span> return result;<a name="line.31912"></a>
<span class="sourceLineNo">31913</span> }<a name="line.31913"></a>
<span class="sourceLineNo">31914</span><a name="line.31914"></a>
<span class="sourceLineNo">31915</span> /**<a name="line.31915"></a>
<span class="sourceLineNo">31916</span> * truncate - truncate each element to integers of the dataset<a name="line.31916"></a>
<span class="sourceLineNo">31917</span> * @param a<a name="line.31917"></a>
<span class="sourceLineNo">31918</span> * @return dataset<a name="line.31918"></a>
<span class="sourceLineNo">31919</span> */<a name="line.31919"></a>
<span class="sourceLineNo">31920</span> public static Dataset truncate(final Object a) {<a name="line.31920"></a>
<span class="sourceLineNo">31921</span> return truncate(a, null);<a name="line.31921"></a>
<span class="sourceLineNo">31922</span> }<a name="line.31922"></a>
<span class="sourceLineNo">31923</span><a name="line.31923"></a>
<span class="sourceLineNo">31924</span> /**<a name="line.31924"></a>
<span class="sourceLineNo">31925</span> * truncate - truncate each element to integers of the dataset<a name="line.31925"></a>
<span class="sourceLineNo">31926</span> * @param a<a name="line.31926"></a>
<span class="sourceLineNo">31927</span> * @param o output can be null - in which case, a new dataset is created<a name="line.31927"></a>
<span class="sourceLineNo">31928</span> * @return dataset<a name="line.31928"></a>
<span class="sourceLineNo">31929</span> */<a name="line.31929"></a>
<span class="sourceLineNo">31930</span> public static Dataset truncate(final Object a, final Dataset o) {<a name="line.31930"></a>
<span class="sourceLineNo">31931</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.31931"></a>
<span class="sourceLineNo">31932</span> SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true);<a name="line.31932"></a>
<span class="sourceLineNo">31933</span> final Dataset result = it.getOutput();<a name="line.31933"></a>
<span class="sourceLineNo">31934</span> if (!result.isComplex()) {<a name="line.31934"></a>
<span class="sourceLineNo">31935</span> if (da.isComplex()) {<a name="line.31935"></a>
<span class="sourceLineNo">31936</span> da = da.getRealView();<a name="line.31936"></a>
<span class="sourceLineNo">31937</span> it = new SingleInputBroadcastIterator(da, result, true);<a name="line.31937"></a>
<span class="sourceLineNo">31938</span> }<a name="line.31938"></a>
<span class="sourceLineNo">31939</span> }<a name="line.31939"></a>
<span class="sourceLineNo">31940</span> final int is = result.getElementsPerItem();<a name="line.31940"></a>
<span class="sourceLineNo">31941</span> final int as = da.getElementsPerItem();<a name="line.31941"></a>
<span class="sourceLineNo">31942</span> final int dt = result.getDType();<a name="line.31942"></a>
<span class="sourceLineNo">31943</span><a name="line.31943"></a>
<span class="sourceLineNo">31944</span> switch(dt) {<a name="line.31944"></a>
<span class="sourceLineNo">31945</span> case Dataset.INT8:<a name="line.31945"></a>
<span class="sourceLineNo">31946</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.31946"></a>
<span class="sourceLineNo">31947</span> if (it.isOutputDouble()) {<a name="line.31947"></a>
<span class="sourceLineNo">31948</span> while (it.hasNext()) {<a name="line.31948"></a>
<span class="sourceLineNo">31949</span> final double ix = it.aDouble;<a name="line.31949"></a>
<span class="sourceLineNo">31950</span> byte ox;<a name="line.31950"></a>
<span class="sourceLineNo">31951</span> ox = (byte) toLong(ix);<a name="line.31951"></a>
<span class="sourceLineNo">31952</span> oi8data[it.oIndex] = ox;<a name="line.31952"></a>
<span class="sourceLineNo">31953</span> }<a name="line.31953"></a>
<span class="sourceLineNo">31954</span> } else {<a name="line.31954"></a>
<span class="sourceLineNo">31955</span> while (it.hasNext()) {<a name="line.31955"></a>
<span class="sourceLineNo">31956</span> final long ix = it.aLong;<a name="line.31956"></a>
<span class="sourceLineNo">31957</span> byte ox;<a name="line.31957"></a>
<span class="sourceLineNo">31958</span> ox = (byte) toLong(ix);<a name="line.31958"></a>
<span class="sourceLineNo">31959</span> oi8data[it.oIndex] = ox;<a name="line.31959"></a>
<span class="sourceLineNo">31960</span> }<a name="line.31960"></a>
<span class="sourceLineNo">31961</span> }<a name="line.31961"></a>
<span class="sourceLineNo">31962</span> break;<a name="line.31962"></a>
<span class="sourceLineNo">31963</span> case Dataset.INT16:<a name="line.31963"></a>
<span class="sourceLineNo">31964</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.31964"></a>
<span class="sourceLineNo">31965</span> if (it.isOutputDouble()) {<a name="line.31965"></a>
<span class="sourceLineNo">31966</span> while (it.hasNext()) {<a name="line.31966"></a>
<span class="sourceLineNo">31967</span> final double ix = it.aDouble;<a name="line.31967"></a>
<span class="sourceLineNo">31968</span> short ox;<a name="line.31968"></a>
<span class="sourceLineNo">31969</span> ox = (short) toLong(ix);<a name="line.31969"></a>
<span class="sourceLineNo">31970</span> oi16data[it.oIndex] = ox;<a name="line.31970"></a>
<span class="sourceLineNo">31971</span> }<a name="line.31971"></a>
<span class="sourceLineNo">31972</span> } else {<a name="line.31972"></a>
<span class="sourceLineNo">31973</span> while (it.hasNext()) {<a name="line.31973"></a>
<span class="sourceLineNo">31974</span> final long ix = it.aLong;<a name="line.31974"></a>
<span class="sourceLineNo">31975</span> short ox;<a name="line.31975"></a>
<span class="sourceLineNo">31976</span> ox = (short) toLong(ix);<a name="line.31976"></a>
<span class="sourceLineNo">31977</span> oi16data[it.oIndex] = ox;<a name="line.31977"></a>
<span class="sourceLineNo">31978</span> }<a name="line.31978"></a>
<span class="sourceLineNo">31979</span> }<a name="line.31979"></a>
<span class="sourceLineNo">31980</span> break;<a name="line.31980"></a>
<span class="sourceLineNo">31981</span> case Dataset.INT64:<a name="line.31981"></a>
<span class="sourceLineNo">31982</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.31982"></a>
<span class="sourceLineNo">31983</span> if (it.isOutputDouble()) {<a name="line.31983"></a>
<span class="sourceLineNo">31984</span> while (it.hasNext()) {<a name="line.31984"></a>
<span class="sourceLineNo">31985</span> final double ix = it.aDouble;<a name="line.31985"></a>
<span class="sourceLineNo">31986</span> long ox;<a name="line.31986"></a>
<span class="sourceLineNo">31987</span> ox = toLong(ix);<a name="line.31987"></a>
<span class="sourceLineNo">31988</span> oi64data[it.oIndex] = ox;<a name="line.31988"></a>
<span class="sourceLineNo">31989</span> }<a name="line.31989"></a>
<span class="sourceLineNo">31990</span> } else {<a name="line.31990"></a>
<span class="sourceLineNo">31991</span> while (it.hasNext()) {<a name="line.31991"></a>
<span class="sourceLineNo">31992</span> final long ix = it.aLong;<a name="line.31992"></a>
<span class="sourceLineNo">31993</span> long ox;<a name="line.31993"></a>
<span class="sourceLineNo">31994</span> ox = toLong(ix);<a name="line.31994"></a>
<span class="sourceLineNo">31995</span> oi64data[it.oIndex] = ox;<a name="line.31995"></a>
<span class="sourceLineNo">31996</span> }<a name="line.31996"></a>
<span class="sourceLineNo">31997</span> }<a name="line.31997"></a>
<span class="sourceLineNo">31998</span> break;<a name="line.31998"></a>
<span class="sourceLineNo">31999</span> case Dataset.INT32:<a name="line.31999"></a>
<span class="sourceLineNo">32000</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.32000"></a>
<span class="sourceLineNo">32001</span> if (it.isOutputDouble()) {<a name="line.32001"></a>
<span class="sourceLineNo">32002</span> while (it.hasNext()) {<a name="line.32002"></a>
<span class="sourceLineNo">32003</span> final double ix = it.aDouble;<a name="line.32003"></a>
<span class="sourceLineNo">32004</span> int ox;<a name="line.32004"></a>
<span class="sourceLineNo">32005</span> ox = (int) toLong(ix);<a name="line.32005"></a>
<span class="sourceLineNo">32006</span> oi32data[it.oIndex] = ox;<a name="line.32006"></a>
<span class="sourceLineNo">32007</span> }<a name="line.32007"></a>
<span class="sourceLineNo">32008</span> } else {<a name="line.32008"></a>
<span class="sourceLineNo">32009</span> while (it.hasNext()) {<a name="line.32009"></a>
<span class="sourceLineNo">32010</span> final long ix = it.aLong;<a name="line.32010"></a>
<span class="sourceLineNo">32011</span> int ox;<a name="line.32011"></a>
<span class="sourceLineNo">32012</span> ox = (int) toLong(ix);<a name="line.32012"></a>
<span class="sourceLineNo">32013</span> oi32data[it.oIndex] = ox;<a name="line.32013"></a>
<span class="sourceLineNo">32014</span> }<a name="line.32014"></a>
<span class="sourceLineNo">32015</span> }<a name="line.32015"></a>
<span class="sourceLineNo">32016</span> break;<a name="line.32016"></a>
<span class="sourceLineNo">32017</span> case Dataset.ARRAYINT8:<a name="line.32017"></a>
<span class="sourceLineNo">32018</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.32018"></a>
<span class="sourceLineNo">32019</span> if (is == 1) {<a name="line.32019"></a>
<span class="sourceLineNo">32020</span> if (it.isOutputDouble()) {<a name="line.32020"></a>
<span class="sourceLineNo">32021</span> while (it.hasNext()) {<a name="line.32021"></a>
<span class="sourceLineNo">32022</span> final double ix = it.aDouble;<a name="line.32022"></a>
<span class="sourceLineNo">32023</span> byte ox;<a name="line.32023"></a>
<span class="sourceLineNo">32024</span> ox = (byte) toLong(ix);<a name="line.32024"></a>
<span class="sourceLineNo">32025</span> oai8data[it.oIndex] = ox;<a name="line.32025"></a>
<span class="sourceLineNo">32026</span> }<a name="line.32026"></a>
<span class="sourceLineNo">32027</span> } else {<a name="line.32027"></a>
<span class="sourceLineNo">32028</span> while (it.hasNext()) {<a name="line.32028"></a>
<span class="sourceLineNo">32029</span> final long ix = it.aLong;<a name="line.32029"></a>
<span class="sourceLineNo">32030</span> byte ox;<a name="line.32030"></a>
<span class="sourceLineNo">32031</span> ox = (byte) toLong(ix);<a name="line.32031"></a>
<span class="sourceLineNo">32032</span> oai8data[it.oIndex] = ox;<a name="line.32032"></a>
<span class="sourceLineNo">32033</span> }<a name="line.32033"></a>
<span class="sourceLineNo">32034</span> }<a name="line.32034"></a>
<span class="sourceLineNo">32035</span> } else if (as == 1) {<a name="line.32035"></a>
<span class="sourceLineNo">32036</span> if (it.isOutputDouble()) {<a name="line.32036"></a>
<span class="sourceLineNo">32037</span> while (it.hasNext()) {<a name="line.32037"></a>
<span class="sourceLineNo">32038</span> final double ix = it.aDouble;<a name="line.32038"></a>
<span class="sourceLineNo">32039</span> byte ox;<a name="line.32039"></a>
<span class="sourceLineNo">32040</span> ox = (byte) toLong(ix);<a name="line.32040"></a>
<span class="sourceLineNo">32041</span> for (int j = 0; j &lt; is; j++) {<a name="line.32041"></a>
<span class="sourceLineNo">32042</span> oai8data[it.oIndex + j] = ox;<a name="line.32042"></a>
<span class="sourceLineNo">32043</span> }<a name="line.32043"></a>
<span class="sourceLineNo">32044</span> }<a name="line.32044"></a>
<span class="sourceLineNo">32045</span> } else {<a name="line.32045"></a>
<span class="sourceLineNo">32046</span> while (it.hasNext()) {<a name="line.32046"></a>
<span class="sourceLineNo">32047</span> final long ix = it.aLong;<a name="line.32047"></a>
<span class="sourceLineNo">32048</span> byte ox;<a name="line.32048"></a>
<span class="sourceLineNo">32049</span> ox = (byte) toLong(ix);<a name="line.32049"></a>
<span class="sourceLineNo">32050</span> for (int j = 0; j &lt; is; j++) {<a name="line.32050"></a>
<span class="sourceLineNo">32051</span> oai8data[it.oIndex + j] = ox;<a name="line.32051"></a>
<span class="sourceLineNo">32052</span> }<a name="line.32052"></a>
<span class="sourceLineNo">32053</span> }<a name="line.32053"></a>
<span class="sourceLineNo">32054</span> }<a name="line.32054"></a>
<span class="sourceLineNo">32055</span> } else {<a name="line.32055"></a>
<span class="sourceLineNo">32056</span> if (it.isOutputDouble()) {<a name="line.32056"></a>
<span class="sourceLineNo">32057</span> while (it.hasNext()) {<a name="line.32057"></a>
<span class="sourceLineNo">32058</span> for (int j = 0; j &lt; is; j++) {<a name="line.32058"></a>
<span class="sourceLineNo">32059</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.32059"></a>
<span class="sourceLineNo">32060</span> byte ox;<a name="line.32060"></a>
<span class="sourceLineNo">32061</span> ox = (byte) toLong(ix);<a name="line.32061"></a>
<span class="sourceLineNo">32062</span> oai8data[it.oIndex + j] = ox;<a name="line.32062"></a>
<span class="sourceLineNo">32063</span> }<a name="line.32063"></a>
<span class="sourceLineNo">32064</span> }<a name="line.32064"></a>
<span class="sourceLineNo">32065</span> } else {<a name="line.32065"></a>
<span class="sourceLineNo">32066</span> while (it.hasNext()) {<a name="line.32066"></a>
<span class="sourceLineNo">32067</span> for (int j = 0; j &lt; is; j++) {<a name="line.32067"></a>
<span class="sourceLineNo">32068</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.32068"></a>
<span class="sourceLineNo">32069</span> byte ox;<a name="line.32069"></a>
<span class="sourceLineNo">32070</span> ox = (byte) toLong(ix);<a name="line.32070"></a>
<span class="sourceLineNo">32071</span> oai8data[it.oIndex + j] = ox;<a name="line.32071"></a>
<span class="sourceLineNo">32072</span> }<a name="line.32072"></a>
<span class="sourceLineNo">32073</span> }<a name="line.32073"></a>
<span class="sourceLineNo">32074</span> }<a name="line.32074"></a>
<span class="sourceLineNo">32075</span> }<a name="line.32075"></a>
<span class="sourceLineNo">32076</span> break;<a name="line.32076"></a>
<span class="sourceLineNo">32077</span> case Dataset.ARRAYINT16:<a name="line.32077"></a>
<span class="sourceLineNo">32078</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.32078"></a>
<span class="sourceLineNo">32079</span> if (is == 1) {<a name="line.32079"></a>
<span class="sourceLineNo">32080</span> if (it.isOutputDouble()) {<a name="line.32080"></a>
<span class="sourceLineNo">32081</span> while (it.hasNext()) {<a name="line.32081"></a>
<span class="sourceLineNo">32082</span> final double ix = it.aDouble;<a name="line.32082"></a>
<span class="sourceLineNo">32083</span> short ox;<a name="line.32083"></a>
<span class="sourceLineNo">32084</span> ox = (short) toLong(ix);<a name="line.32084"></a>
<span class="sourceLineNo">32085</span> oai16data[it.oIndex] = ox;<a name="line.32085"></a>
<span class="sourceLineNo">32086</span> }<a name="line.32086"></a>
<span class="sourceLineNo">32087</span> } else {<a name="line.32087"></a>
<span class="sourceLineNo">32088</span> while (it.hasNext()) {<a name="line.32088"></a>
<span class="sourceLineNo">32089</span> final long ix = it.aLong;<a name="line.32089"></a>
<span class="sourceLineNo">32090</span> short ox;<a name="line.32090"></a>
<span class="sourceLineNo">32091</span> ox = (short) toLong(ix);<a name="line.32091"></a>
<span class="sourceLineNo">32092</span> oai16data[it.oIndex] = ox;<a name="line.32092"></a>
<span class="sourceLineNo">32093</span> }<a name="line.32093"></a>
<span class="sourceLineNo">32094</span> }<a name="line.32094"></a>
<span class="sourceLineNo">32095</span> } else if (as == 1) {<a name="line.32095"></a>
<span class="sourceLineNo">32096</span> if (it.isOutputDouble()) {<a name="line.32096"></a>
<span class="sourceLineNo">32097</span> while (it.hasNext()) {<a name="line.32097"></a>
<span class="sourceLineNo">32098</span> final double ix = it.aDouble;<a name="line.32098"></a>
<span class="sourceLineNo">32099</span> short ox;<a name="line.32099"></a>
<span class="sourceLineNo">32100</span> ox = (short) toLong(ix);<a name="line.32100"></a>
<span class="sourceLineNo">32101</span> for (int j = 0; j &lt; is; j++) {<a name="line.32101"></a>
<span class="sourceLineNo">32102</span> oai16data[it.oIndex + j] = ox;<a name="line.32102"></a>
<span class="sourceLineNo">32103</span> }<a name="line.32103"></a>
<span class="sourceLineNo">32104</span> }<a name="line.32104"></a>
<span class="sourceLineNo">32105</span> } else {<a name="line.32105"></a>
<span class="sourceLineNo">32106</span> while (it.hasNext()) {<a name="line.32106"></a>
<span class="sourceLineNo">32107</span> final long ix = it.aLong;<a name="line.32107"></a>
<span class="sourceLineNo">32108</span> short ox;<a name="line.32108"></a>
<span class="sourceLineNo">32109</span> ox = (short) toLong(ix);<a name="line.32109"></a>
<span class="sourceLineNo">32110</span> for (int j = 0; j &lt; is; j++) {<a name="line.32110"></a>
<span class="sourceLineNo">32111</span> oai16data[it.oIndex + j] = ox;<a name="line.32111"></a>
<span class="sourceLineNo">32112</span> }<a name="line.32112"></a>
<span class="sourceLineNo">32113</span> }<a name="line.32113"></a>
<span class="sourceLineNo">32114</span> }<a name="line.32114"></a>
<span class="sourceLineNo">32115</span> } else {<a name="line.32115"></a>
<span class="sourceLineNo">32116</span> if (it.isOutputDouble()) {<a name="line.32116"></a>
<span class="sourceLineNo">32117</span> while (it.hasNext()) {<a name="line.32117"></a>
<span class="sourceLineNo">32118</span> for (int j = 0; j &lt; is; j++) {<a name="line.32118"></a>
<span class="sourceLineNo">32119</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.32119"></a>
<span class="sourceLineNo">32120</span> short ox;<a name="line.32120"></a>
<span class="sourceLineNo">32121</span> ox = (short) toLong(ix);<a name="line.32121"></a>
<span class="sourceLineNo">32122</span> oai16data[it.oIndex + j] = ox;<a name="line.32122"></a>
<span class="sourceLineNo">32123</span> }<a name="line.32123"></a>
<span class="sourceLineNo">32124</span> }<a name="line.32124"></a>
<span class="sourceLineNo">32125</span> } else {<a name="line.32125"></a>
<span class="sourceLineNo">32126</span> while (it.hasNext()) {<a name="line.32126"></a>
<span class="sourceLineNo">32127</span> for (int j = 0; j &lt; is; j++) {<a name="line.32127"></a>
<span class="sourceLineNo">32128</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.32128"></a>
<span class="sourceLineNo">32129</span> short ox;<a name="line.32129"></a>
<span class="sourceLineNo">32130</span> ox = (short) toLong(ix);<a name="line.32130"></a>
<span class="sourceLineNo">32131</span> oai16data[it.oIndex + j] = ox;<a name="line.32131"></a>
<span class="sourceLineNo">32132</span> }<a name="line.32132"></a>
<span class="sourceLineNo">32133</span> }<a name="line.32133"></a>
<span class="sourceLineNo">32134</span> }<a name="line.32134"></a>
<span class="sourceLineNo">32135</span> }<a name="line.32135"></a>
<span class="sourceLineNo">32136</span> break;<a name="line.32136"></a>
<span class="sourceLineNo">32137</span> case Dataset.ARRAYINT64:<a name="line.32137"></a>
<span class="sourceLineNo">32138</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.32138"></a>
<span class="sourceLineNo">32139</span> if (is == 1) {<a name="line.32139"></a>
<span class="sourceLineNo">32140</span> if (it.isOutputDouble()) {<a name="line.32140"></a>
<span class="sourceLineNo">32141</span> while (it.hasNext()) {<a name="line.32141"></a>
<span class="sourceLineNo">32142</span> final double ix = it.aDouble;<a name="line.32142"></a>
<span class="sourceLineNo">32143</span> long ox;<a name="line.32143"></a>
<span class="sourceLineNo">32144</span> ox = toLong(ix);<a name="line.32144"></a>
<span class="sourceLineNo">32145</span> oai64data[it.oIndex] = ox;<a name="line.32145"></a>
<span class="sourceLineNo">32146</span> }<a name="line.32146"></a>
<span class="sourceLineNo">32147</span> } else {<a name="line.32147"></a>
<span class="sourceLineNo">32148</span> while (it.hasNext()) {<a name="line.32148"></a>
<span class="sourceLineNo">32149</span> final long ix = it.aLong;<a name="line.32149"></a>
<span class="sourceLineNo">32150</span> long ox;<a name="line.32150"></a>
<span class="sourceLineNo">32151</span> ox = toLong(ix);<a name="line.32151"></a>
<span class="sourceLineNo">32152</span> oai64data[it.oIndex] = ox;<a name="line.32152"></a>
<span class="sourceLineNo">32153</span> }<a name="line.32153"></a>
<span class="sourceLineNo">32154</span> }<a name="line.32154"></a>
<span class="sourceLineNo">32155</span> } else if (as == 1) {<a name="line.32155"></a>
<span class="sourceLineNo">32156</span> if (it.isOutputDouble()) {<a name="line.32156"></a>
<span class="sourceLineNo">32157</span> while (it.hasNext()) {<a name="line.32157"></a>
<span class="sourceLineNo">32158</span> final double ix = it.aDouble;<a name="line.32158"></a>
<span class="sourceLineNo">32159</span> long ox;<a name="line.32159"></a>
<span class="sourceLineNo">32160</span> ox = toLong(ix);<a name="line.32160"></a>
<span class="sourceLineNo">32161</span> for (int j = 0; j &lt; is; j++) {<a name="line.32161"></a>
<span class="sourceLineNo">32162</span> oai64data[it.oIndex + j] = ox;<a name="line.32162"></a>
<span class="sourceLineNo">32163</span> }<a name="line.32163"></a>
<span class="sourceLineNo">32164</span> }<a name="line.32164"></a>
<span class="sourceLineNo">32165</span> } else {<a name="line.32165"></a>
<span class="sourceLineNo">32166</span> while (it.hasNext()) {<a name="line.32166"></a>
<span class="sourceLineNo">32167</span> final long ix = it.aLong;<a name="line.32167"></a>
<span class="sourceLineNo">32168</span> long ox;<a name="line.32168"></a>
<span class="sourceLineNo">32169</span> ox = toLong(ix);<a name="line.32169"></a>
<span class="sourceLineNo">32170</span> for (int j = 0; j &lt; is; j++) {<a name="line.32170"></a>
<span class="sourceLineNo">32171</span> oai64data[it.oIndex + j] = ox;<a name="line.32171"></a>
<span class="sourceLineNo">32172</span> }<a name="line.32172"></a>
<span class="sourceLineNo">32173</span> }<a name="line.32173"></a>
<span class="sourceLineNo">32174</span> }<a name="line.32174"></a>
<span class="sourceLineNo">32175</span> } else {<a name="line.32175"></a>
<span class="sourceLineNo">32176</span> if (it.isOutputDouble()) {<a name="line.32176"></a>
<span class="sourceLineNo">32177</span> while (it.hasNext()) {<a name="line.32177"></a>
<span class="sourceLineNo">32178</span> for (int j = 0; j &lt; is; j++) {<a name="line.32178"></a>
<span class="sourceLineNo">32179</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.32179"></a>
<span class="sourceLineNo">32180</span> long ox;<a name="line.32180"></a>
<span class="sourceLineNo">32181</span> ox = toLong(ix);<a name="line.32181"></a>
<span class="sourceLineNo">32182</span> oai64data[it.oIndex + j] = ox;<a name="line.32182"></a>
<span class="sourceLineNo">32183</span> }<a name="line.32183"></a>
<span class="sourceLineNo">32184</span> }<a name="line.32184"></a>
<span class="sourceLineNo">32185</span> } else {<a name="line.32185"></a>
<span class="sourceLineNo">32186</span> while (it.hasNext()) {<a name="line.32186"></a>
<span class="sourceLineNo">32187</span> for (int j = 0; j &lt; is; j++) {<a name="line.32187"></a>
<span class="sourceLineNo">32188</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.32188"></a>
<span class="sourceLineNo">32189</span> long ox;<a name="line.32189"></a>
<span class="sourceLineNo">32190</span> ox = toLong(ix);<a name="line.32190"></a>
<span class="sourceLineNo">32191</span> oai64data[it.oIndex + j] = ox;<a name="line.32191"></a>
<span class="sourceLineNo">32192</span> }<a name="line.32192"></a>
<span class="sourceLineNo">32193</span> }<a name="line.32193"></a>
<span class="sourceLineNo">32194</span> }<a name="line.32194"></a>
<span class="sourceLineNo">32195</span> }<a name="line.32195"></a>
<span class="sourceLineNo">32196</span> break;<a name="line.32196"></a>
<span class="sourceLineNo">32197</span> case Dataset.ARRAYINT32:<a name="line.32197"></a>
<span class="sourceLineNo">32198</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.32198"></a>
<span class="sourceLineNo">32199</span> if (is == 1) {<a name="line.32199"></a>
<span class="sourceLineNo">32200</span> if (it.isOutputDouble()) {<a name="line.32200"></a>
<span class="sourceLineNo">32201</span> while (it.hasNext()) {<a name="line.32201"></a>
<span class="sourceLineNo">32202</span> final double ix = it.aDouble;<a name="line.32202"></a>
<span class="sourceLineNo">32203</span> int ox;<a name="line.32203"></a>
<span class="sourceLineNo">32204</span> ox = (int) toLong(ix);<a name="line.32204"></a>
<span class="sourceLineNo">32205</span> oai32data[it.oIndex] = ox;<a name="line.32205"></a>
<span class="sourceLineNo">32206</span> }<a name="line.32206"></a>
<span class="sourceLineNo">32207</span> } else {<a name="line.32207"></a>
<span class="sourceLineNo">32208</span> while (it.hasNext()) {<a name="line.32208"></a>
<span class="sourceLineNo">32209</span> final long ix = it.aLong;<a name="line.32209"></a>
<span class="sourceLineNo">32210</span> int ox;<a name="line.32210"></a>
<span class="sourceLineNo">32211</span> ox = (int) toLong(ix);<a name="line.32211"></a>
<span class="sourceLineNo">32212</span> oai32data[it.oIndex] = ox;<a name="line.32212"></a>
<span class="sourceLineNo">32213</span> }<a name="line.32213"></a>
<span class="sourceLineNo">32214</span> }<a name="line.32214"></a>
<span class="sourceLineNo">32215</span> } else if (as == 1) {<a name="line.32215"></a>
<span class="sourceLineNo">32216</span> if (it.isOutputDouble()) {<a name="line.32216"></a>
<span class="sourceLineNo">32217</span> while (it.hasNext()) {<a name="line.32217"></a>
<span class="sourceLineNo">32218</span> final double ix = it.aDouble;<a name="line.32218"></a>
<span class="sourceLineNo">32219</span> int ox;<a name="line.32219"></a>
<span class="sourceLineNo">32220</span> ox = (int) toLong(ix);<a name="line.32220"></a>
<span class="sourceLineNo">32221</span> for (int j = 0; j &lt; is; j++) {<a name="line.32221"></a>
<span class="sourceLineNo">32222</span> oai32data[it.oIndex + j] = ox;<a name="line.32222"></a>
<span class="sourceLineNo">32223</span> }<a name="line.32223"></a>
<span class="sourceLineNo">32224</span> }<a name="line.32224"></a>
<span class="sourceLineNo">32225</span> } else {<a name="line.32225"></a>
<span class="sourceLineNo">32226</span> while (it.hasNext()) {<a name="line.32226"></a>
<span class="sourceLineNo">32227</span> final long ix = it.aLong;<a name="line.32227"></a>
<span class="sourceLineNo">32228</span> int ox;<a name="line.32228"></a>
<span class="sourceLineNo">32229</span> ox = (int) toLong(ix);<a name="line.32229"></a>
<span class="sourceLineNo">32230</span> for (int j = 0; j &lt; is; j++) {<a name="line.32230"></a>
<span class="sourceLineNo">32231</span> oai32data[it.oIndex + j] = ox;<a name="line.32231"></a>
<span class="sourceLineNo">32232</span> }<a name="line.32232"></a>
<span class="sourceLineNo">32233</span> }<a name="line.32233"></a>
<span class="sourceLineNo">32234</span> }<a name="line.32234"></a>
<span class="sourceLineNo">32235</span> } else {<a name="line.32235"></a>
<span class="sourceLineNo">32236</span> if (it.isOutputDouble()) {<a name="line.32236"></a>
<span class="sourceLineNo">32237</span> while (it.hasNext()) {<a name="line.32237"></a>
<span class="sourceLineNo">32238</span> for (int j = 0; j &lt; is; j++) {<a name="line.32238"></a>
<span class="sourceLineNo">32239</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.32239"></a>
<span class="sourceLineNo">32240</span> int ox;<a name="line.32240"></a>
<span class="sourceLineNo">32241</span> ox = (int) toLong(ix);<a name="line.32241"></a>
<span class="sourceLineNo">32242</span> oai32data[it.oIndex + j] = ox;<a name="line.32242"></a>
<span class="sourceLineNo">32243</span> }<a name="line.32243"></a>
<span class="sourceLineNo">32244</span> }<a name="line.32244"></a>
<span class="sourceLineNo">32245</span> } else {<a name="line.32245"></a>
<span class="sourceLineNo">32246</span> while (it.hasNext()) {<a name="line.32246"></a>
<span class="sourceLineNo">32247</span> for (int j = 0; j &lt; is; j++) {<a name="line.32247"></a>
<span class="sourceLineNo">32248</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.32248"></a>
<span class="sourceLineNo">32249</span> int ox;<a name="line.32249"></a>
<span class="sourceLineNo">32250</span> ox = (int) toLong(ix);<a name="line.32250"></a>
<span class="sourceLineNo">32251</span> oai32data[it.oIndex + j] = ox;<a name="line.32251"></a>
<span class="sourceLineNo">32252</span> }<a name="line.32252"></a>
<span class="sourceLineNo">32253</span> }<a name="line.32253"></a>
<span class="sourceLineNo">32254</span> }<a name="line.32254"></a>
<span class="sourceLineNo">32255</span> }<a name="line.32255"></a>
<span class="sourceLineNo">32256</span> break;<a name="line.32256"></a>
<span class="sourceLineNo">32257</span> case Dataset.FLOAT32:<a name="line.32257"></a>
<span class="sourceLineNo">32258</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.32258"></a>
<span class="sourceLineNo">32259</span> if (it.isOutputDouble()) {<a name="line.32259"></a>
<span class="sourceLineNo">32260</span> while (it.hasNext()) {<a name="line.32260"></a>
<span class="sourceLineNo">32261</span> final double ix = it.aDouble;<a name="line.32261"></a>
<span class="sourceLineNo">32262</span> float ox;<a name="line.32262"></a>
<span class="sourceLineNo">32263</span> ox = (float) (toLong(ix));<a name="line.32263"></a>
<span class="sourceLineNo">32264</span> of32data[it.oIndex] = ox;<a name="line.32264"></a>
<span class="sourceLineNo">32265</span> }<a name="line.32265"></a>
<span class="sourceLineNo">32266</span> } else {<a name="line.32266"></a>
<span class="sourceLineNo">32267</span> while (it.hasNext()) {<a name="line.32267"></a>
<span class="sourceLineNo">32268</span> final long ix = it.aLong;<a name="line.32268"></a>
<span class="sourceLineNo">32269</span> float ox;<a name="line.32269"></a>
<span class="sourceLineNo">32270</span> ox = (toLong(ix));<a name="line.32270"></a>
<span class="sourceLineNo">32271</span> of32data[it.oIndex] = ox;<a name="line.32271"></a>
<span class="sourceLineNo">32272</span> }<a name="line.32272"></a>
<span class="sourceLineNo">32273</span> }<a name="line.32273"></a>
<span class="sourceLineNo">32274</span> break;<a name="line.32274"></a>
<span class="sourceLineNo">32275</span> case Dataset.FLOAT64:<a name="line.32275"></a>
<span class="sourceLineNo">32276</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.32276"></a>
<span class="sourceLineNo">32277</span> if (it.isOutputDouble()) {<a name="line.32277"></a>
<span class="sourceLineNo">32278</span> while (it.hasNext()) {<a name="line.32278"></a>
<span class="sourceLineNo">32279</span> final double ix = it.aDouble;<a name="line.32279"></a>
<span class="sourceLineNo">32280</span> double ox;<a name="line.32280"></a>
<span class="sourceLineNo">32281</span> ox = (toLong(ix));<a name="line.32281"></a>
<span class="sourceLineNo">32282</span> of64data[it.oIndex] = ox;<a name="line.32282"></a>
<span class="sourceLineNo">32283</span> }<a name="line.32283"></a>
<span class="sourceLineNo">32284</span> } else {<a name="line.32284"></a>
<span class="sourceLineNo">32285</span> while (it.hasNext()) {<a name="line.32285"></a>
<span class="sourceLineNo">32286</span> final long ix = it.aLong;<a name="line.32286"></a>
<span class="sourceLineNo">32287</span> double ox;<a name="line.32287"></a>
<span class="sourceLineNo">32288</span> ox = (toLong(ix));<a name="line.32288"></a>
<span class="sourceLineNo">32289</span> of64data[it.oIndex] = ox;<a name="line.32289"></a>
<span class="sourceLineNo">32290</span> }<a name="line.32290"></a>
<span class="sourceLineNo">32291</span> }<a name="line.32291"></a>
<span class="sourceLineNo">32292</span> break;<a name="line.32292"></a>
<span class="sourceLineNo">32293</span> case Dataset.ARRAYFLOAT32:<a name="line.32293"></a>
<span class="sourceLineNo">32294</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.32294"></a>
<span class="sourceLineNo">32295</span> if (is == 1) {<a name="line.32295"></a>
<span class="sourceLineNo">32296</span> if (it.isOutputDouble()) {<a name="line.32296"></a>
<span class="sourceLineNo">32297</span> while (it.hasNext()) {<a name="line.32297"></a>
<span class="sourceLineNo">32298</span> final double ix = it.aDouble;<a name="line.32298"></a>
<span class="sourceLineNo">32299</span> float ox;<a name="line.32299"></a>
<span class="sourceLineNo">32300</span> ox = (float) (toLong(ix));<a name="line.32300"></a>
<span class="sourceLineNo">32301</span> oaf32data[it.oIndex] = ox;<a name="line.32301"></a>
<span class="sourceLineNo">32302</span> }<a name="line.32302"></a>
<span class="sourceLineNo">32303</span> } else {<a name="line.32303"></a>
<span class="sourceLineNo">32304</span> while (it.hasNext()) {<a name="line.32304"></a>
<span class="sourceLineNo">32305</span> final long ix = it.aLong;<a name="line.32305"></a>
<span class="sourceLineNo">32306</span> float ox;<a name="line.32306"></a>
<span class="sourceLineNo">32307</span> ox = (toLong(ix));<a name="line.32307"></a>
<span class="sourceLineNo">32308</span> oaf32data[it.oIndex] = ox;<a name="line.32308"></a>
<span class="sourceLineNo">32309</span> }<a name="line.32309"></a>
<span class="sourceLineNo">32310</span> }<a name="line.32310"></a>
<span class="sourceLineNo">32311</span> } else if (as == 1) {<a name="line.32311"></a>
<span class="sourceLineNo">32312</span> if (it.isOutputDouble()) {<a name="line.32312"></a>
<span class="sourceLineNo">32313</span> while (it.hasNext()) {<a name="line.32313"></a>
<span class="sourceLineNo">32314</span> final double ix = it.aDouble;<a name="line.32314"></a>
<span class="sourceLineNo">32315</span> float ox;<a name="line.32315"></a>
<span class="sourceLineNo">32316</span> ox = (float) (toLong(ix));<a name="line.32316"></a>
<span class="sourceLineNo">32317</span> for (int j = 0; j &lt; is; j++) {<a name="line.32317"></a>
<span class="sourceLineNo">32318</span> oaf32data[it.oIndex + j] = ox;<a name="line.32318"></a>
<span class="sourceLineNo">32319</span> }<a name="line.32319"></a>
<span class="sourceLineNo">32320</span> }<a name="line.32320"></a>
<span class="sourceLineNo">32321</span> } else {<a name="line.32321"></a>
<span class="sourceLineNo">32322</span> while (it.hasNext()) {<a name="line.32322"></a>
<span class="sourceLineNo">32323</span> final long ix = it.aLong;<a name="line.32323"></a>
<span class="sourceLineNo">32324</span> float ox;<a name="line.32324"></a>
<span class="sourceLineNo">32325</span> ox = (toLong(ix));<a name="line.32325"></a>
<span class="sourceLineNo">32326</span> for (int j = 0; j &lt; is; j++) {<a name="line.32326"></a>
<span class="sourceLineNo">32327</span> oaf32data[it.oIndex + j] = ox;<a name="line.32327"></a>
<span class="sourceLineNo">32328</span> }<a name="line.32328"></a>
<span class="sourceLineNo">32329</span> }<a name="line.32329"></a>
<span class="sourceLineNo">32330</span> }<a name="line.32330"></a>
<span class="sourceLineNo">32331</span> } else {<a name="line.32331"></a>
<span class="sourceLineNo">32332</span> if (it.isOutputDouble()) {<a name="line.32332"></a>
<span class="sourceLineNo">32333</span> while (it.hasNext()) {<a name="line.32333"></a>
<span class="sourceLineNo">32334</span> for (int j = 0; j &lt; is; j++) {<a name="line.32334"></a>
<span class="sourceLineNo">32335</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.32335"></a>
<span class="sourceLineNo">32336</span> float ox;<a name="line.32336"></a>
<span class="sourceLineNo">32337</span> ox = (float) (toLong(ix));<a name="line.32337"></a>
<span class="sourceLineNo">32338</span> oaf32data[it.oIndex + j] = ox;<a name="line.32338"></a>
<span class="sourceLineNo">32339</span> }<a name="line.32339"></a>
<span class="sourceLineNo">32340</span> }<a name="line.32340"></a>
<span class="sourceLineNo">32341</span> } else {<a name="line.32341"></a>
<span class="sourceLineNo">32342</span> while (it.hasNext()) {<a name="line.32342"></a>
<span class="sourceLineNo">32343</span> for (int j = 0; j &lt; is; j++) {<a name="line.32343"></a>
<span class="sourceLineNo">32344</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.32344"></a>
<span class="sourceLineNo">32345</span> float ox;<a name="line.32345"></a>
<span class="sourceLineNo">32346</span> ox = (toLong(ix));<a name="line.32346"></a>
<span class="sourceLineNo">32347</span> oaf32data[it.oIndex + j] = ox;<a name="line.32347"></a>
<span class="sourceLineNo">32348</span> }<a name="line.32348"></a>
<span class="sourceLineNo">32349</span> }<a name="line.32349"></a>
<span class="sourceLineNo">32350</span> }<a name="line.32350"></a>
<span class="sourceLineNo">32351</span> }<a name="line.32351"></a>
<span class="sourceLineNo">32352</span> break;<a name="line.32352"></a>
<span class="sourceLineNo">32353</span> case Dataset.ARRAYFLOAT64:<a name="line.32353"></a>
<span class="sourceLineNo">32354</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.32354"></a>
<span class="sourceLineNo">32355</span> if (is == 1) {<a name="line.32355"></a>
<span class="sourceLineNo">32356</span> if (it.isOutputDouble()) {<a name="line.32356"></a>
<span class="sourceLineNo">32357</span> while (it.hasNext()) {<a name="line.32357"></a>
<span class="sourceLineNo">32358</span> final double ix = it.aDouble;<a name="line.32358"></a>
<span class="sourceLineNo">32359</span> double ox;<a name="line.32359"></a>
<span class="sourceLineNo">32360</span> ox = (toLong(ix));<a name="line.32360"></a>
<span class="sourceLineNo">32361</span> oaf64data[it.oIndex] = ox;<a name="line.32361"></a>
<span class="sourceLineNo">32362</span> }<a name="line.32362"></a>
<span class="sourceLineNo">32363</span> } else {<a name="line.32363"></a>
<span class="sourceLineNo">32364</span> while (it.hasNext()) {<a name="line.32364"></a>
<span class="sourceLineNo">32365</span> final long ix = it.aLong;<a name="line.32365"></a>
<span class="sourceLineNo">32366</span> double ox;<a name="line.32366"></a>
<span class="sourceLineNo">32367</span> ox = (toLong(ix));<a name="line.32367"></a>
<span class="sourceLineNo">32368</span> oaf64data[it.oIndex] = ox;<a name="line.32368"></a>
<span class="sourceLineNo">32369</span> }<a name="line.32369"></a>
<span class="sourceLineNo">32370</span> }<a name="line.32370"></a>
<span class="sourceLineNo">32371</span> } else if (as == 1) {<a name="line.32371"></a>
<span class="sourceLineNo">32372</span> if (it.isOutputDouble()) {<a name="line.32372"></a>
<span class="sourceLineNo">32373</span> while (it.hasNext()) {<a name="line.32373"></a>
<span class="sourceLineNo">32374</span> final double ix = it.aDouble;<a name="line.32374"></a>
<span class="sourceLineNo">32375</span> double ox;<a name="line.32375"></a>
<span class="sourceLineNo">32376</span> ox = (toLong(ix));<a name="line.32376"></a>
<span class="sourceLineNo">32377</span> for (int j = 0; j &lt; is; j++) {<a name="line.32377"></a>
<span class="sourceLineNo">32378</span> oaf64data[it.oIndex + j] = ox;<a name="line.32378"></a>
<span class="sourceLineNo">32379</span> }<a name="line.32379"></a>
<span class="sourceLineNo">32380</span> }<a name="line.32380"></a>
<span class="sourceLineNo">32381</span> } else {<a name="line.32381"></a>
<span class="sourceLineNo">32382</span> while (it.hasNext()) {<a name="line.32382"></a>
<span class="sourceLineNo">32383</span> final long ix = it.aLong;<a name="line.32383"></a>
<span class="sourceLineNo">32384</span> double ox;<a name="line.32384"></a>
<span class="sourceLineNo">32385</span> ox = (toLong(ix));<a name="line.32385"></a>
<span class="sourceLineNo">32386</span> for (int j = 0; j &lt; is; j++) {<a name="line.32386"></a>
<span class="sourceLineNo">32387</span> oaf64data[it.oIndex + j] = ox;<a name="line.32387"></a>
<span class="sourceLineNo">32388</span> }<a name="line.32388"></a>
<span class="sourceLineNo">32389</span> }<a name="line.32389"></a>
<span class="sourceLineNo">32390</span> }<a name="line.32390"></a>
<span class="sourceLineNo">32391</span> } else {<a name="line.32391"></a>
<span class="sourceLineNo">32392</span> if (it.isOutputDouble()) {<a name="line.32392"></a>
<span class="sourceLineNo">32393</span> while (it.hasNext()) {<a name="line.32393"></a>
<span class="sourceLineNo">32394</span> for (int j = 0; j &lt; is; j++) {<a name="line.32394"></a>
<span class="sourceLineNo">32395</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.32395"></a>
<span class="sourceLineNo">32396</span> double ox;<a name="line.32396"></a>
<span class="sourceLineNo">32397</span> ox = (toLong(ix));<a name="line.32397"></a>
<span class="sourceLineNo">32398</span> oaf64data[it.oIndex + j] = ox;<a name="line.32398"></a>
<span class="sourceLineNo">32399</span> }<a name="line.32399"></a>
<span class="sourceLineNo">32400</span> }<a name="line.32400"></a>
<span class="sourceLineNo">32401</span> } else {<a name="line.32401"></a>
<span class="sourceLineNo">32402</span> while (it.hasNext()) {<a name="line.32402"></a>
<span class="sourceLineNo">32403</span> for (int j = 0; j &lt; is; j++) {<a name="line.32403"></a>
<span class="sourceLineNo">32404</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.32404"></a>
<span class="sourceLineNo">32405</span> double ox;<a name="line.32405"></a>
<span class="sourceLineNo">32406</span> ox = (toLong(ix));<a name="line.32406"></a>
<span class="sourceLineNo">32407</span> oaf64data[it.oIndex + j] = ox;<a name="line.32407"></a>
<span class="sourceLineNo">32408</span> }<a name="line.32408"></a>
<span class="sourceLineNo">32409</span> }<a name="line.32409"></a>
<span class="sourceLineNo">32410</span> }<a name="line.32410"></a>
<span class="sourceLineNo">32411</span> }<a name="line.32411"></a>
<span class="sourceLineNo">32412</span> break;<a name="line.32412"></a>
<span class="sourceLineNo">32413</span> case Dataset.COMPLEX64:<a name="line.32413"></a>
<span class="sourceLineNo">32414</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.32414"></a>
<span class="sourceLineNo">32415</span> if (!da.isComplex()) {<a name="line.32415"></a>
<span class="sourceLineNo">32416</span> if (it.isOutputDouble()) {<a name="line.32416"></a>
<span class="sourceLineNo">32417</span> final double iy = 0;<a name="line.32417"></a>
<span class="sourceLineNo">32418</span> while (it.hasNext()) {<a name="line.32418"></a>
<span class="sourceLineNo">32419</span> final double ix = it.aDouble;<a name="line.32419"></a>
<span class="sourceLineNo">32420</span> float ox;<a name="line.32420"></a>
<span class="sourceLineNo">32421</span> float oy;<a name="line.32421"></a>
<span class="sourceLineNo">32422</span> ox = (float) (toLong(ix));<a name="line.32422"></a>
<span class="sourceLineNo">32423</span> oy = (float) (toLong(iy));<a name="line.32423"></a>
<span class="sourceLineNo">32424</span> oc64data[it.oIndex] = ox;<a name="line.32424"></a>
<span class="sourceLineNo">32425</span> oc64data[it.oIndex + 1] = oy;<a name="line.32425"></a>
<span class="sourceLineNo">32426</span> }<a name="line.32426"></a>
<span class="sourceLineNo">32427</span> } else {<a name="line.32427"></a>
<span class="sourceLineNo">32428</span> final long iy = 0;<a name="line.32428"></a>
<span class="sourceLineNo">32429</span> while (it.hasNext()) {<a name="line.32429"></a>
<span class="sourceLineNo">32430</span> final long ix = it.aLong;<a name="line.32430"></a>
<span class="sourceLineNo">32431</span> float ox;<a name="line.32431"></a>
<span class="sourceLineNo">32432</span> float oy;<a name="line.32432"></a>
<span class="sourceLineNo">32433</span> ox = (float) toLong(toLong(ix));<a name="line.32433"></a>
<span class="sourceLineNo">32434</span> oy = (float) toLong(toLong(iy));<a name="line.32434"></a>
<span class="sourceLineNo">32435</span> oc64data[it.oIndex] = ox;<a name="line.32435"></a>
<span class="sourceLineNo">32436</span> oc64data[it.oIndex + 1] = oy;<a name="line.32436"></a>
<span class="sourceLineNo">32437</span> }<a name="line.32437"></a>
<span class="sourceLineNo">32438</span> }<a name="line.32438"></a>
<span class="sourceLineNo">32439</span> } else {<a name="line.32439"></a>
<span class="sourceLineNo">32440</span> while (it.hasNext()) {<a name="line.32440"></a>
<span class="sourceLineNo">32441</span> final double ix = it.aDouble;<a name="line.32441"></a>
<span class="sourceLineNo">32442</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.32442"></a>
<span class="sourceLineNo">32443</span> float ox;<a name="line.32443"></a>
<span class="sourceLineNo">32444</span> float oy;<a name="line.32444"></a>
<span class="sourceLineNo">32445</span> ox = (float) (toLong(ix));<a name="line.32445"></a>
<span class="sourceLineNo">32446</span> oy = (float) (toLong(iy));<a name="line.32446"></a>
<span class="sourceLineNo">32447</span> oc64data[it.oIndex] = ox;<a name="line.32447"></a>
<span class="sourceLineNo">32448</span> oc64data[it.oIndex + 1] = oy;<a name="line.32448"></a>
<span class="sourceLineNo">32449</span> }<a name="line.32449"></a>
<span class="sourceLineNo">32450</span> }<a name="line.32450"></a>
<span class="sourceLineNo">32451</span> break;<a name="line.32451"></a>
<span class="sourceLineNo">32452</span> case Dataset.COMPLEX128:<a name="line.32452"></a>
<span class="sourceLineNo">32453</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.32453"></a>
<span class="sourceLineNo">32454</span> if (!da.isComplex()) {<a name="line.32454"></a>
<span class="sourceLineNo">32455</span> if (it.isOutputDouble()) {<a name="line.32455"></a>
<span class="sourceLineNo">32456</span> final double iy = 0;<a name="line.32456"></a>
<span class="sourceLineNo">32457</span> while (it.hasNext()) {<a name="line.32457"></a>
<span class="sourceLineNo">32458</span> final double ix = it.aDouble;<a name="line.32458"></a>
<span class="sourceLineNo">32459</span> double ox;<a name="line.32459"></a>
<span class="sourceLineNo">32460</span> double oy;<a name="line.32460"></a>
<span class="sourceLineNo">32461</span> ox = (toLong(ix));<a name="line.32461"></a>
<span class="sourceLineNo">32462</span> oy = (toLong(iy));<a name="line.32462"></a>
<span class="sourceLineNo">32463</span> oc128data[it.oIndex] = ox;<a name="line.32463"></a>
<span class="sourceLineNo">32464</span> oc128data[it.oIndex + 1] = oy;<a name="line.32464"></a>
<span class="sourceLineNo">32465</span> }<a name="line.32465"></a>
<span class="sourceLineNo">32466</span> } else {<a name="line.32466"></a>
<span class="sourceLineNo">32467</span> final long iy = 0;<a name="line.32467"></a>
<span class="sourceLineNo">32468</span> while (it.hasNext()) {<a name="line.32468"></a>
<span class="sourceLineNo">32469</span> final long ix = it.aLong;<a name="line.32469"></a>
<span class="sourceLineNo">32470</span> double ox;<a name="line.32470"></a>
<span class="sourceLineNo">32471</span> double oy;<a name="line.32471"></a>
<span class="sourceLineNo">32472</span> ox = (toLong(ix));<a name="line.32472"></a>
<span class="sourceLineNo">32473</span> oy = (toLong(iy));<a name="line.32473"></a>
<span class="sourceLineNo">32474</span> oc128data[it.oIndex] = ox;<a name="line.32474"></a>
<span class="sourceLineNo">32475</span> oc128data[it.oIndex + 1] = oy;<a name="line.32475"></a>
<span class="sourceLineNo">32476</span> }<a name="line.32476"></a>
<span class="sourceLineNo">32477</span> }<a name="line.32477"></a>
<span class="sourceLineNo">32478</span> } else {<a name="line.32478"></a>
<span class="sourceLineNo">32479</span> while (it.hasNext()) {<a name="line.32479"></a>
<span class="sourceLineNo">32480</span> final double ix = it.aDouble;<a name="line.32480"></a>
<span class="sourceLineNo">32481</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.32481"></a>
<span class="sourceLineNo">32482</span> double ox;<a name="line.32482"></a>
<span class="sourceLineNo">32483</span> double oy;<a name="line.32483"></a>
<span class="sourceLineNo">32484</span> ox = (toLong(ix));<a name="line.32484"></a>
<span class="sourceLineNo">32485</span> oy = (toLong(iy));<a name="line.32485"></a>
<span class="sourceLineNo">32486</span> oc128data[it.oIndex] = ox;<a name="line.32486"></a>
<span class="sourceLineNo">32487</span> oc128data[it.oIndex + 1] = oy;<a name="line.32487"></a>
<span class="sourceLineNo">32488</span> }<a name="line.32488"></a>
<span class="sourceLineNo">32489</span> }<a name="line.32489"></a>
<span class="sourceLineNo">32490</span> break;<a name="line.32490"></a>
<span class="sourceLineNo">32491</span> default:<a name="line.32491"></a>
<span class="sourceLineNo">32492</span> throw new IllegalArgumentException("truncate supports integer, compound integer, real, compound real, complex datasets only");<a name="line.32492"></a>
<span class="sourceLineNo">32493</span> }<a name="line.32493"></a>
<span class="sourceLineNo">32494</span><a name="line.32494"></a>
<span class="sourceLineNo">32495</span> addFunctionName(result, "truncate");<a name="line.32495"></a>
<span class="sourceLineNo">32496</span> return result;<a name="line.32496"></a>
<span class="sourceLineNo">32497</span> }<a name="line.32497"></a>
<span class="sourceLineNo">32498</span><a name="line.32498"></a>
<span class="sourceLineNo">32499</span> /**<a name="line.32499"></a>
<span class="sourceLineNo">32500</span> * toDegrees - convert to degrees<a name="line.32500"></a>
<span class="sourceLineNo">32501</span> * @param a<a name="line.32501"></a>
<span class="sourceLineNo">32502</span> * @return dataset<a name="line.32502"></a>
<span class="sourceLineNo">32503</span> */<a name="line.32503"></a>
<span class="sourceLineNo">32504</span> public static Dataset toDegrees(final Object a) {<a name="line.32504"></a>
<span class="sourceLineNo">32505</span> return toDegrees(a, null);<a name="line.32505"></a>
<span class="sourceLineNo">32506</span> }<a name="line.32506"></a>
<span class="sourceLineNo">32507</span><a name="line.32507"></a>
<span class="sourceLineNo">32508</span> /**<a name="line.32508"></a>
<span class="sourceLineNo">32509</span> * toDegrees - convert to degrees<a name="line.32509"></a>
<span class="sourceLineNo">32510</span> * @param a<a name="line.32510"></a>
<span class="sourceLineNo">32511</span> * @param o output can be null - in which case, a new dataset is created<a name="line.32511"></a>
<span class="sourceLineNo">32512</span> * @return dataset<a name="line.32512"></a>
<span class="sourceLineNo">32513</span> */<a name="line.32513"></a>
<span class="sourceLineNo">32514</span> public static Dataset toDegrees(final Object a, final Dataset o) {<a name="line.32514"></a>
<span class="sourceLineNo">32515</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.32515"></a>
<span class="sourceLineNo">32516</span> SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true);<a name="line.32516"></a>
<span class="sourceLineNo">32517</span> final Dataset result = it.getOutput();<a name="line.32517"></a>
<span class="sourceLineNo">32518</span> if (!result.isComplex()) {<a name="line.32518"></a>
<span class="sourceLineNo">32519</span> if (da.isComplex()) {<a name="line.32519"></a>
<span class="sourceLineNo">32520</span> da = da.getRealView();<a name="line.32520"></a>
<span class="sourceLineNo">32521</span> it = new SingleInputBroadcastIterator(da, result, true);<a name="line.32521"></a>
<span class="sourceLineNo">32522</span> }<a name="line.32522"></a>
<span class="sourceLineNo">32523</span> }<a name="line.32523"></a>
<span class="sourceLineNo">32524</span> final int is = result.getElementsPerItem();<a name="line.32524"></a>
<span class="sourceLineNo">32525</span> final int as = da.getElementsPerItem();<a name="line.32525"></a>
<span class="sourceLineNo">32526</span> final int dt = result.getDType();<a name="line.32526"></a>
<span class="sourceLineNo">32527</span><a name="line.32527"></a>
<span class="sourceLineNo">32528</span> switch(dt) {<a name="line.32528"></a>
<span class="sourceLineNo">32529</span> case Dataset.INT8:<a name="line.32529"></a>
<span class="sourceLineNo">32530</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.32530"></a>
<span class="sourceLineNo">32531</span> if (it.isOutputDouble()) {<a name="line.32531"></a>
<span class="sourceLineNo">32532</span> while (it.hasNext()) {<a name="line.32532"></a>
<span class="sourceLineNo">32533</span> final double ix = it.aDouble;<a name="line.32533"></a>
<span class="sourceLineNo">32534</span> byte ox;<a name="line.32534"></a>
<span class="sourceLineNo">32535</span> ox = (byte) toLong(Math.toDegrees(ix));<a name="line.32535"></a>
<span class="sourceLineNo">32536</span> oi8data[it.oIndex] = ox;<a name="line.32536"></a>
<span class="sourceLineNo">32537</span> }<a name="line.32537"></a>
<span class="sourceLineNo">32538</span> } else {<a name="line.32538"></a>
<span class="sourceLineNo">32539</span> while (it.hasNext()) {<a name="line.32539"></a>
<span class="sourceLineNo">32540</span> final long ix = it.aLong;<a name="line.32540"></a>
<span class="sourceLineNo">32541</span> byte ox;<a name="line.32541"></a>
<span class="sourceLineNo">32542</span> ox = (byte) toLong(Math.toDegrees(ix));<a name="line.32542"></a>
<span class="sourceLineNo">32543</span> oi8data[it.oIndex] = ox;<a name="line.32543"></a>
<span class="sourceLineNo">32544</span> }<a name="line.32544"></a>
<span class="sourceLineNo">32545</span> }<a name="line.32545"></a>
<span class="sourceLineNo">32546</span> break;<a name="line.32546"></a>
<span class="sourceLineNo">32547</span> case Dataset.INT16:<a name="line.32547"></a>
<span class="sourceLineNo">32548</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.32548"></a>
<span class="sourceLineNo">32549</span> if (it.isOutputDouble()) {<a name="line.32549"></a>
<span class="sourceLineNo">32550</span> while (it.hasNext()) {<a name="line.32550"></a>
<span class="sourceLineNo">32551</span> final double ix = it.aDouble;<a name="line.32551"></a>
<span class="sourceLineNo">32552</span> short ox;<a name="line.32552"></a>
<span class="sourceLineNo">32553</span> ox = (short) toLong(Math.toDegrees(ix));<a name="line.32553"></a>
<span class="sourceLineNo">32554</span> oi16data[it.oIndex] = ox;<a name="line.32554"></a>
<span class="sourceLineNo">32555</span> }<a name="line.32555"></a>
<span class="sourceLineNo">32556</span> } else {<a name="line.32556"></a>
<span class="sourceLineNo">32557</span> while (it.hasNext()) {<a name="line.32557"></a>
<span class="sourceLineNo">32558</span> final long ix = it.aLong;<a name="line.32558"></a>
<span class="sourceLineNo">32559</span> short ox;<a name="line.32559"></a>
<span class="sourceLineNo">32560</span> ox = (short) toLong(Math.toDegrees(ix));<a name="line.32560"></a>
<span class="sourceLineNo">32561</span> oi16data[it.oIndex] = ox;<a name="line.32561"></a>
<span class="sourceLineNo">32562</span> }<a name="line.32562"></a>
<span class="sourceLineNo">32563</span> }<a name="line.32563"></a>
<span class="sourceLineNo">32564</span> break;<a name="line.32564"></a>
<span class="sourceLineNo">32565</span> case Dataset.INT64:<a name="line.32565"></a>
<span class="sourceLineNo">32566</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.32566"></a>
<span class="sourceLineNo">32567</span> if (it.isOutputDouble()) {<a name="line.32567"></a>
<span class="sourceLineNo">32568</span> while (it.hasNext()) {<a name="line.32568"></a>
<span class="sourceLineNo">32569</span> final double ix = it.aDouble;<a name="line.32569"></a>
<span class="sourceLineNo">32570</span> long ox;<a name="line.32570"></a>
<span class="sourceLineNo">32571</span> ox = toLong(Math.toDegrees(ix));<a name="line.32571"></a>
<span class="sourceLineNo">32572</span> oi64data[it.oIndex] = ox;<a name="line.32572"></a>
<span class="sourceLineNo">32573</span> }<a name="line.32573"></a>
<span class="sourceLineNo">32574</span> } else {<a name="line.32574"></a>
<span class="sourceLineNo">32575</span> while (it.hasNext()) {<a name="line.32575"></a>
<span class="sourceLineNo">32576</span> final long ix = it.aLong;<a name="line.32576"></a>
<span class="sourceLineNo">32577</span> long ox;<a name="line.32577"></a>
<span class="sourceLineNo">32578</span> ox = toLong(Math.toDegrees(ix));<a name="line.32578"></a>
<span class="sourceLineNo">32579</span> oi64data[it.oIndex] = ox;<a name="line.32579"></a>
<span class="sourceLineNo">32580</span> }<a name="line.32580"></a>
<span class="sourceLineNo">32581</span> }<a name="line.32581"></a>
<span class="sourceLineNo">32582</span> break;<a name="line.32582"></a>
<span class="sourceLineNo">32583</span> case Dataset.INT32:<a name="line.32583"></a>
<span class="sourceLineNo">32584</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.32584"></a>
<span class="sourceLineNo">32585</span> if (it.isOutputDouble()) {<a name="line.32585"></a>
<span class="sourceLineNo">32586</span> while (it.hasNext()) {<a name="line.32586"></a>
<span class="sourceLineNo">32587</span> final double ix = it.aDouble;<a name="line.32587"></a>
<span class="sourceLineNo">32588</span> int ox;<a name="line.32588"></a>
<span class="sourceLineNo">32589</span> ox = (int) toLong(Math.toDegrees(ix));<a name="line.32589"></a>
<span class="sourceLineNo">32590</span> oi32data[it.oIndex] = ox;<a name="line.32590"></a>
<span class="sourceLineNo">32591</span> }<a name="line.32591"></a>
<span class="sourceLineNo">32592</span> } else {<a name="line.32592"></a>
<span class="sourceLineNo">32593</span> while (it.hasNext()) {<a name="line.32593"></a>
<span class="sourceLineNo">32594</span> final long ix = it.aLong;<a name="line.32594"></a>
<span class="sourceLineNo">32595</span> int ox;<a name="line.32595"></a>
<span class="sourceLineNo">32596</span> ox = (int) toLong(Math.toDegrees(ix));<a name="line.32596"></a>
<span class="sourceLineNo">32597</span> oi32data[it.oIndex] = ox;<a name="line.32597"></a>
<span class="sourceLineNo">32598</span> }<a name="line.32598"></a>
<span class="sourceLineNo">32599</span> }<a name="line.32599"></a>
<span class="sourceLineNo">32600</span> break;<a name="line.32600"></a>
<span class="sourceLineNo">32601</span> case Dataset.ARRAYINT8:<a name="line.32601"></a>
<span class="sourceLineNo">32602</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.32602"></a>
<span class="sourceLineNo">32603</span> if (is == 1) {<a name="line.32603"></a>
<span class="sourceLineNo">32604</span> if (it.isOutputDouble()) {<a name="line.32604"></a>
<span class="sourceLineNo">32605</span> while (it.hasNext()) {<a name="line.32605"></a>
<span class="sourceLineNo">32606</span> final double ix = it.aDouble;<a name="line.32606"></a>
<span class="sourceLineNo">32607</span> byte ox;<a name="line.32607"></a>
<span class="sourceLineNo">32608</span> ox = (byte) toLong(Math.toDegrees(ix));<a name="line.32608"></a>
<span class="sourceLineNo">32609</span> oai8data[it.oIndex] = ox;<a name="line.32609"></a>
<span class="sourceLineNo">32610</span> }<a name="line.32610"></a>
<span class="sourceLineNo">32611</span> } else {<a name="line.32611"></a>
<span class="sourceLineNo">32612</span> while (it.hasNext()) {<a name="line.32612"></a>
<span class="sourceLineNo">32613</span> final long ix = it.aLong;<a name="line.32613"></a>
<span class="sourceLineNo">32614</span> byte ox;<a name="line.32614"></a>
<span class="sourceLineNo">32615</span> ox = (byte) toLong(Math.toDegrees(ix));<a name="line.32615"></a>
<span class="sourceLineNo">32616</span> oai8data[it.oIndex] = ox;<a name="line.32616"></a>
<span class="sourceLineNo">32617</span> }<a name="line.32617"></a>
<span class="sourceLineNo">32618</span> }<a name="line.32618"></a>
<span class="sourceLineNo">32619</span> } else if (as == 1) {<a name="line.32619"></a>
<span class="sourceLineNo">32620</span> if (it.isOutputDouble()) {<a name="line.32620"></a>
<span class="sourceLineNo">32621</span> while (it.hasNext()) {<a name="line.32621"></a>
<span class="sourceLineNo">32622</span> final double ix = it.aDouble;<a name="line.32622"></a>
<span class="sourceLineNo">32623</span> byte ox;<a name="line.32623"></a>
<span class="sourceLineNo">32624</span> ox = (byte) toLong(Math.toDegrees(ix));<a name="line.32624"></a>
<span class="sourceLineNo">32625</span> for (int j = 0; j &lt; is; j++) {<a name="line.32625"></a>
<span class="sourceLineNo">32626</span> oai8data[it.oIndex + j] = ox;<a name="line.32626"></a>
<span class="sourceLineNo">32627</span> }<a name="line.32627"></a>
<span class="sourceLineNo">32628</span> }<a name="line.32628"></a>
<span class="sourceLineNo">32629</span> } else {<a name="line.32629"></a>
<span class="sourceLineNo">32630</span> while (it.hasNext()) {<a name="line.32630"></a>
<span class="sourceLineNo">32631</span> final long ix = it.aLong;<a name="line.32631"></a>
<span class="sourceLineNo">32632</span> byte ox;<a name="line.32632"></a>
<span class="sourceLineNo">32633</span> ox = (byte) toLong(Math.toDegrees(ix));<a name="line.32633"></a>
<span class="sourceLineNo">32634</span> for (int j = 0; j &lt; is; j++) {<a name="line.32634"></a>
<span class="sourceLineNo">32635</span> oai8data[it.oIndex + j] = ox;<a name="line.32635"></a>
<span class="sourceLineNo">32636</span> }<a name="line.32636"></a>
<span class="sourceLineNo">32637</span> }<a name="line.32637"></a>
<span class="sourceLineNo">32638</span> }<a name="line.32638"></a>
<span class="sourceLineNo">32639</span> } else {<a name="line.32639"></a>
<span class="sourceLineNo">32640</span> if (it.isOutputDouble()) {<a name="line.32640"></a>
<span class="sourceLineNo">32641</span> while (it.hasNext()) {<a name="line.32641"></a>
<span class="sourceLineNo">32642</span> for (int j = 0; j &lt; is; j++) {<a name="line.32642"></a>
<span class="sourceLineNo">32643</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.32643"></a>
<span class="sourceLineNo">32644</span> byte ox;<a name="line.32644"></a>
<span class="sourceLineNo">32645</span> ox = (byte) toLong(Math.toDegrees(ix));<a name="line.32645"></a>
<span class="sourceLineNo">32646</span> oai8data[it.oIndex + j] = ox;<a name="line.32646"></a>
<span class="sourceLineNo">32647</span> }<a name="line.32647"></a>
<span class="sourceLineNo">32648</span> }<a name="line.32648"></a>
<span class="sourceLineNo">32649</span> } else {<a name="line.32649"></a>
<span class="sourceLineNo">32650</span> while (it.hasNext()) {<a name="line.32650"></a>
<span class="sourceLineNo">32651</span> for (int j = 0; j &lt; is; j++) {<a name="line.32651"></a>
<span class="sourceLineNo">32652</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.32652"></a>
<span class="sourceLineNo">32653</span> byte ox;<a name="line.32653"></a>
<span class="sourceLineNo">32654</span> ox = (byte) toLong(Math.toDegrees(ix));<a name="line.32654"></a>
<span class="sourceLineNo">32655</span> oai8data[it.oIndex + j] = ox;<a name="line.32655"></a>
<span class="sourceLineNo">32656</span> }<a name="line.32656"></a>
<span class="sourceLineNo">32657</span> }<a name="line.32657"></a>
<span class="sourceLineNo">32658</span> }<a name="line.32658"></a>
<span class="sourceLineNo">32659</span> }<a name="line.32659"></a>
<span class="sourceLineNo">32660</span> break;<a name="line.32660"></a>
<span class="sourceLineNo">32661</span> case Dataset.ARRAYINT16:<a name="line.32661"></a>
<span class="sourceLineNo">32662</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.32662"></a>
<span class="sourceLineNo">32663</span> if (is == 1) {<a name="line.32663"></a>
<span class="sourceLineNo">32664</span> if (it.isOutputDouble()) {<a name="line.32664"></a>
<span class="sourceLineNo">32665</span> while (it.hasNext()) {<a name="line.32665"></a>
<span class="sourceLineNo">32666</span> final double ix = it.aDouble;<a name="line.32666"></a>
<span class="sourceLineNo">32667</span> short ox;<a name="line.32667"></a>
<span class="sourceLineNo">32668</span> ox = (short) toLong(Math.toDegrees(ix));<a name="line.32668"></a>
<span class="sourceLineNo">32669</span> oai16data[it.oIndex] = ox;<a name="line.32669"></a>
<span class="sourceLineNo">32670</span> }<a name="line.32670"></a>
<span class="sourceLineNo">32671</span> } else {<a name="line.32671"></a>
<span class="sourceLineNo">32672</span> while (it.hasNext()) {<a name="line.32672"></a>
<span class="sourceLineNo">32673</span> final long ix = it.aLong;<a name="line.32673"></a>
<span class="sourceLineNo">32674</span> short ox;<a name="line.32674"></a>
<span class="sourceLineNo">32675</span> ox = (short) toLong(Math.toDegrees(ix));<a name="line.32675"></a>
<span class="sourceLineNo">32676</span> oai16data[it.oIndex] = ox;<a name="line.32676"></a>
<span class="sourceLineNo">32677</span> }<a name="line.32677"></a>
<span class="sourceLineNo">32678</span> }<a name="line.32678"></a>
<span class="sourceLineNo">32679</span> } else if (as == 1) {<a name="line.32679"></a>
<span class="sourceLineNo">32680</span> if (it.isOutputDouble()) {<a name="line.32680"></a>
<span class="sourceLineNo">32681</span> while (it.hasNext()) {<a name="line.32681"></a>
<span class="sourceLineNo">32682</span> final double ix = it.aDouble;<a name="line.32682"></a>
<span class="sourceLineNo">32683</span> short ox;<a name="line.32683"></a>
<span class="sourceLineNo">32684</span> ox = (short) toLong(Math.toDegrees(ix));<a name="line.32684"></a>
<span class="sourceLineNo">32685</span> for (int j = 0; j &lt; is; j++) {<a name="line.32685"></a>
<span class="sourceLineNo">32686</span> oai16data[it.oIndex + j] = ox;<a name="line.32686"></a>
<span class="sourceLineNo">32687</span> }<a name="line.32687"></a>
<span class="sourceLineNo">32688</span> }<a name="line.32688"></a>
<span class="sourceLineNo">32689</span> } else {<a name="line.32689"></a>
<span class="sourceLineNo">32690</span> while (it.hasNext()) {<a name="line.32690"></a>
<span class="sourceLineNo">32691</span> final long ix = it.aLong;<a name="line.32691"></a>
<span class="sourceLineNo">32692</span> short ox;<a name="line.32692"></a>
<span class="sourceLineNo">32693</span> ox = (short) toLong(Math.toDegrees(ix));<a name="line.32693"></a>
<span class="sourceLineNo">32694</span> for (int j = 0; j &lt; is; j++) {<a name="line.32694"></a>
<span class="sourceLineNo">32695</span> oai16data[it.oIndex + j] = ox;<a name="line.32695"></a>
<span class="sourceLineNo">32696</span> }<a name="line.32696"></a>
<span class="sourceLineNo">32697</span> }<a name="line.32697"></a>
<span class="sourceLineNo">32698</span> }<a name="line.32698"></a>
<span class="sourceLineNo">32699</span> } else {<a name="line.32699"></a>
<span class="sourceLineNo">32700</span> if (it.isOutputDouble()) {<a name="line.32700"></a>
<span class="sourceLineNo">32701</span> while (it.hasNext()) {<a name="line.32701"></a>
<span class="sourceLineNo">32702</span> for (int j = 0; j &lt; is; j++) {<a name="line.32702"></a>
<span class="sourceLineNo">32703</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.32703"></a>
<span class="sourceLineNo">32704</span> short ox;<a name="line.32704"></a>
<span class="sourceLineNo">32705</span> ox = (short) toLong(Math.toDegrees(ix));<a name="line.32705"></a>
<span class="sourceLineNo">32706</span> oai16data[it.oIndex + j] = ox;<a name="line.32706"></a>
<span class="sourceLineNo">32707</span> }<a name="line.32707"></a>
<span class="sourceLineNo">32708</span> }<a name="line.32708"></a>
<span class="sourceLineNo">32709</span> } else {<a name="line.32709"></a>
<span class="sourceLineNo">32710</span> while (it.hasNext()) {<a name="line.32710"></a>
<span class="sourceLineNo">32711</span> for (int j = 0; j &lt; is; j++) {<a name="line.32711"></a>
<span class="sourceLineNo">32712</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.32712"></a>
<span class="sourceLineNo">32713</span> short ox;<a name="line.32713"></a>
<span class="sourceLineNo">32714</span> ox = (short) toLong(Math.toDegrees(ix));<a name="line.32714"></a>
<span class="sourceLineNo">32715</span> oai16data[it.oIndex + j] = ox;<a name="line.32715"></a>
<span class="sourceLineNo">32716</span> }<a name="line.32716"></a>
<span class="sourceLineNo">32717</span> }<a name="line.32717"></a>
<span class="sourceLineNo">32718</span> }<a name="line.32718"></a>
<span class="sourceLineNo">32719</span> }<a name="line.32719"></a>
<span class="sourceLineNo">32720</span> break;<a name="line.32720"></a>
<span class="sourceLineNo">32721</span> case Dataset.ARRAYINT64:<a name="line.32721"></a>
<span class="sourceLineNo">32722</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.32722"></a>
<span class="sourceLineNo">32723</span> if (is == 1) {<a name="line.32723"></a>
<span class="sourceLineNo">32724</span> if (it.isOutputDouble()) {<a name="line.32724"></a>
<span class="sourceLineNo">32725</span> while (it.hasNext()) {<a name="line.32725"></a>
<span class="sourceLineNo">32726</span> final double ix = it.aDouble;<a name="line.32726"></a>
<span class="sourceLineNo">32727</span> long ox;<a name="line.32727"></a>
<span class="sourceLineNo">32728</span> ox = toLong(Math.toDegrees(ix));<a name="line.32728"></a>
<span class="sourceLineNo">32729</span> oai64data[it.oIndex] = ox;<a name="line.32729"></a>
<span class="sourceLineNo">32730</span> }<a name="line.32730"></a>
<span class="sourceLineNo">32731</span> } else {<a name="line.32731"></a>
<span class="sourceLineNo">32732</span> while (it.hasNext()) {<a name="line.32732"></a>
<span class="sourceLineNo">32733</span> final long ix = it.aLong;<a name="line.32733"></a>
<span class="sourceLineNo">32734</span> long ox;<a name="line.32734"></a>
<span class="sourceLineNo">32735</span> ox = toLong(Math.toDegrees(ix));<a name="line.32735"></a>
<span class="sourceLineNo">32736</span> oai64data[it.oIndex] = ox;<a name="line.32736"></a>
<span class="sourceLineNo">32737</span> }<a name="line.32737"></a>
<span class="sourceLineNo">32738</span> }<a name="line.32738"></a>
<span class="sourceLineNo">32739</span> } else if (as == 1) {<a name="line.32739"></a>
<span class="sourceLineNo">32740</span> if (it.isOutputDouble()) {<a name="line.32740"></a>
<span class="sourceLineNo">32741</span> while (it.hasNext()) {<a name="line.32741"></a>
<span class="sourceLineNo">32742</span> final double ix = it.aDouble;<a name="line.32742"></a>
<span class="sourceLineNo">32743</span> long ox;<a name="line.32743"></a>
<span class="sourceLineNo">32744</span> ox = toLong(Math.toDegrees(ix));<a name="line.32744"></a>
<span class="sourceLineNo">32745</span> for (int j = 0; j &lt; is; j++) {<a name="line.32745"></a>
<span class="sourceLineNo">32746</span> oai64data[it.oIndex + j] = ox;<a name="line.32746"></a>
<span class="sourceLineNo">32747</span> }<a name="line.32747"></a>
<span class="sourceLineNo">32748</span> }<a name="line.32748"></a>
<span class="sourceLineNo">32749</span> } else {<a name="line.32749"></a>
<span class="sourceLineNo">32750</span> while (it.hasNext()) {<a name="line.32750"></a>
<span class="sourceLineNo">32751</span> final long ix = it.aLong;<a name="line.32751"></a>
<span class="sourceLineNo">32752</span> long ox;<a name="line.32752"></a>
<span class="sourceLineNo">32753</span> ox = toLong(Math.toDegrees(ix));<a name="line.32753"></a>
<span class="sourceLineNo">32754</span> for (int j = 0; j &lt; is; j++) {<a name="line.32754"></a>
<span class="sourceLineNo">32755</span> oai64data[it.oIndex + j] = ox;<a name="line.32755"></a>
<span class="sourceLineNo">32756</span> }<a name="line.32756"></a>
<span class="sourceLineNo">32757</span> }<a name="line.32757"></a>
<span class="sourceLineNo">32758</span> }<a name="line.32758"></a>
<span class="sourceLineNo">32759</span> } else {<a name="line.32759"></a>
<span class="sourceLineNo">32760</span> if (it.isOutputDouble()) {<a name="line.32760"></a>
<span class="sourceLineNo">32761</span> while (it.hasNext()) {<a name="line.32761"></a>
<span class="sourceLineNo">32762</span> for (int j = 0; j &lt; is; j++) {<a name="line.32762"></a>
<span class="sourceLineNo">32763</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.32763"></a>
<span class="sourceLineNo">32764</span> long ox;<a name="line.32764"></a>
<span class="sourceLineNo">32765</span> ox = toLong(Math.toDegrees(ix));<a name="line.32765"></a>
<span class="sourceLineNo">32766</span> oai64data[it.oIndex + j] = ox;<a name="line.32766"></a>
<span class="sourceLineNo">32767</span> }<a name="line.32767"></a>
<span class="sourceLineNo">32768</span> }<a name="line.32768"></a>
<span class="sourceLineNo">32769</span> } else {<a name="line.32769"></a>
<span class="sourceLineNo">32770</span> while (it.hasNext()) {<a name="line.32770"></a>
<span class="sourceLineNo">32771</span> for (int j = 0; j &lt; is; j++) {<a name="line.32771"></a>
<span class="sourceLineNo">32772</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.32772"></a>
<span class="sourceLineNo">32773</span> long ox;<a name="line.32773"></a>
<span class="sourceLineNo">32774</span> ox = toLong(Math.toDegrees(ix));<a name="line.32774"></a>
<span class="sourceLineNo">32775</span> oai64data[it.oIndex + j] = ox;<a name="line.32775"></a>
<span class="sourceLineNo">32776</span> }<a name="line.32776"></a>
<span class="sourceLineNo">32777</span> }<a name="line.32777"></a>
<span class="sourceLineNo">32778</span> }<a name="line.32778"></a>
<span class="sourceLineNo">32779</span> }<a name="line.32779"></a>
<span class="sourceLineNo">32780</span> break;<a name="line.32780"></a>
<span class="sourceLineNo">32781</span> case Dataset.ARRAYINT32:<a name="line.32781"></a>
<span class="sourceLineNo">32782</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.32782"></a>
<span class="sourceLineNo">32783</span> if (is == 1) {<a name="line.32783"></a>
<span class="sourceLineNo">32784</span> if (it.isOutputDouble()) {<a name="line.32784"></a>
<span class="sourceLineNo">32785</span> while (it.hasNext()) {<a name="line.32785"></a>
<span class="sourceLineNo">32786</span> final double ix = it.aDouble;<a name="line.32786"></a>
<span class="sourceLineNo">32787</span> int ox;<a name="line.32787"></a>
<span class="sourceLineNo">32788</span> ox = (int) toLong(Math.toDegrees(ix));<a name="line.32788"></a>
<span class="sourceLineNo">32789</span> oai32data[it.oIndex] = ox;<a name="line.32789"></a>
<span class="sourceLineNo">32790</span> }<a name="line.32790"></a>
<span class="sourceLineNo">32791</span> } else {<a name="line.32791"></a>
<span class="sourceLineNo">32792</span> while (it.hasNext()) {<a name="line.32792"></a>
<span class="sourceLineNo">32793</span> final long ix = it.aLong;<a name="line.32793"></a>
<span class="sourceLineNo">32794</span> int ox;<a name="line.32794"></a>
<span class="sourceLineNo">32795</span> ox = (int) toLong(Math.toDegrees(ix));<a name="line.32795"></a>
<span class="sourceLineNo">32796</span> oai32data[it.oIndex] = ox;<a name="line.32796"></a>
<span class="sourceLineNo">32797</span> }<a name="line.32797"></a>
<span class="sourceLineNo">32798</span> }<a name="line.32798"></a>
<span class="sourceLineNo">32799</span> } else if (as == 1) {<a name="line.32799"></a>
<span class="sourceLineNo">32800</span> if (it.isOutputDouble()) {<a name="line.32800"></a>
<span class="sourceLineNo">32801</span> while (it.hasNext()) {<a name="line.32801"></a>
<span class="sourceLineNo">32802</span> final double ix = it.aDouble;<a name="line.32802"></a>
<span class="sourceLineNo">32803</span> int ox;<a name="line.32803"></a>
<span class="sourceLineNo">32804</span> ox = (int) toLong(Math.toDegrees(ix));<a name="line.32804"></a>
<span class="sourceLineNo">32805</span> for (int j = 0; j &lt; is; j++) {<a name="line.32805"></a>
<span class="sourceLineNo">32806</span> oai32data[it.oIndex + j] = ox;<a name="line.32806"></a>
<span class="sourceLineNo">32807</span> }<a name="line.32807"></a>
<span class="sourceLineNo">32808</span> }<a name="line.32808"></a>
<span class="sourceLineNo">32809</span> } else {<a name="line.32809"></a>
<span class="sourceLineNo">32810</span> while (it.hasNext()) {<a name="line.32810"></a>
<span class="sourceLineNo">32811</span> final long ix = it.aLong;<a name="line.32811"></a>
<span class="sourceLineNo">32812</span> int ox;<a name="line.32812"></a>
<span class="sourceLineNo">32813</span> ox = (int) toLong(Math.toDegrees(ix));<a name="line.32813"></a>
<span class="sourceLineNo">32814</span> for (int j = 0; j &lt; is; j++) {<a name="line.32814"></a>
<span class="sourceLineNo">32815</span> oai32data[it.oIndex + j] = ox;<a name="line.32815"></a>
<span class="sourceLineNo">32816</span> }<a name="line.32816"></a>
<span class="sourceLineNo">32817</span> }<a name="line.32817"></a>
<span class="sourceLineNo">32818</span> }<a name="line.32818"></a>
<span class="sourceLineNo">32819</span> } else {<a name="line.32819"></a>
<span class="sourceLineNo">32820</span> if (it.isOutputDouble()) {<a name="line.32820"></a>
<span class="sourceLineNo">32821</span> while (it.hasNext()) {<a name="line.32821"></a>
<span class="sourceLineNo">32822</span> for (int j = 0; j &lt; is; j++) {<a name="line.32822"></a>
<span class="sourceLineNo">32823</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.32823"></a>
<span class="sourceLineNo">32824</span> int ox;<a name="line.32824"></a>
<span class="sourceLineNo">32825</span> ox = (int) toLong(Math.toDegrees(ix));<a name="line.32825"></a>
<span class="sourceLineNo">32826</span> oai32data[it.oIndex + j] = ox;<a name="line.32826"></a>
<span class="sourceLineNo">32827</span> }<a name="line.32827"></a>
<span class="sourceLineNo">32828</span> }<a name="line.32828"></a>
<span class="sourceLineNo">32829</span> } else {<a name="line.32829"></a>
<span class="sourceLineNo">32830</span> while (it.hasNext()) {<a name="line.32830"></a>
<span class="sourceLineNo">32831</span> for (int j = 0; j &lt; is; j++) {<a name="line.32831"></a>
<span class="sourceLineNo">32832</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.32832"></a>
<span class="sourceLineNo">32833</span> int ox;<a name="line.32833"></a>
<span class="sourceLineNo">32834</span> ox = (int) toLong(Math.toDegrees(ix));<a name="line.32834"></a>
<span class="sourceLineNo">32835</span> oai32data[it.oIndex + j] = ox;<a name="line.32835"></a>
<span class="sourceLineNo">32836</span> }<a name="line.32836"></a>
<span class="sourceLineNo">32837</span> }<a name="line.32837"></a>
<span class="sourceLineNo">32838</span> }<a name="line.32838"></a>
<span class="sourceLineNo">32839</span> }<a name="line.32839"></a>
<span class="sourceLineNo">32840</span> break;<a name="line.32840"></a>
<span class="sourceLineNo">32841</span> case Dataset.FLOAT32:<a name="line.32841"></a>
<span class="sourceLineNo">32842</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.32842"></a>
<span class="sourceLineNo">32843</span> if (it.isOutputDouble()) {<a name="line.32843"></a>
<span class="sourceLineNo">32844</span> while (it.hasNext()) {<a name="line.32844"></a>
<span class="sourceLineNo">32845</span> final double ix = it.aDouble;<a name="line.32845"></a>
<span class="sourceLineNo">32846</span> float ox;<a name="line.32846"></a>
<span class="sourceLineNo">32847</span> ox = (float) (Math.toDegrees(ix));<a name="line.32847"></a>
<span class="sourceLineNo">32848</span> of32data[it.oIndex] = ox;<a name="line.32848"></a>
<span class="sourceLineNo">32849</span> }<a name="line.32849"></a>
<span class="sourceLineNo">32850</span> } else {<a name="line.32850"></a>
<span class="sourceLineNo">32851</span> while (it.hasNext()) {<a name="line.32851"></a>
<span class="sourceLineNo">32852</span> final long ix = it.aLong;<a name="line.32852"></a>
<span class="sourceLineNo">32853</span> float ox;<a name="line.32853"></a>
<span class="sourceLineNo">32854</span> ox = (float) (Math.toDegrees(ix));<a name="line.32854"></a>
<span class="sourceLineNo">32855</span> of32data[it.oIndex] = ox;<a name="line.32855"></a>
<span class="sourceLineNo">32856</span> }<a name="line.32856"></a>
<span class="sourceLineNo">32857</span> }<a name="line.32857"></a>
<span class="sourceLineNo">32858</span> break;<a name="line.32858"></a>
<span class="sourceLineNo">32859</span> case Dataset.FLOAT64:<a name="line.32859"></a>
<span class="sourceLineNo">32860</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.32860"></a>
<span class="sourceLineNo">32861</span> if (it.isOutputDouble()) {<a name="line.32861"></a>
<span class="sourceLineNo">32862</span> while (it.hasNext()) {<a name="line.32862"></a>
<span class="sourceLineNo">32863</span> final double ix = it.aDouble;<a name="line.32863"></a>
<span class="sourceLineNo">32864</span> double ox;<a name="line.32864"></a>
<span class="sourceLineNo">32865</span> ox = (Math.toDegrees(ix));<a name="line.32865"></a>
<span class="sourceLineNo">32866</span> of64data[it.oIndex] = ox;<a name="line.32866"></a>
<span class="sourceLineNo">32867</span> }<a name="line.32867"></a>
<span class="sourceLineNo">32868</span> } else {<a name="line.32868"></a>
<span class="sourceLineNo">32869</span> while (it.hasNext()) {<a name="line.32869"></a>
<span class="sourceLineNo">32870</span> final long ix = it.aLong;<a name="line.32870"></a>
<span class="sourceLineNo">32871</span> double ox;<a name="line.32871"></a>
<span class="sourceLineNo">32872</span> ox = (Math.toDegrees(ix));<a name="line.32872"></a>
<span class="sourceLineNo">32873</span> of64data[it.oIndex] = ox;<a name="line.32873"></a>
<span class="sourceLineNo">32874</span> }<a name="line.32874"></a>
<span class="sourceLineNo">32875</span> }<a name="line.32875"></a>
<span class="sourceLineNo">32876</span> break;<a name="line.32876"></a>
<span class="sourceLineNo">32877</span> case Dataset.ARRAYFLOAT32:<a name="line.32877"></a>
<span class="sourceLineNo">32878</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.32878"></a>
<span class="sourceLineNo">32879</span> if (is == 1) {<a name="line.32879"></a>
<span class="sourceLineNo">32880</span> if (it.isOutputDouble()) {<a name="line.32880"></a>
<span class="sourceLineNo">32881</span> while (it.hasNext()) {<a name="line.32881"></a>
<span class="sourceLineNo">32882</span> final double ix = it.aDouble;<a name="line.32882"></a>
<span class="sourceLineNo">32883</span> float ox;<a name="line.32883"></a>
<span class="sourceLineNo">32884</span> ox = (float) (Math.toDegrees(ix));<a name="line.32884"></a>
<span class="sourceLineNo">32885</span> oaf32data[it.oIndex] = ox;<a name="line.32885"></a>
<span class="sourceLineNo">32886</span> }<a name="line.32886"></a>
<span class="sourceLineNo">32887</span> } else {<a name="line.32887"></a>
<span class="sourceLineNo">32888</span> while (it.hasNext()) {<a name="line.32888"></a>
<span class="sourceLineNo">32889</span> final long ix = it.aLong;<a name="line.32889"></a>
<span class="sourceLineNo">32890</span> float ox;<a name="line.32890"></a>
<span class="sourceLineNo">32891</span> ox = (float) (Math.toDegrees(ix));<a name="line.32891"></a>
<span class="sourceLineNo">32892</span> oaf32data[it.oIndex] = ox;<a name="line.32892"></a>
<span class="sourceLineNo">32893</span> }<a name="line.32893"></a>
<span class="sourceLineNo">32894</span> }<a name="line.32894"></a>
<span class="sourceLineNo">32895</span> } else if (as == 1) {<a name="line.32895"></a>
<span class="sourceLineNo">32896</span> if (it.isOutputDouble()) {<a name="line.32896"></a>
<span class="sourceLineNo">32897</span> while (it.hasNext()) {<a name="line.32897"></a>
<span class="sourceLineNo">32898</span> final double ix = it.aDouble;<a name="line.32898"></a>
<span class="sourceLineNo">32899</span> float ox;<a name="line.32899"></a>
<span class="sourceLineNo">32900</span> ox = (float) (Math.toDegrees(ix));<a name="line.32900"></a>
<span class="sourceLineNo">32901</span> for (int j = 0; j &lt; is; j++) {<a name="line.32901"></a>
<span class="sourceLineNo">32902</span> oaf32data[it.oIndex + j] = ox;<a name="line.32902"></a>
<span class="sourceLineNo">32903</span> }<a name="line.32903"></a>
<span class="sourceLineNo">32904</span> }<a name="line.32904"></a>
<span class="sourceLineNo">32905</span> } else {<a name="line.32905"></a>
<span class="sourceLineNo">32906</span> while (it.hasNext()) {<a name="line.32906"></a>
<span class="sourceLineNo">32907</span> final long ix = it.aLong;<a name="line.32907"></a>
<span class="sourceLineNo">32908</span> float ox;<a name="line.32908"></a>
<span class="sourceLineNo">32909</span> ox = (float) (Math.toDegrees(ix));<a name="line.32909"></a>
<span class="sourceLineNo">32910</span> for (int j = 0; j &lt; is; j++) {<a name="line.32910"></a>
<span class="sourceLineNo">32911</span> oaf32data[it.oIndex + j] = ox;<a name="line.32911"></a>
<span class="sourceLineNo">32912</span> }<a name="line.32912"></a>
<span class="sourceLineNo">32913</span> }<a name="line.32913"></a>
<span class="sourceLineNo">32914</span> }<a name="line.32914"></a>
<span class="sourceLineNo">32915</span> } else {<a name="line.32915"></a>
<span class="sourceLineNo">32916</span> if (it.isOutputDouble()) {<a name="line.32916"></a>
<span class="sourceLineNo">32917</span> while (it.hasNext()) {<a name="line.32917"></a>
<span class="sourceLineNo">32918</span> for (int j = 0; j &lt; is; j++) {<a name="line.32918"></a>
<span class="sourceLineNo">32919</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.32919"></a>
<span class="sourceLineNo">32920</span> float ox;<a name="line.32920"></a>
<span class="sourceLineNo">32921</span> ox = (float) (Math.toDegrees(ix));<a name="line.32921"></a>
<span class="sourceLineNo">32922</span> oaf32data[it.oIndex + j] = ox;<a name="line.32922"></a>
<span class="sourceLineNo">32923</span> }<a name="line.32923"></a>
<span class="sourceLineNo">32924</span> }<a name="line.32924"></a>
<span class="sourceLineNo">32925</span> } else {<a name="line.32925"></a>
<span class="sourceLineNo">32926</span> while (it.hasNext()) {<a name="line.32926"></a>
<span class="sourceLineNo">32927</span> for (int j = 0; j &lt; is; j++) {<a name="line.32927"></a>
<span class="sourceLineNo">32928</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.32928"></a>
<span class="sourceLineNo">32929</span> float ox;<a name="line.32929"></a>
<span class="sourceLineNo">32930</span> ox = (float) (Math.toDegrees(ix));<a name="line.32930"></a>
<span class="sourceLineNo">32931</span> oaf32data[it.oIndex + j] = ox;<a name="line.32931"></a>
<span class="sourceLineNo">32932</span> }<a name="line.32932"></a>
<span class="sourceLineNo">32933</span> }<a name="line.32933"></a>
<span class="sourceLineNo">32934</span> }<a name="line.32934"></a>
<span class="sourceLineNo">32935</span> }<a name="line.32935"></a>
<span class="sourceLineNo">32936</span> break;<a name="line.32936"></a>
<span class="sourceLineNo">32937</span> case Dataset.ARRAYFLOAT64:<a name="line.32937"></a>
<span class="sourceLineNo">32938</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.32938"></a>
<span class="sourceLineNo">32939</span> if (is == 1) {<a name="line.32939"></a>
<span class="sourceLineNo">32940</span> if (it.isOutputDouble()) {<a name="line.32940"></a>
<span class="sourceLineNo">32941</span> while (it.hasNext()) {<a name="line.32941"></a>
<span class="sourceLineNo">32942</span> final double ix = it.aDouble;<a name="line.32942"></a>
<span class="sourceLineNo">32943</span> double ox;<a name="line.32943"></a>
<span class="sourceLineNo">32944</span> ox = (Math.toDegrees(ix));<a name="line.32944"></a>
<span class="sourceLineNo">32945</span> oaf64data[it.oIndex] = ox;<a name="line.32945"></a>
<span class="sourceLineNo">32946</span> }<a name="line.32946"></a>
<span class="sourceLineNo">32947</span> } else {<a name="line.32947"></a>
<span class="sourceLineNo">32948</span> while (it.hasNext()) {<a name="line.32948"></a>
<span class="sourceLineNo">32949</span> final long ix = it.aLong;<a name="line.32949"></a>
<span class="sourceLineNo">32950</span> double ox;<a name="line.32950"></a>
<span class="sourceLineNo">32951</span> ox = (Math.toDegrees(ix));<a name="line.32951"></a>
<span class="sourceLineNo">32952</span> oaf64data[it.oIndex] = ox;<a name="line.32952"></a>
<span class="sourceLineNo">32953</span> }<a name="line.32953"></a>
<span class="sourceLineNo">32954</span> }<a name="line.32954"></a>
<span class="sourceLineNo">32955</span> } else if (as == 1) {<a name="line.32955"></a>
<span class="sourceLineNo">32956</span> if (it.isOutputDouble()) {<a name="line.32956"></a>
<span class="sourceLineNo">32957</span> while (it.hasNext()) {<a name="line.32957"></a>
<span class="sourceLineNo">32958</span> final double ix = it.aDouble;<a name="line.32958"></a>
<span class="sourceLineNo">32959</span> double ox;<a name="line.32959"></a>
<span class="sourceLineNo">32960</span> ox = (Math.toDegrees(ix));<a name="line.32960"></a>
<span class="sourceLineNo">32961</span> for (int j = 0; j &lt; is; j++) {<a name="line.32961"></a>
<span class="sourceLineNo">32962</span> oaf64data[it.oIndex + j] = ox;<a name="line.32962"></a>
<span class="sourceLineNo">32963</span> }<a name="line.32963"></a>
<span class="sourceLineNo">32964</span> }<a name="line.32964"></a>
<span class="sourceLineNo">32965</span> } else {<a name="line.32965"></a>
<span class="sourceLineNo">32966</span> while (it.hasNext()) {<a name="line.32966"></a>
<span class="sourceLineNo">32967</span> final long ix = it.aLong;<a name="line.32967"></a>
<span class="sourceLineNo">32968</span> double ox;<a name="line.32968"></a>
<span class="sourceLineNo">32969</span> ox = (Math.toDegrees(ix));<a name="line.32969"></a>
<span class="sourceLineNo">32970</span> for (int j = 0; j &lt; is; j++) {<a name="line.32970"></a>
<span class="sourceLineNo">32971</span> oaf64data[it.oIndex + j] = ox;<a name="line.32971"></a>
<span class="sourceLineNo">32972</span> }<a name="line.32972"></a>
<span class="sourceLineNo">32973</span> }<a name="line.32973"></a>
<span class="sourceLineNo">32974</span> }<a name="line.32974"></a>
<span class="sourceLineNo">32975</span> } else {<a name="line.32975"></a>
<span class="sourceLineNo">32976</span> if (it.isOutputDouble()) {<a name="line.32976"></a>
<span class="sourceLineNo">32977</span> while (it.hasNext()) {<a name="line.32977"></a>
<span class="sourceLineNo">32978</span> for (int j = 0; j &lt; is; j++) {<a name="line.32978"></a>
<span class="sourceLineNo">32979</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.32979"></a>
<span class="sourceLineNo">32980</span> double ox;<a name="line.32980"></a>
<span class="sourceLineNo">32981</span> ox = (Math.toDegrees(ix));<a name="line.32981"></a>
<span class="sourceLineNo">32982</span> oaf64data[it.oIndex + j] = ox;<a name="line.32982"></a>
<span class="sourceLineNo">32983</span> }<a name="line.32983"></a>
<span class="sourceLineNo">32984</span> }<a name="line.32984"></a>
<span class="sourceLineNo">32985</span> } else {<a name="line.32985"></a>
<span class="sourceLineNo">32986</span> while (it.hasNext()) {<a name="line.32986"></a>
<span class="sourceLineNo">32987</span> for (int j = 0; j &lt; is; j++) {<a name="line.32987"></a>
<span class="sourceLineNo">32988</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.32988"></a>
<span class="sourceLineNo">32989</span> double ox;<a name="line.32989"></a>
<span class="sourceLineNo">32990</span> ox = (Math.toDegrees(ix));<a name="line.32990"></a>
<span class="sourceLineNo">32991</span> oaf64data[it.oIndex + j] = ox;<a name="line.32991"></a>
<span class="sourceLineNo">32992</span> }<a name="line.32992"></a>
<span class="sourceLineNo">32993</span> }<a name="line.32993"></a>
<span class="sourceLineNo">32994</span> }<a name="line.32994"></a>
<span class="sourceLineNo">32995</span> }<a name="line.32995"></a>
<span class="sourceLineNo">32996</span> break;<a name="line.32996"></a>
<span class="sourceLineNo">32997</span> case Dataset.COMPLEX64:<a name="line.32997"></a>
<span class="sourceLineNo">32998</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.32998"></a>
<span class="sourceLineNo">32999</span> if (!da.isComplex()) {<a name="line.32999"></a>
<span class="sourceLineNo">33000</span> if (it.isOutputDouble()) {<a name="line.33000"></a>
<span class="sourceLineNo">33001</span> final double iy = 0;<a name="line.33001"></a>
<span class="sourceLineNo">33002</span> while (it.hasNext()) {<a name="line.33002"></a>
<span class="sourceLineNo">33003</span> final double ix = it.aDouble;<a name="line.33003"></a>
<span class="sourceLineNo">33004</span> float ox;<a name="line.33004"></a>
<span class="sourceLineNo">33005</span> float oy;<a name="line.33005"></a>
<span class="sourceLineNo">33006</span> ox = (float) (Math.toDegrees(ix));<a name="line.33006"></a>
<span class="sourceLineNo">33007</span> oy = (float) (Math.toDegrees(iy));<a name="line.33007"></a>
<span class="sourceLineNo">33008</span> oc64data[it.oIndex] = ox;<a name="line.33008"></a>
<span class="sourceLineNo">33009</span> oc64data[it.oIndex + 1] = oy;<a name="line.33009"></a>
<span class="sourceLineNo">33010</span> }<a name="line.33010"></a>
<span class="sourceLineNo">33011</span> } else {<a name="line.33011"></a>
<span class="sourceLineNo">33012</span> final long iy = 0;<a name="line.33012"></a>
<span class="sourceLineNo">33013</span> while (it.hasNext()) {<a name="line.33013"></a>
<span class="sourceLineNo">33014</span> final long ix = it.aLong;<a name="line.33014"></a>
<span class="sourceLineNo">33015</span> float ox;<a name="line.33015"></a>
<span class="sourceLineNo">33016</span> float oy;<a name="line.33016"></a>
<span class="sourceLineNo">33017</span> ox = (float) toLong(Math.toDegrees(ix));<a name="line.33017"></a>
<span class="sourceLineNo">33018</span> oy = (float) toLong(Math.toDegrees(iy));<a name="line.33018"></a>
<span class="sourceLineNo">33019</span> oc64data[it.oIndex] = ox;<a name="line.33019"></a>
<span class="sourceLineNo">33020</span> oc64data[it.oIndex + 1] = oy;<a name="line.33020"></a>
<span class="sourceLineNo">33021</span> }<a name="line.33021"></a>
<span class="sourceLineNo">33022</span> }<a name="line.33022"></a>
<span class="sourceLineNo">33023</span> } else {<a name="line.33023"></a>
<span class="sourceLineNo">33024</span> while (it.hasNext()) {<a name="line.33024"></a>
<span class="sourceLineNo">33025</span> final double ix = it.aDouble;<a name="line.33025"></a>
<span class="sourceLineNo">33026</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.33026"></a>
<span class="sourceLineNo">33027</span> float ox;<a name="line.33027"></a>
<span class="sourceLineNo">33028</span> float oy;<a name="line.33028"></a>
<span class="sourceLineNo">33029</span> ox = (float) (Math.toDegrees(ix));<a name="line.33029"></a>
<span class="sourceLineNo">33030</span> oy = (float) (Math.toDegrees(iy));<a name="line.33030"></a>
<span class="sourceLineNo">33031</span> oc64data[it.oIndex] = ox;<a name="line.33031"></a>
<span class="sourceLineNo">33032</span> oc64data[it.oIndex + 1] = oy;<a name="line.33032"></a>
<span class="sourceLineNo">33033</span> }<a name="line.33033"></a>
<span class="sourceLineNo">33034</span> }<a name="line.33034"></a>
<span class="sourceLineNo">33035</span> break;<a name="line.33035"></a>
<span class="sourceLineNo">33036</span> case Dataset.COMPLEX128:<a name="line.33036"></a>
<span class="sourceLineNo">33037</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.33037"></a>
<span class="sourceLineNo">33038</span> if (!da.isComplex()) {<a name="line.33038"></a>
<span class="sourceLineNo">33039</span> if (it.isOutputDouble()) {<a name="line.33039"></a>
<span class="sourceLineNo">33040</span> final double iy = 0;<a name="line.33040"></a>
<span class="sourceLineNo">33041</span> while (it.hasNext()) {<a name="line.33041"></a>
<span class="sourceLineNo">33042</span> final double ix = it.aDouble;<a name="line.33042"></a>
<span class="sourceLineNo">33043</span> double ox;<a name="line.33043"></a>
<span class="sourceLineNo">33044</span> double oy;<a name="line.33044"></a>
<span class="sourceLineNo">33045</span> ox = (Math.toDegrees(ix));<a name="line.33045"></a>
<span class="sourceLineNo">33046</span> oy = (Math.toDegrees(iy));<a name="line.33046"></a>
<span class="sourceLineNo">33047</span> oc128data[it.oIndex] = ox;<a name="line.33047"></a>
<span class="sourceLineNo">33048</span> oc128data[it.oIndex + 1] = oy;<a name="line.33048"></a>
<span class="sourceLineNo">33049</span> }<a name="line.33049"></a>
<span class="sourceLineNo">33050</span> } else {<a name="line.33050"></a>
<span class="sourceLineNo">33051</span> final long iy = 0;<a name="line.33051"></a>
<span class="sourceLineNo">33052</span> while (it.hasNext()) {<a name="line.33052"></a>
<span class="sourceLineNo">33053</span> final long ix = it.aLong;<a name="line.33053"></a>
<span class="sourceLineNo">33054</span> double ox;<a name="line.33054"></a>
<span class="sourceLineNo">33055</span> double oy;<a name="line.33055"></a>
<span class="sourceLineNo">33056</span> ox = (double) (Math.toDegrees(ix));<a name="line.33056"></a>
<span class="sourceLineNo">33057</span> oy = (double) (Math.toDegrees(iy));<a name="line.33057"></a>
<span class="sourceLineNo">33058</span> oc128data[it.oIndex] = ox;<a name="line.33058"></a>
<span class="sourceLineNo">33059</span> oc128data[it.oIndex + 1] = oy;<a name="line.33059"></a>
<span class="sourceLineNo">33060</span> }<a name="line.33060"></a>
<span class="sourceLineNo">33061</span> }<a name="line.33061"></a>
<span class="sourceLineNo">33062</span> } else {<a name="line.33062"></a>
<span class="sourceLineNo">33063</span> while (it.hasNext()) {<a name="line.33063"></a>
<span class="sourceLineNo">33064</span> final double ix = it.aDouble;<a name="line.33064"></a>
<span class="sourceLineNo">33065</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.33065"></a>
<span class="sourceLineNo">33066</span> double ox;<a name="line.33066"></a>
<span class="sourceLineNo">33067</span> double oy;<a name="line.33067"></a>
<span class="sourceLineNo">33068</span> ox = (Math.toDegrees(ix));<a name="line.33068"></a>
<span class="sourceLineNo">33069</span> oy = (Math.toDegrees(iy));<a name="line.33069"></a>
<span class="sourceLineNo">33070</span> oc128data[it.oIndex] = ox;<a name="line.33070"></a>
<span class="sourceLineNo">33071</span> oc128data[it.oIndex + 1] = oy;<a name="line.33071"></a>
<span class="sourceLineNo">33072</span> }<a name="line.33072"></a>
<span class="sourceLineNo">33073</span> }<a name="line.33073"></a>
<span class="sourceLineNo">33074</span> break;<a name="line.33074"></a>
<span class="sourceLineNo">33075</span> default:<a name="line.33075"></a>
<span class="sourceLineNo">33076</span> throw new IllegalArgumentException("toDegrees supports integer, compound integer, real, compound real, complex datasets only");<a name="line.33076"></a>
<span class="sourceLineNo">33077</span> }<a name="line.33077"></a>
<span class="sourceLineNo">33078</span><a name="line.33078"></a>
<span class="sourceLineNo">33079</span> addFunctionName(result, "toDegrees");<a name="line.33079"></a>
<span class="sourceLineNo">33080</span> return result;<a name="line.33080"></a>
<span class="sourceLineNo">33081</span> }<a name="line.33081"></a>
<span class="sourceLineNo">33082</span><a name="line.33082"></a>
<span class="sourceLineNo">33083</span> /**<a name="line.33083"></a>
<span class="sourceLineNo">33084</span> * toRadians - convert to radians<a name="line.33084"></a>
<span class="sourceLineNo">33085</span> * @param a<a name="line.33085"></a>
<span class="sourceLineNo">33086</span> * @return dataset<a name="line.33086"></a>
<span class="sourceLineNo">33087</span> */<a name="line.33087"></a>
<span class="sourceLineNo">33088</span> public static Dataset toRadians(final Object a) {<a name="line.33088"></a>
<span class="sourceLineNo">33089</span> return toRadians(a, null);<a name="line.33089"></a>
<span class="sourceLineNo">33090</span> }<a name="line.33090"></a>
<span class="sourceLineNo">33091</span><a name="line.33091"></a>
<span class="sourceLineNo">33092</span> /**<a name="line.33092"></a>
<span class="sourceLineNo">33093</span> * toRadians - convert to radians<a name="line.33093"></a>
<span class="sourceLineNo">33094</span> * @param a<a name="line.33094"></a>
<span class="sourceLineNo">33095</span> * @param o output can be null - in which case, a new dataset is created<a name="line.33095"></a>
<span class="sourceLineNo">33096</span> * @return dataset<a name="line.33096"></a>
<span class="sourceLineNo">33097</span> */<a name="line.33097"></a>
<span class="sourceLineNo">33098</span> public static Dataset toRadians(final Object a, final Dataset o) {<a name="line.33098"></a>
<span class="sourceLineNo">33099</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.33099"></a>
<span class="sourceLineNo">33100</span> SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true);<a name="line.33100"></a>
<span class="sourceLineNo">33101</span> final Dataset result = it.getOutput();<a name="line.33101"></a>
<span class="sourceLineNo">33102</span> if (!result.isComplex()) {<a name="line.33102"></a>
<span class="sourceLineNo">33103</span> if (da.isComplex()) {<a name="line.33103"></a>
<span class="sourceLineNo">33104</span> da = da.getRealView();<a name="line.33104"></a>
<span class="sourceLineNo">33105</span> it = new SingleInputBroadcastIterator(da, result, true);<a name="line.33105"></a>
<span class="sourceLineNo">33106</span> }<a name="line.33106"></a>
<span class="sourceLineNo">33107</span> }<a name="line.33107"></a>
<span class="sourceLineNo">33108</span> final int is = result.getElementsPerItem();<a name="line.33108"></a>
<span class="sourceLineNo">33109</span> final int as = da.getElementsPerItem();<a name="line.33109"></a>
<span class="sourceLineNo">33110</span> final int dt = result.getDType();<a name="line.33110"></a>
<span class="sourceLineNo">33111</span><a name="line.33111"></a>
<span class="sourceLineNo">33112</span> switch(dt) {<a name="line.33112"></a>
<span class="sourceLineNo">33113</span> case Dataset.INT8:<a name="line.33113"></a>
<span class="sourceLineNo">33114</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.33114"></a>
<span class="sourceLineNo">33115</span> if (it.isOutputDouble()) {<a name="line.33115"></a>
<span class="sourceLineNo">33116</span> while (it.hasNext()) {<a name="line.33116"></a>
<span class="sourceLineNo">33117</span> final double ix = it.aDouble;<a name="line.33117"></a>
<span class="sourceLineNo">33118</span> byte ox;<a name="line.33118"></a>
<span class="sourceLineNo">33119</span> ox = (byte) toLong(Math.toRadians(ix));<a name="line.33119"></a>
<span class="sourceLineNo">33120</span> oi8data[it.oIndex] = ox;<a name="line.33120"></a>
<span class="sourceLineNo">33121</span> }<a name="line.33121"></a>
<span class="sourceLineNo">33122</span> } else {<a name="line.33122"></a>
<span class="sourceLineNo">33123</span> while (it.hasNext()) {<a name="line.33123"></a>
<span class="sourceLineNo">33124</span> final long ix = it.aLong;<a name="line.33124"></a>
<span class="sourceLineNo">33125</span> byte ox;<a name="line.33125"></a>
<span class="sourceLineNo">33126</span> ox = (byte) toLong(Math.toRadians(ix));<a name="line.33126"></a>
<span class="sourceLineNo">33127</span> oi8data[it.oIndex] = ox;<a name="line.33127"></a>
<span class="sourceLineNo">33128</span> }<a name="line.33128"></a>
<span class="sourceLineNo">33129</span> }<a name="line.33129"></a>
<span class="sourceLineNo">33130</span> break;<a name="line.33130"></a>
<span class="sourceLineNo">33131</span> case Dataset.INT16:<a name="line.33131"></a>
<span class="sourceLineNo">33132</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.33132"></a>
<span class="sourceLineNo">33133</span> if (it.isOutputDouble()) {<a name="line.33133"></a>
<span class="sourceLineNo">33134</span> while (it.hasNext()) {<a name="line.33134"></a>
<span class="sourceLineNo">33135</span> final double ix = it.aDouble;<a name="line.33135"></a>
<span class="sourceLineNo">33136</span> short ox;<a name="line.33136"></a>
<span class="sourceLineNo">33137</span> ox = (short) toLong(Math.toRadians(ix));<a name="line.33137"></a>
<span class="sourceLineNo">33138</span> oi16data[it.oIndex] = ox;<a name="line.33138"></a>
<span class="sourceLineNo">33139</span> }<a name="line.33139"></a>
<span class="sourceLineNo">33140</span> } else {<a name="line.33140"></a>
<span class="sourceLineNo">33141</span> while (it.hasNext()) {<a name="line.33141"></a>
<span class="sourceLineNo">33142</span> final long ix = it.aLong;<a name="line.33142"></a>
<span class="sourceLineNo">33143</span> short ox;<a name="line.33143"></a>
<span class="sourceLineNo">33144</span> ox = (short) toLong(Math.toRadians(ix));<a name="line.33144"></a>
<span class="sourceLineNo">33145</span> oi16data[it.oIndex] = ox;<a name="line.33145"></a>
<span class="sourceLineNo">33146</span> }<a name="line.33146"></a>
<span class="sourceLineNo">33147</span> }<a name="line.33147"></a>
<span class="sourceLineNo">33148</span> break;<a name="line.33148"></a>
<span class="sourceLineNo">33149</span> case Dataset.INT64:<a name="line.33149"></a>
<span class="sourceLineNo">33150</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.33150"></a>
<span class="sourceLineNo">33151</span> if (it.isOutputDouble()) {<a name="line.33151"></a>
<span class="sourceLineNo">33152</span> while (it.hasNext()) {<a name="line.33152"></a>
<span class="sourceLineNo">33153</span> final double ix = it.aDouble;<a name="line.33153"></a>
<span class="sourceLineNo">33154</span> long ox;<a name="line.33154"></a>
<span class="sourceLineNo">33155</span> ox = toLong(Math.toRadians(ix));<a name="line.33155"></a>
<span class="sourceLineNo">33156</span> oi64data[it.oIndex] = ox;<a name="line.33156"></a>
<span class="sourceLineNo">33157</span> }<a name="line.33157"></a>
<span class="sourceLineNo">33158</span> } else {<a name="line.33158"></a>
<span class="sourceLineNo">33159</span> while (it.hasNext()) {<a name="line.33159"></a>
<span class="sourceLineNo">33160</span> final long ix = it.aLong;<a name="line.33160"></a>
<span class="sourceLineNo">33161</span> long ox;<a name="line.33161"></a>
<span class="sourceLineNo">33162</span> ox = toLong(Math.toRadians(ix));<a name="line.33162"></a>
<span class="sourceLineNo">33163</span> oi64data[it.oIndex] = ox;<a name="line.33163"></a>
<span class="sourceLineNo">33164</span> }<a name="line.33164"></a>
<span class="sourceLineNo">33165</span> }<a name="line.33165"></a>
<span class="sourceLineNo">33166</span> break;<a name="line.33166"></a>
<span class="sourceLineNo">33167</span> case Dataset.INT32:<a name="line.33167"></a>
<span class="sourceLineNo">33168</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.33168"></a>
<span class="sourceLineNo">33169</span> if (it.isOutputDouble()) {<a name="line.33169"></a>
<span class="sourceLineNo">33170</span> while (it.hasNext()) {<a name="line.33170"></a>
<span class="sourceLineNo">33171</span> final double ix = it.aDouble;<a name="line.33171"></a>
<span class="sourceLineNo">33172</span> int ox;<a name="line.33172"></a>
<span class="sourceLineNo">33173</span> ox = (int) toLong(Math.toRadians(ix));<a name="line.33173"></a>
<span class="sourceLineNo">33174</span> oi32data[it.oIndex] = ox;<a name="line.33174"></a>
<span class="sourceLineNo">33175</span> }<a name="line.33175"></a>
<span class="sourceLineNo">33176</span> } else {<a name="line.33176"></a>
<span class="sourceLineNo">33177</span> while (it.hasNext()) {<a name="line.33177"></a>
<span class="sourceLineNo">33178</span> final long ix = it.aLong;<a name="line.33178"></a>
<span class="sourceLineNo">33179</span> int ox;<a name="line.33179"></a>
<span class="sourceLineNo">33180</span> ox = (int) toLong(Math.toRadians(ix));<a name="line.33180"></a>
<span class="sourceLineNo">33181</span> oi32data[it.oIndex] = ox;<a name="line.33181"></a>
<span class="sourceLineNo">33182</span> }<a name="line.33182"></a>
<span class="sourceLineNo">33183</span> }<a name="line.33183"></a>
<span class="sourceLineNo">33184</span> break;<a name="line.33184"></a>
<span class="sourceLineNo">33185</span> case Dataset.ARRAYINT8:<a name="line.33185"></a>
<span class="sourceLineNo">33186</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.33186"></a>
<span class="sourceLineNo">33187</span> if (is == 1) {<a name="line.33187"></a>
<span class="sourceLineNo">33188</span> if (it.isOutputDouble()) {<a name="line.33188"></a>
<span class="sourceLineNo">33189</span> while (it.hasNext()) {<a name="line.33189"></a>
<span class="sourceLineNo">33190</span> final double ix = it.aDouble;<a name="line.33190"></a>
<span class="sourceLineNo">33191</span> byte ox;<a name="line.33191"></a>
<span class="sourceLineNo">33192</span> ox = (byte) toLong(Math.toRadians(ix));<a name="line.33192"></a>
<span class="sourceLineNo">33193</span> oai8data[it.oIndex] = ox;<a name="line.33193"></a>
<span class="sourceLineNo">33194</span> }<a name="line.33194"></a>
<span class="sourceLineNo">33195</span> } else {<a name="line.33195"></a>
<span class="sourceLineNo">33196</span> while (it.hasNext()) {<a name="line.33196"></a>
<span class="sourceLineNo">33197</span> final long ix = it.aLong;<a name="line.33197"></a>
<span class="sourceLineNo">33198</span> byte ox;<a name="line.33198"></a>
<span class="sourceLineNo">33199</span> ox = (byte) toLong(Math.toRadians(ix));<a name="line.33199"></a>
<span class="sourceLineNo">33200</span> oai8data[it.oIndex] = ox;<a name="line.33200"></a>
<span class="sourceLineNo">33201</span> }<a name="line.33201"></a>
<span class="sourceLineNo">33202</span> }<a name="line.33202"></a>
<span class="sourceLineNo">33203</span> } else if (as == 1) {<a name="line.33203"></a>
<span class="sourceLineNo">33204</span> if (it.isOutputDouble()) {<a name="line.33204"></a>
<span class="sourceLineNo">33205</span> while (it.hasNext()) {<a name="line.33205"></a>
<span class="sourceLineNo">33206</span> final double ix = it.aDouble;<a name="line.33206"></a>
<span class="sourceLineNo">33207</span> byte ox;<a name="line.33207"></a>
<span class="sourceLineNo">33208</span> ox = (byte) toLong(Math.toRadians(ix));<a name="line.33208"></a>
<span class="sourceLineNo">33209</span> for (int j = 0; j &lt; is; j++) {<a name="line.33209"></a>
<span class="sourceLineNo">33210</span> oai8data[it.oIndex + j] = ox;<a name="line.33210"></a>
<span class="sourceLineNo">33211</span> }<a name="line.33211"></a>
<span class="sourceLineNo">33212</span> }<a name="line.33212"></a>
<span class="sourceLineNo">33213</span> } else {<a name="line.33213"></a>
<span class="sourceLineNo">33214</span> while (it.hasNext()) {<a name="line.33214"></a>
<span class="sourceLineNo">33215</span> final long ix = it.aLong;<a name="line.33215"></a>
<span class="sourceLineNo">33216</span> byte ox;<a name="line.33216"></a>
<span class="sourceLineNo">33217</span> ox = (byte) toLong(Math.toRadians(ix));<a name="line.33217"></a>
<span class="sourceLineNo">33218</span> for (int j = 0; j &lt; is; j++) {<a name="line.33218"></a>
<span class="sourceLineNo">33219</span> oai8data[it.oIndex + j] = ox;<a name="line.33219"></a>
<span class="sourceLineNo">33220</span> }<a name="line.33220"></a>
<span class="sourceLineNo">33221</span> }<a name="line.33221"></a>
<span class="sourceLineNo">33222</span> }<a name="line.33222"></a>
<span class="sourceLineNo">33223</span> } else {<a name="line.33223"></a>
<span class="sourceLineNo">33224</span> if (it.isOutputDouble()) {<a name="line.33224"></a>
<span class="sourceLineNo">33225</span> while (it.hasNext()) {<a name="line.33225"></a>
<span class="sourceLineNo">33226</span> for (int j = 0; j &lt; is; j++) {<a name="line.33226"></a>
<span class="sourceLineNo">33227</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.33227"></a>
<span class="sourceLineNo">33228</span> byte ox;<a name="line.33228"></a>
<span class="sourceLineNo">33229</span> ox = (byte) toLong(Math.toRadians(ix));<a name="line.33229"></a>
<span class="sourceLineNo">33230</span> oai8data[it.oIndex + j] = ox;<a name="line.33230"></a>
<span class="sourceLineNo">33231</span> }<a name="line.33231"></a>
<span class="sourceLineNo">33232</span> }<a name="line.33232"></a>
<span class="sourceLineNo">33233</span> } else {<a name="line.33233"></a>
<span class="sourceLineNo">33234</span> while (it.hasNext()) {<a name="line.33234"></a>
<span class="sourceLineNo">33235</span> for (int j = 0; j &lt; is; j++) {<a name="line.33235"></a>
<span class="sourceLineNo">33236</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.33236"></a>
<span class="sourceLineNo">33237</span> byte ox;<a name="line.33237"></a>
<span class="sourceLineNo">33238</span> ox = (byte) toLong(Math.toRadians(ix));<a name="line.33238"></a>
<span class="sourceLineNo">33239</span> oai8data[it.oIndex + j] = ox;<a name="line.33239"></a>
<span class="sourceLineNo">33240</span> }<a name="line.33240"></a>
<span class="sourceLineNo">33241</span> }<a name="line.33241"></a>
<span class="sourceLineNo">33242</span> }<a name="line.33242"></a>
<span class="sourceLineNo">33243</span> }<a name="line.33243"></a>
<span class="sourceLineNo">33244</span> break;<a name="line.33244"></a>
<span class="sourceLineNo">33245</span> case Dataset.ARRAYINT16:<a name="line.33245"></a>
<span class="sourceLineNo">33246</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.33246"></a>
<span class="sourceLineNo">33247</span> if (is == 1) {<a name="line.33247"></a>
<span class="sourceLineNo">33248</span> if (it.isOutputDouble()) {<a name="line.33248"></a>
<span class="sourceLineNo">33249</span> while (it.hasNext()) {<a name="line.33249"></a>
<span class="sourceLineNo">33250</span> final double ix = it.aDouble;<a name="line.33250"></a>
<span class="sourceLineNo">33251</span> short ox;<a name="line.33251"></a>
<span class="sourceLineNo">33252</span> ox = (short) toLong(Math.toRadians(ix));<a name="line.33252"></a>
<span class="sourceLineNo">33253</span> oai16data[it.oIndex] = ox;<a name="line.33253"></a>
<span class="sourceLineNo">33254</span> }<a name="line.33254"></a>
<span class="sourceLineNo">33255</span> } else {<a name="line.33255"></a>
<span class="sourceLineNo">33256</span> while (it.hasNext()) {<a name="line.33256"></a>
<span class="sourceLineNo">33257</span> final long ix = it.aLong;<a name="line.33257"></a>
<span class="sourceLineNo">33258</span> short ox;<a name="line.33258"></a>
<span class="sourceLineNo">33259</span> ox = (short) toLong(Math.toRadians(ix));<a name="line.33259"></a>
<span class="sourceLineNo">33260</span> oai16data[it.oIndex] = ox;<a name="line.33260"></a>
<span class="sourceLineNo">33261</span> }<a name="line.33261"></a>
<span class="sourceLineNo">33262</span> }<a name="line.33262"></a>
<span class="sourceLineNo">33263</span> } else if (as == 1) {<a name="line.33263"></a>
<span class="sourceLineNo">33264</span> if (it.isOutputDouble()) {<a name="line.33264"></a>
<span class="sourceLineNo">33265</span> while (it.hasNext()) {<a name="line.33265"></a>
<span class="sourceLineNo">33266</span> final double ix = it.aDouble;<a name="line.33266"></a>
<span class="sourceLineNo">33267</span> short ox;<a name="line.33267"></a>
<span class="sourceLineNo">33268</span> ox = (short) toLong(Math.toRadians(ix));<a name="line.33268"></a>
<span class="sourceLineNo">33269</span> for (int j = 0; j &lt; is; j++) {<a name="line.33269"></a>
<span class="sourceLineNo">33270</span> oai16data[it.oIndex + j] = ox;<a name="line.33270"></a>
<span class="sourceLineNo">33271</span> }<a name="line.33271"></a>
<span class="sourceLineNo">33272</span> }<a name="line.33272"></a>
<span class="sourceLineNo">33273</span> } else {<a name="line.33273"></a>
<span class="sourceLineNo">33274</span> while (it.hasNext()) {<a name="line.33274"></a>
<span class="sourceLineNo">33275</span> final long ix = it.aLong;<a name="line.33275"></a>
<span class="sourceLineNo">33276</span> short ox;<a name="line.33276"></a>
<span class="sourceLineNo">33277</span> ox = (short) toLong(Math.toRadians(ix));<a name="line.33277"></a>
<span class="sourceLineNo">33278</span> for (int j = 0; j &lt; is; j++) {<a name="line.33278"></a>
<span class="sourceLineNo">33279</span> oai16data[it.oIndex + j] = ox;<a name="line.33279"></a>
<span class="sourceLineNo">33280</span> }<a name="line.33280"></a>
<span class="sourceLineNo">33281</span> }<a name="line.33281"></a>
<span class="sourceLineNo">33282</span> }<a name="line.33282"></a>
<span class="sourceLineNo">33283</span> } else {<a name="line.33283"></a>
<span class="sourceLineNo">33284</span> if (it.isOutputDouble()) {<a name="line.33284"></a>
<span class="sourceLineNo">33285</span> while (it.hasNext()) {<a name="line.33285"></a>
<span class="sourceLineNo">33286</span> for (int j = 0; j &lt; is; j++) {<a name="line.33286"></a>
<span class="sourceLineNo">33287</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.33287"></a>
<span class="sourceLineNo">33288</span> short ox;<a name="line.33288"></a>
<span class="sourceLineNo">33289</span> ox = (short) toLong(Math.toRadians(ix));<a name="line.33289"></a>
<span class="sourceLineNo">33290</span> oai16data[it.oIndex + j] = ox;<a name="line.33290"></a>
<span class="sourceLineNo">33291</span> }<a name="line.33291"></a>
<span class="sourceLineNo">33292</span> }<a name="line.33292"></a>
<span class="sourceLineNo">33293</span> } else {<a name="line.33293"></a>
<span class="sourceLineNo">33294</span> while (it.hasNext()) {<a name="line.33294"></a>
<span class="sourceLineNo">33295</span> for (int j = 0; j &lt; is; j++) {<a name="line.33295"></a>
<span class="sourceLineNo">33296</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.33296"></a>
<span class="sourceLineNo">33297</span> short ox;<a name="line.33297"></a>
<span class="sourceLineNo">33298</span> ox = (short) toLong(Math.toRadians(ix));<a name="line.33298"></a>
<span class="sourceLineNo">33299</span> oai16data[it.oIndex + j] = ox;<a name="line.33299"></a>
<span class="sourceLineNo">33300</span> }<a name="line.33300"></a>
<span class="sourceLineNo">33301</span> }<a name="line.33301"></a>
<span class="sourceLineNo">33302</span> }<a name="line.33302"></a>
<span class="sourceLineNo">33303</span> }<a name="line.33303"></a>
<span class="sourceLineNo">33304</span> break;<a name="line.33304"></a>
<span class="sourceLineNo">33305</span> case Dataset.ARRAYINT64:<a name="line.33305"></a>
<span class="sourceLineNo">33306</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.33306"></a>
<span class="sourceLineNo">33307</span> if (is == 1) {<a name="line.33307"></a>
<span class="sourceLineNo">33308</span> if (it.isOutputDouble()) {<a name="line.33308"></a>
<span class="sourceLineNo">33309</span> while (it.hasNext()) {<a name="line.33309"></a>
<span class="sourceLineNo">33310</span> final double ix = it.aDouble;<a name="line.33310"></a>
<span class="sourceLineNo">33311</span> long ox;<a name="line.33311"></a>
<span class="sourceLineNo">33312</span> ox = toLong(Math.toRadians(ix));<a name="line.33312"></a>
<span class="sourceLineNo">33313</span> oai64data[it.oIndex] = ox;<a name="line.33313"></a>
<span class="sourceLineNo">33314</span> }<a name="line.33314"></a>
<span class="sourceLineNo">33315</span> } else {<a name="line.33315"></a>
<span class="sourceLineNo">33316</span> while (it.hasNext()) {<a name="line.33316"></a>
<span class="sourceLineNo">33317</span> final long ix = it.aLong;<a name="line.33317"></a>
<span class="sourceLineNo">33318</span> long ox;<a name="line.33318"></a>
<span class="sourceLineNo">33319</span> ox = toLong(Math.toRadians(ix));<a name="line.33319"></a>
<span class="sourceLineNo">33320</span> oai64data[it.oIndex] = ox;<a name="line.33320"></a>
<span class="sourceLineNo">33321</span> }<a name="line.33321"></a>
<span class="sourceLineNo">33322</span> }<a name="line.33322"></a>
<span class="sourceLineNo">33323</span> } else if (as == 1) {<a name="line.33323"></a>
<span class="sourceLineNo">33324</span> if (it.isOutputDouble()) {<a name="line.33324"></a>
<span class="sourceLineNo">33325</span> while (it.hasNext()) {<a name="line.33325"></a>
<span class="sourceLineNo">33326</span> final double ix = it.aDouble;<a name="line.33326"></a>
<span class="sourceLineNo">33327</span> long ox;<a name="line.33327"></a>
<span class="sourceLineNo">33328</span> ox = toLong(Math.toRadians(ix));<a name="line.33328"></a>
<span class="sourceLineNo">33329</span> for (int j = 0; j &lt; is; j++) {<a name="line.33329"></a>
<span class="sourceLineNo">33330</span> oai64data[it.oIndex + j] = ox;<a name="line.33330"></a>
<span class="sourceLineNo">33331</span> }<a name="line.33331"></a>
<span class="sourceLineNo">33332</span> }<a name="line.33332"></a>
<span class="sourceLineNo">33333</span> } else {<a name="line.33333"></a>
<span class="sourceLineNo">33334</span> while (it.hasNext()) {<a name="line.33334"></a>
<span class="sourceLineNo">33335</span> final long ix = it.aLong;<a name="line.33335"></a>
<span class="sourceLineNo">33336</span> long ox;<a name="line.33336"></a>
<span class="sourceLineNo">33337</span> ox = toLong(Math.toRadians(ix));<a name="line.33337"></a>
<span class="sourceLineNo">33338</span> for (int j = 0; j &lt; is; j++) {<a name="line.33338"></a>
<span class="sourceLineNo">33339</span> oai64data[it.oIndex + j] = ox;<a name="line.33339"></a>
<span class="sourceLineNo">33340</span> }<a name="line.33340"></a>
<span class="sourceLineNo">33341</span> }<a name="line.33341"></a>
<span class="sourceLineNo">33342</span> }<a name="line.33342"></a>
<span class="sourceLineNo">33343</span> } else {<a name="line.33343"></a>
<span class="sourceLineNo">33344</span> if (it.isOutputDouble()) {<a name="line.33344"></a>
<span class="sourceLineNo">33345</span> while (it.hasNext()) {<a name="line.33345"></a>
<span class="sourceLineNo">33346</span> for (int j = 0; j &lt; is; j++) {<a name="line.33346"></a>
<span class="sourceLineNo">33347</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.33347"></a>
<span class="sourceLineNo">33348</span> long ox;<a name="line.33348"></a>
<span class="sourceLineNo">33349</span> ox = toLong(Math.toRadians(ix));<a name="line.33349"></a>
<span class="sourceLineNo">33350</span> oai64data[it.oIndex + j] = ox;<a name="line.33350"></a>
<span class="sourceLineNo">33351</span> }<a name="line.33351"></a>
<span class="sourceLineNo">33352</span> }<a name="line.33352"></a>
<span class="sourceLineNo">33353</span> } else {<a name="line.33353"></a>
<span class="sourceLineNo">33354</span> while (it.hasNext()) {<a name="line.33354"></a>
<span class="sourceLineNo">33355</span> for (int j = 0; j &lt; is; j++) {<a name="line.33355"></a>
<span class="sourceLineNo">33356</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.33356"></a>
<span class="sourceLineNo">33357</span> long ox;<a name="line.33357"></a>
<span class="sourceLineNo">33358</span> ox = toLong(Math.toRadians(ix));<a name="line.33358"></a>
<span class="sourceLineNo">33359</span> oai64data[it.oIndex + j] = ox;<a name="line.33359"></a>
<span class="sourceLineNo">33360</span> }<a name="line.33360"></a>
<span class="sourceLineNo">33361</span> }<a name="line.33361"></a>
<span class="sourceLineNo">33362</span> }<a name="line.33362"></a>
<span class="sourceLineNo">33363</span> }<a name="line.33363"></a>
<span class="sourceLineNo">33364</span> break;<a name="line.33364"></a>
<span class="sourceLineNo">33365</span> case Dataset.ARRAYINT32:<a name="line.33365"></a>
<span class="sourceLineNo">33366</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.33366"></a>
<span class="sourceLineNo">33367</span> if (is == 1) {<a name="line.33367"></a>
<span class="sourceLineNo">33368</span> if (it.isOutputDouble()) {<a name="line.33368"></a>
<span class="sourceLineNo">33369</span> while (it.hasNext()) {<a name="line.33369"></a>
<span class="sourceLineNo">33370</span> final double ix = it.aDouble;<a name="line.33370"></a>
<span class="sourceLineNo">33371</span> int ox;<a name="line.33371"></a>
<span class="sourceLineNo">33372</span> ox = (int) toLong(Math.toRadians(ix));<a name="line.33372"></a>
<span class="sourceLineNo">33373</span> oai32data[it.oIndex] = ox;<a name="line.33373"></a>
<span class="sourceLineNo">33374</span> }<a name="line.33374"></a>
<span class="sourceLineNo">33375</span> } else {<a name="line.33375"></a>
<span class="sourceLineNo">33376</span> while (it.hasNext()) {<a name="line.33376"></a>
<span class="sourceLineNo">33377</span> final long ix = it.aLong;<a name="line.33377"></a>
<span class="sourceLineNo">33378</span> int ox;<a name="line.33378"></a>
<span class="sourceLineNo">33379</span> ox = (int) toLong(Math.toRadians(ix));<a name="line.33379"></a>
<span class="sourceLineNo">33380</span> oai32data[it.oIndex] = ox;<a name="line.33380"></a>
<span class="sourceLineNo">33381</span> }<a name="line.33381"></a>
<span class="sourceLineNo">33382</span> }<a name="line.33382"></a>
<span class="sourceLineNo">33383</span> } else if (as == 1) {<a name="line.33383"></a>
<span class="sourceLineNo">33384</span> if (it.isOutputDouble()) {<a name="line.33384"></a>
<span class="sourceLineNo">33385</span> while (it.hasNext()) {<a name="line.33385"></a>
<span class="sourceLineNo">33386</span> final double ix = it.aDouble;<a name="line.33386"></a>
<span class="sourceLineNo">33387</span> int ox;<a name="line.33387"></a>
<span class="sourceLineNo">33388</span> ox = (int) toLong(Math.toRadians(ix));<a name="line.33388"></a>
<span class="sourceLineNo">33389</span> for (int j = 0; j &lt; is; j++) {<a name="line.33389"></a>
<span class="sourceLineNo">33390</span> oai32data[it.oIndex + j] = ox;<a name="line.33390"></a>
<span class="sourceLineNo">33391</span> }<a name="line.33391"></a>
<span class="sourceLineNo">33392</span> }<a name="line.33392"></a>
<span class="sourceLineNo">33393</span> } else {<a name="line.33393"></a>
<span class="sourceLineNo">33394</span> while (it.hasNext()) {<a name="line.33394"></a>
<span class="sourceLineNo">33395</span> final long ix = it.aLong;<a name="line.33395"></a>
<span class="sourceLineNo">33396</span> int ox;<a name="line.33396"></a>
<span class="sourceLineNo">33397</span> ox = (int) toLong(Math.toRadians(ix));<a name="line.33397"></a>
<span class="sourceLineNo">33398</span> for (int j = 0; j &lt; is; j++) {<a name="line.33398"></a>
<span class="sourceLineNo">33399</span> oai32data[it.oIndex + j] = ox;<a name="line.33399"></a>
<span class="sourceLineNo">33400</span> }<a name="line.33400"></a>
<span class="sourceLineNo">33401</span> }<a name="line.33401"></a>
<span class="sourceLineNo">33402</span> }<a name="line.33402"></a>
<span class="sourceLineNo">33403</span> } else {<a name="line.33403"></a>
<span class="sourceLineNo">33404</span> if (it.isOutputDouble()) {<a name="line.33404"></a>
<span class="sourceLineNo">33405</span> while (it.hasNext()) {<a name="line.33405"></a>
<span class="sourceLineNo">33406</span> for (int j = 0; j &lt; is; j++) {<a name="line.33406"></a>
<span class="sourceLineNo">33407</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.33407"></a>
<span class="sourceLineNo">33408</span> int ox;<a name="line.33408"></a>
<span class="sourceLineNo">33409</span> ox = (int) toLong(Math.toRadians(ix));<a name="line.33409"></a>
<span class="sourceLineNo">33410</span> oai32data[it.oIndex + j] = ox;<a name="line.33410"></a>
<span class="sourceLineNo">33411</span> }<a name="line.33411"></a>
<span class="sourceLineNo">33412</span> }<a name="line.33412"></a>
<span class="sourceLineNo">33413</span> } else {<a name="line.33413"></a>
<span class="sourceLineNo">33414</span> while (it.hasNext()) {<a name="line.33414"></a>
<span class="sourceLineNo">33415</span> for (int j = 0; j &lt; is; j++) {<a name="line.33415"></a>
<span class="sourceLineNo">33416</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.33416"></a>
<span class="sourceLineNo">33417</span> int ox;<a name="line.33417"></a>
<span class="sourceLineNo">33418</span> ox = (int) toLong(Math.toRadians(ix));<a name="line.33418"></a>
<span class="sourceLineNo">33419</span> oai32data[it.oIndex + j] = ox;<a name="line.33419"></a>
<span class="sourceLineNo">33420</span> }<a name="line.33420"></a>
<span class="sourceLineNo">33421</span> }<a name="line.33421"></a>
<span class="sourceLineNo">33422</span> }<a name="line.33422"></a>
<span class="sourceLineNo">33423</span> }<a name="line.33423"></a>
<span class="sourceLineNo">33424</span> break;<a name="line.33424"></a>
<span class="sourceLineNo">33425</span> case Dataset.FLOAT32:<a name="line.33425"></a>
<span class="sourceLineNo">33426</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.33426"></a>
<span class="sourceLineNo">33427</span> if (it.isOutputDouble()) {<a name="line.33427"></a>
<span class="sourceLineNo">33428</span> while (it.hasNext()) {<a name="line.33428"></a>
<span class="sourceLineNo">33429</span> final double ix = it.aDouble;<a name="line.33429"></a>
<span class="sourceLineNo">33430</span> float ox;<a name="line.33430"></a>
<span class="sourceLineNo">33431</span> ox = (float) (Math.toRadians(ix));<a name="line.33431"></a>
<span class="sourceLineNo">33432</span> of32data[it.oIndex] = ox;<a name="line.33432"></a>
<span class="sourceLineNo">33433</span> }<a name="line.33433"></a>
<span class="sourceLineNo">33434</span> } else {<a name="line.33434"></a>
<span class="sourceLineNo">33435</span> while (it.hasNext()) {<a name="line.33435"></a>
<span class="sourceLineNo">33436</span> final long ix = it.aLong;<a name="line.33436"></a>
<span class="sourceLineNo">33437</span> float ox;<a name="line.33437"></a>
<span class="sourceLineNo">33438</span> ox = (float) (Math.toRadians(ix));<a name="line.33438"></a>
<span class="sourceLineNo">33439</span> of32data[it.oIndex] = ox;<a name="line.33439"></a>
<span class="sourceLineNo">33440</span> }<a name="line.33440"></a>
<span class="sourceLineNo">33441</span> }<a name="line.33441"></a>
<span class="sourceLineNo">33442</span> break;<a name="line.33442"></a>
<span class="sourceLineNo">33443</span> case Dataset.FLOAT64:<a name="line.33443"></a>
<span class="sourceLineNo">33444</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.33444"></a>
<span class="sourceLineNo">33445</span> if (it.isOutputDouble()) {<a name="line.33445"></a>
<span class="sourceLineNo">33446</span> while (it.hasNext()) {<a name="line.33446"></a>
<span class="sourceLineNo">33447</span> final double ix = it.aDouble;<a name="line.33447"></a>
<span class="sourceLineNo">33448</span> double ox;<a name="line.33448"></a>
<span class="sourceLineNo">33449</span> ox = (Math.toRadians(ix));<a name="line.33449"></a>
<span class="sourceLineNo">33450</span> of64data[it.oIndex] = ox;<a name="line.33450"></a>
<span class="sourceLineNo">33451</span> }<a name="line.33451"></a>
<span class="sourceLineNo">33452</span> } else {<a name="line.33452"></a>
<span class="sourceLineNo">33453</span> while (it.hasNext()) {<a name="line.33453"></a>
<span class="sourceLineNo">33454</span> final long ix = it.aLong;<a name="line.33454"></a>
<span class="sourceLineNo">33455</span> double ox;<a name="line.33455"></a>
<span class="sourceLineNo">33456</span> ox = (Math.toRadians(ix));<a name="line.33456"></a>
<span class="sourceLineNo">33457</span> of64data[it.oIndex] = ox;<a name="line.33457"></a>
<span class="sourceLineNo">33458</span> }<a name="line.33458"></a>
<span class="sourceLineNo">33459</span> }<a name="line.33459"></a>
<span class="sourceLineNo">33460</span> break;<a name="line.33460"></a>
<span class="sourceLineNo">33461</span> case Dataset.ARRAYFLOAT32:<a name="line.33461"></a>
<span class="sourceLineNo">33462</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.33462"></a>
<span class="sourceLineNo">33463</span> if (is == 1) {<a name="line.33463"></a>
<span class="sourceLineNo">33464</span> if (it.isOutputDouble()) {<a name="line.33464"></a>
<span class="sourceLineNo">33465</span> while (it.hasNext()) {<a name="line.33465"></a>
<span class="sourceLineNo">33466</span> final double ix = it.aDouble;<a name="line.33466"></a>
<span class="sourceLineNo">33467</span> float ox;<a name="line.33467"></a>
<span class="sourceLineNo">33468</span> ox = (float) (Math.toRadians(ix));<a name="line.33468"></a>
<span class="sourceLineNo">33469</span> oaf32data[it.oIndex] = ox;<a name="line.33469"></a>
<span class="sourceLineNo">33470</span> }<a name="line.33470"></a>
<span class="sourceLineNo">33471</span> } else {<a name="line.33471"></a>
<span class="sourceLineNo">33472</span> while (it.hasNext()) {<a name="line.33472"></a>
<span class="sourceLineNo">33473</span> final long ix = it.aLong;<a name="line.33473"></a>
<span class="sourceLineNo">33474</span> float ox;<a name="line.33474"></a>
<span class="sourceLineNo">33475</span> ox = (float) (Math.toRadians(ix));<a name="line.33475"></a>
<span class="sourceLineNo">33476</span> oaf32data[it.oIndex] = ox;<a name="line.33476"></a>
<span class="sourceLineNo">33477</span> }<a name="line.33477"></a>
<span class="sourceLineNo">33478</span> }<a name="line.33478"></a>
<span class="sourceLineNo">33479</span> } else if (as == 1) {<a name="line.33479"></a>
<span class="sourceLineNo">33480</span> if (it.isOutputDouble()) {<a name="line.33480"></a>
<span class="sourceLineNo">33481</span> while (it.hasNext()) {<a name="line.33481"></a>
<span class="sourceLineNo">33482</span> final double ix = it.aDouble;<a name="line.33482"></a>
<span class="sourceLineNo">33483</span> float ox;<a name="line.33483"></a>
<span class="sourceLineNo">33484</span> ox = (float) (Math.toRadians(ix));<a name="line.33484"></a>
<span class="sourceLineNo">33485</span> for (int j = 0; j &lt; is; j++) {<a name="line.33485"></a>
<span class="sourceLineNo">33486</span> oaf32data[it.oIndex + j] = ox;<a name="line.33486"></a>
<span class="sourceLineNo">33487</span> }<a name="line.33487"></a>
<span class="sourceLineNo">33488</span> }<a name="line.33488"></a>
<span class="sourceLineNo">33489</span> } else {<a name="line.33489"></a>
<span class="sourceLineNo">33490</span> while (it.hasNext()) {<a name="line.33490"></a>
<span class="sourceLineNo">33491</span> final long ix = it.aLong;<a name="line.33491"></a>
<span class="sourceLineNo">33492</span> float ox;<a name="line.33492"></a>
<span class="sourceLineNo">33493</span> ox = (float) (Math.toRadians(ix));<a name="line.33493"></a>
<span class="sourceLineNo">33494</span> for (int j = 0; j &lt; is; j++) {<a name="line.33494"></a>
<span class="sourceLineNo">33495</span> oaf32data[it.oIndex + j] = ox;<a name="line.33495"></a>
<span class="sourceLineNo">33496</span> }<a name="line.33496"></a>
<span class="sourceLineNo">33497</span> }<a name="line.33497"></a>
<span class="sourceLineNo">33498</span> }<a name="line.33498"></a>
<span class="sourceLineNo">33499</span> } else {<a name="line.33499"></a>
<span class="sourceLineNo">33500</span> if (it.isOutputDouble()) {<a name="line.33500"></a>
<span class="sourceLineNo">33501</span> while (it.hasNext()) {<a name="line.33501"></a>
<span class="sourceLineNo">33502</span> for (int j = 0; j &lt; is; j++) {<a name="line.33502"></a>
<span class="sourceLineNo">33503</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.33503"></a>
<span class="sourceLineNo">33504</span> float ox;<a name="line.33504"></a>
<span class="sourceLineNo">33505</span> ox = (float) (Math.toRadians(ix));<a name="line.33505"></a>
<span class="sourceLineNo">33506</span> oaf32data[it.oIndex + j] = ox;<a name="line.33506"></a>
<span class="sourceLineNo">33507</span> }<a name="line.33507"></a>
<span class="sourceLineNo">33508</span> }<a name="line.33508"></a>
<span class="sourceLineNo">33509</span> } else {<a name="line.33509"></a>
<span class="sourceLineNo">33510</span> while (it.hasNext()) {<a name="line.33510"></a>
<span class="sourceLineNo">33511</span> for (int j = 0; j &lt; is; j++) {<a name="line.33511"></a>
<span class="sourceLineNo">33512</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.33512"></a>
<span class="sourceLineNo">33513</span> float ox;<a name="line.33513"></a>
<span class="sourceLineNo">33514</span> ox = (float) (Math.toRadians(ix));<a name="line.33514"></a>
<span class="sourceLineNo">33515</span> oaf32data[it.oIndex + j] = ox;<a name="line.33515"></a>
<span class="sourceLineNo">33516</span> }<a name="line.33516"></a>
<span class="sourceLineNo">33517</span> }<a name="line.33517"></a>
<span class="sourceLineNo">33518</span> }<a name="line.33518"></a>
<span class="sourceLineNo">33519</span> }<a name="line.33519"></a>
<span class="sourceLineNo">33520</span> break;<a name="line.33520"></a>
<span class="sourceLineNo">33521</span> case Dataset.ARRAYFLOAT64:<a name="line.33521"></a>
<span class="sourceLineNo">33522</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.33522"></a>
<span class="sourceLineNo">33523</span> if (is == 1) {<a name="line.33523"></a>
<span class="sourceLineNo">33524</span> if (it.isOutputDouble()) {<a name="line.33524"></a>
<span class="sourceLineNo">33525</span> while (it.hasNext()) {<a name="line.33525"></a>
<span class="sourceLineNo">33526</span> final double ix = it.aDouble;<a name="line.33526"></a>
<span class="sourceLineNo">33527</span> double ox;<a name="line.33527"></a>
<span class="sourceLineNo">33528</span> ox = (Math.toRadians(ix));<a name="line.33528"></a>
<span class="sourceLineNo">33529</span> oaf64data[it.oIndex] = ox;<a name="line.33529"></a>
<span class="sourceLineNo">33530</span> }<a name="line.33530"></a>
<span class="sourceLineNo">33531</span> } else {<a name="line.33531"></a>
<span class="sourceLineNo">33532</span> while (it.hasNext()) {<a name="line.33532"></a>
<span class="sourceLineNo">33533</span> final long ix = it.aLong;<a name="line.33533"></a>
<span class="sourceLineNo">33534</span> double ox;<a name="line.33534"></a>
<span class="sourceLineNo">33535</span> ox = (Math.toRadians(ix));<a name="line.33535"></a>
<span class="sourceLineNo">33536</span> oaf64data[it.oIndex] = ox;<a name="line.33536"></a>
<span class="sourceLineNo">33537</span> }<a name="line.33537"></a>
<span class="sourceLineNo">33538</span> }<a name="line.33538"></a>
<span class="sourceLineNo">33539</span> } else if (as == 1) {<a name="line.33539"></a>
<span class="sourceLineNo">33540</span> if (it.isOutputDouble()) {<a name="line.33540"></a>
<span class="sourceLineNo">33541</span> while (it.hasNext()) {<a name="line.33541"></a>
<span class="sourceLineNo">33542</span> final double ix = it.aDouble;<a name="line.33542"></a>
<span class="sourceLineNo">33543</span> double ox;<a name="line.33543"></a>
<span class="sourceLineNo">33544</span> ox = (Math.toRadians(ix));<a name="line.33544"></a>
<span class="sourceLineNo">33545</span> for (int j = 0; j &lt; is; j++) {<a name="line.33545"></a>
<span class="sourceLineNo">33546</span> oaf64data[it.oIndex + j] = ox;<a name="line.33546"></a>
<span class="sourceLineNo">33547</span> }<a name="line.33547"></a>
<span class="sourceLineNo">33548</span> }<a name="line.33548"></a>
<span class="sourceLineNo">33549</span> } else {<a name="line.33549"></a>
<span class="sourceLineNo">33550</span> while (it.hasNext()) {<a name="line.33550"></a>
<span class="sourceLineNo">33551</span> final long ix = it.aLong;<a name="line.33551"></a>
<span class="sourceLineNo">33552</span> double ox;<a name="line.33552"></a>
<span class="sourceLineNo">33553</span> ox = (Math.toRadians(ix));<a name="line.33553"></a>
<span class="sourceLineNo">33554</span> for (int j = 0; j &lt; is; j++) {<a name="line.33554"></a>
<span class="sourceLineNo">33555</span> oaf64data[it.oIndex + j] = ox;<a name="line.33555"></a>
<span class="sourceLineNo">33556</span> }<a name="line.33556"></a>
<span class="sourceLineNo">33557</span> }<a name="line.33557"></a>
<span class="sourceLineNo">33558</span> }<a name="line.33558"></a>
<span class="sourceLineNo">33559</span> } else {<a name="line.33559"></a>
<span class="sourceLineNo">33560</span> if (it.isOutputDouble()) {<a name="line.33560"></a>
<span class="sourceLineNo">33561</span> while (it.hasNext()) {<a name="line.33561"></a>
<span class="sourceLineNo">33562</span> for (int j = 0; j &lt; is; j++) {<a name="line.33562"></a>
<span class="sourceLineNo">33563</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.33563"></a>
<span class="sourceLineNo">33564</span> double ox;<a name="line.33564"></a>
<span class="sourceLineNo">33565</span> ox = (Math.toRadians(ix));<a name="line.33565"></a>
<span class="sourceLineNo">33566</span> oaf64data[it.oIndex + j] = ox;<a name="line.33566"></a>
<span class="sourceLineNo">33567</span> }<a name="line.33567"></a>
<span class="sourceLineNo">33568</span> }<a name="line.33568"></a>
<span class="sourceLineNo">33569</span> } else {<a name="line.33569"></a>
<span class="sourceLineNo">33570</span> while (it.hasNext()) {<a name="line.33570"></a>
<span class="sourceLineNo">33571</span> for (int j = 0; j &lt; is; j++) {<a name="line.33571"></a>
<span class="sourceLineNo">33572</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.33572"></a>
<span class="sourceLineNo">33573</span> double ox;<a name="line.33573"></a>
<span class="sourceLineNo">33574</span> ox = (Math.toRadians(ix));<a name="line.33574"></a>
<span class="sourceLineNo">33575</span> oaf64data[it.oIndex + j] = ox;<a name="line.33575"></a>
<span class="sourceLineNo">33576</span> }<a name="line.33576"></a>
<span class="sourceLineNo">33577</span> }<a name="line.33577"></a>
<span class="sourceLineNo">33578</span> }<a name="line.33578"></a>
<span class="sourceLineNo">33579</span> }<a name="line.33579"></a>
<span class="sourceLineNo">33580</span> break;<a name="line.33580"></a>
<span class="sourceLineNo">33581</span> case Dataset.COMPLEX64:<a name="line.33581"></a>
<span class="sourceLineNo">33582</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.33582"></a>
<span class="sourceLineNo">33583</span> if (!da.isComplex()) {<a name="line.33583"></a>
<span class="sourceLineNo">33584</span> if (it.isOutputDouble()) {<a name="line.33584"></a>
<span class="sourceLineNo">33585</span> final double iy = 0;<a name="line.33585"></a>
<span class="sourceLineNo">33586</span> while (it.hasNext()) {<a name="line.33586"></a>
<span class="sourceLineNo">33587</span> final double ix = it.aDouble;<a name="line.33587"></a>
<span class="sourceLineNo">33588</span> float ox;<a name="line.33588"></a>
<span class="sourceLineNo">33589</span> float oy;<a name="line.33589"></a>
<span class="sourceLineNo">33590</span> ox = (float) (Math.toRadians(ix));<a name="line.33590"></a>
<span class="sourceLineNo">33591</span> oy = (float) (Math.toRadians(iy));<a name="line.33591"></a>
<span class="sourceLineNo">33592</span> oc64data[it.oIndex] = ox;<a name="line.33592"></a>
<span class="sourceLineNo">33593</span> oc64data[it.oIndex + 1] = oy;<a name="line.33593"></a>
<span class="sourceLineNo">33594</span> }<a name="line.33594"></a>
<span class="sourceLineNo">33595</span> } else {<a name="line.33595"></a>
<span class="sourceLineNo">33596</span> final long iy = 0;<a name="line.33596"></a>
<span class="sourceLineNo">33597</span> while (it.hasNext()) {<a name="line.33597"></a>
<span class="sourceLineNo">33598</span> final long ix = it.aLong;<a name="line.33598"></a>
<span class="sourceLineNo">33599</span> float ox;<a name="line.33599"></a>
<span class="sourceLineNo">33600</span> float oy;<a name="line.33600"></a>
<span class="sourceLineNo">33601</span> ox = (float) toLong(Math.toRadians(ix));<a name="line.33601"></a>
<span class="sourceLineNo">33602</span> oy = (float) toLong(Math.toRadians(iy));<a name="line.33602"></a>
<span class="sourceLineNo">33603</span> oc64data[it.oIndex] = ox;<a name="line.33603"></a>
<span class="sourceLineNo">33604</span> oc64data[it.oIndex + 1] = oy;<a name="line.33604"></a>
<span class="sourceLineNo">33605</span> }<a name="line.33605"></a>
<span class="sourceLineNo">33606</span> }<a name="line.33606"></a>
<span class="sourceLineNo">33607</span> } else {<a name="line.33607"></a>
<span class="sourceLineNo">33608</span> while (it.hasNext()) {<a name="line.33608"></a>
<span class="sourceLineNo">33609</span> final double ix = it.aDouble;<a name="line.33609"></a>
<span class="sourceLineNo">33610</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.33610"></a>
<span class="sourceLineNo">33611</span> float ox;<a name="line.33611"></a>
<span class="sourceLineNo">33612</span> float oy;<a name="line.33612"></a>
<span class="sourceLineNo">33613</span> ox = (float) (Math.toRadians(ix));<a name="line.33613"></a>
<span class="sourceLineNo">33614</span> oy = (float) (Math.toRadians(iy));<a name="line.33614"></a>
<span class="sourceLineNo">33615</span> oc64data[it.oIndex] = ox;<a name="line.33615"></a>
<span class="sourceLineNo">33616</span> oc64data[it.oIndex + 1] = oy;<a name="line.33616"></a>
<span class="sourceLineNo">33617</span> }<a name="line.33617"></a>
<span class="sourceLineNo">33618</span> }<a name="line.33618"></a>
<span class="sourceLineNo">33619</span> break;<a name="line.33619"></a>
<span class="sourceLineNo">33620</span> case Dataset.COMPLEX128:<a name="line.33620"></a>
<span class="sourceLineNo">33621</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.33621"></a>
<span class="sourceLineNo">33622</span> if (!da.isComplex()) {<a name="line.33622"></a>
<span class="sourceLineNo">33623</span> if (it.isOutputDouble()) {<a name="line.33623"></a>
<span class="sourceLineNo">33624</span> final double iy = 0;<a name="line.33624"></a>
<span class="sourceLineNo">33625</span> while (it.hasNext()) {<a name="line.33625"></a>
<span class="sourceLineNo">33626</span> final double ix = it.aDouble;<a name="line.33626"></a>
<span class="sourceLineNo">33627</span> double ox;<a name="line.33627"></a>
<span class="sourceLineNo">33628</span> double oy;<a name="line.33628"></a>
<span class="sourceLineNo">33629</span> ox = (Math.toRadians(ix));<a name="line.33629"></a>
<span class="sourceLineNo">33630</span> oy = (Math.toRadians(iy));<a name="line.33630"></a>
<span class="sourceLineNo">33631</span> oc128data[it.oIndex] = ox;<a name="line.33631"></a>
<span class="sourceLineNo">33632</span> oc128data[it.oIndex + 1] = oy;<a name="line.33632"></a>
<span class="sourceLineNo">33633</span> }<a name="line.33633"></a>
<span class="sourceLineNo">33634</span> } else {<a name="line.33634"></a>
<span class="sourceLineNo">33635</span> final long iy = 0;<a name="line.33635"></a>
<span class="sourceLineNo">33636</span> while (it.hasNext()) {<a name="line.33636"></a>
<span class="sourceLineNo">33637</span> final long ix = it.aLong;<a name="line.33637"></a>
<span class="sourceLineNo">33638</span> double ox;<a name="line.33638"></a>
<span class="sourceLineNo">33639</span> double oy;<a name="line.33639"></a>
<span class="sourceLineNo">33640</span> ox = (double) (Math.toRadians(ix));<a name="line.33640"></a>
<span class="sourceLineNo">33641</span> oy = (double) (Math.toRadians(iy));<a name="line.33641"></a>
<span class="sourceLineNo">33642</span> oc128data[it.oIndex] = ox;<a name="line.33642"></a>
<span class="sourceLineNo">33643</span> oc128data[it.oIndex + 1] = oy;<a name="line.33643"></a>
<span class="sourceLineNo">33644</span> }<a name="line.33644"></a>
<span class="sourceLineNo">33645</span> }<a name="line.33645"></a>
<span class="sourceLineNo">33646</span> } else {<a name="line.33646"></a>
<span class="sourceLineNo">33647</span> while (it.hasNext()) {<a name="line.33647"></a>
<span class="sourceLineNo">33648</span> final double ix = it.aDouble;<a name="line.33648"></a>
<span class="sourceLineNo">33649</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.33649"></a>
<span class="sourceLineNo">33650</span> double ox;<a name="line.33650"></a>
<span class="sourceLineNo">33651</span> double oy;<a name="line.33651"></a>
<span class="sourceLineNo">33652</span> ox = (Math.toRadians(ix));<a name="line.33652"></a>
<span class="sourceLineNo">33653</span> oy = (Math.toRadians(iy));<a name="line.33653"></a>
<span class="sourceLineNo">33654</span> oc128data[it.oIndex] = ox;<a name="line.33654"></a>
<span class="sourceLineNo">33655</span> oc128data[it.oIndex + 1] = oy;<a name="line.33655"></a>
<span class="sourceLineNo">33656</span> }<a name="line.33656"></a>
<span class="sourceLineNo">33657</span> }<a name="line.33657"></a>
<span class="sourceLineNo">33658</span> break;<a name="line.33658"></a>
<span class="sourceLineNo">33659</span> default:<a name="line.33659"></a>
<span class="sourceLineNo">33660</span> throw new IllegalArgumentException("toRadians supports integer, compound integer, real, compound real, complex datasets only");<a name="line.33660"></a>
<span class="sourceLineNo">33661</span> }<a name="line.33661"></a>
<span class="sourceLineNo">33662</span><a name="line.33662"></a>
<span class="sourceLineNo">33663</span> addFunctionName(result, "toRadians");<a name="line.33663"></a>
<span class="sourceLineNo">33664</span> return result;<a name="line.33664"></a>
<span class="sourceLineNo">33665</span> }<a name="line.33665"></a>
<span class="sourceLineNo">33666</span><a name="line.33666"></a>
<span class="sourceLineNo">33667</span> /**<a name="line.33667"></a>
<span class="sourceLineNo">33668</span> * signum - sign of each element<a name="line.33668"></a>
<span class="sourceLineNo">33669</span> * @param a<a name="line.33669"></a>
<span class="sourceLineNo">33670</span> * @return dataset<a name="line.33670"></a>
<span class="sourceLineNo">33671</span> */<a name="line.33671"></a>
<span class="sourceLineNo">33672</span> public static Dataset signum(final Object a) {<a name="line.33672"></a>
<span class="sourceLineNo">33673</span> return signum(a, null);<a name="line.33673"></a>
<span class="sourceLineNo">33674</span> }<a name="line.33674"></a>
<span class="sourceLineNo">33675</span><a name="line.33675"></a>
<span class="sourceLineNo">33676</span> /**<a name="line.33676"></a>
<span class="sourceLineNo">33677</span> * signum - sign of each element<a name="line.33677"></a>
<span class="sourceLineNo">33678</span> * @param a<a name="line.33678"></a>
<span class="sourceLineNo">33679</span> * @param o output can be null - in which case, a new dataset is created<a name="line.33679"></a>
<span class="sourceLineNo">33680</span> * @return dataset<a name="line.33680"></a>
<span class="sourceLineNo">33681</span> */<a name="line.33681"></a>
<span class="sourceLineNo">33682</span> public static Dataset signum(final Object a, final Dataset o) {<a name="line.33682"></a>
<span class="sourceLineNo">33683</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.33683"></a>
<span class="sourceLineNo">33684</span> SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true);<a name="line.33684"></a>
<span class="sourceLineNo">33685</span> final Dataset result = it.getOutput();<a name="line.33685"></a>
<span class="sourceLineNo">33686</span> if (!result.isComplex()) {<a name="line.33686"></a>
<span class="sourceLineNo">33687</span> if (da.isComplex()) {<a name="line.33687"></a>
<span class="sourceLineNo">33688</span> da = da.getRealView();<a name="line.33688"></a>
<span class="sourceLineNo">33689</span> it = new SingleInputBroadcastIterator(da, result, true);<a name="line.33689"></a>
<span class="sourceLineNo">33690</span> }<a name="line.33690"></a>
<span class="sourceLineNo">33691</span> }<a name="line.33691"></a>
<span class="sourceLineNo">33692</span> final int is = result.getElementsPerItem();<a name="line.33692"></a>
<span class="sourceLineNo">33693</span> final int as = da.getElementsPerItem();<a name="line.33693"></a>
<span class="sourceLineNo">33694</span> final int dt = result.getDType();<a name="line.33694"></a>
<span class="sourceLineNo">33695</span><a name="line.33695"></a>
<span class="sourceLineNo">33696</span> switch(dt) {<a name="line.33696"></a>
<span class="sourceLineNo">33697</span> case Dataset.INT8:<a name="line.33697"></a>
<span class="sourceLineNo">33698</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.33698"></a>
<span class="sourceLineNo">33699</span> if (it.isOutputDouble()) {<a name="line.33699"></a>
<span class="sourceLineNo">33700</span> while (it.hasNext()) {<a name="line.33700"></a>
<span class="sourceLineNo">33701</span> final double ix = it.aDouble;<a name="line.33701"></a>
<span class="sourceLineNo">33702</span> byte ox;<a name="line.33702"></a>
<span class="sourceLineNo">33703</span> ox = (byte) toLong(ix &gt; 0 ? 1 : (ix &lt; 0 ? -1 : 0));<a name="line.33703"></a>
<span class="sourceLineNo">33704</span> oi8data[it.oIndex] = ox;<a name="line.33704"></a>
<span class="sourceLineNo">33705</span> }<a name="line.33705"></a>
<span class="sourceLineNo">33706</span> } else {<a name="line.33706"></a>
<span class="sourceLineNo">33707</span> while (it.hasNext()) {<a name="line.33707"></a>
<span class="sourceLineNo">33708</span> final long ix = it.aLong;<a name="line.33708"></a>
<span class="sourceLineNo">33709</span> byte ox;<a name="line.33709"></a>
<span class="sourceLineNo">33710</span> ox = (byte) toLong(ix &gt; 0 ? 1 : (ix &lt; 0 ? -1 : 0));<a name="line.33710"></a>
<span class="sourceLineNo">33711</span> oi8data[it.oIndex] = ox;<a name="line.33711"></a>
<span class="sourceLineNo">33712</span> }<a name="line.33712"></a>
<span class="sourceLineNo">33713</span> }<a name="line.33713"></a>
<span class="sourceLineNo">33714</span> break;<a name="line.33714"></a>
<span class="sourceLineNo">33715</span> case Dataset.INT16:<a name="line.33715"></a>
<span class="sourceLineNo">33716</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.33716"></a>
<span class="sourceLineNo">33717</span> if (it.isOutputDouble()) {<a name="line.33717"></a>
<span class="sourceLineNo">33718</span> while (it.hasNext()) {<a name="line.33718"></a>
<span class="sourceLineNo">33719</span> final double ix = it.aDouble;<a name="line.33719"></a>
<span class="sourceLineNo">33720</span> short ox;<a name="line.33720"></a>
<span class="sourceLineNo">33721</span> ox = (short) toLong(ix &gt; 0 ? 1 : (ix &lt; 0 ? -1 : 0));<a name="line.33721"></a>
<span class="sourceLineNo">33722</span> oi16data[it.oIndex] = ox;<a name="line.33722"></a>
<span class="sourceLineNo">33723</span> }<a name="line.33723"></a>
<span class="sourceLineNo">33724</span> } else {<a name="line.33724"></a>
<span class="sourceLineNo">33725</span> while (it.hasNext()) {<a name="line.33725"></a>
<span class="sourceLineNo">33726</span> final long ix = it.aLong;<a name="line.33726"></a>
<span class="sourceLineNo">33727</span> short ox;<a name="line.33727"></a>
<span class="sourceLineNo">33728</span> ox = (short) toLong(ix &gt; 0 ? 1 : (ix &lt; 0 ? -1 : 0));<a name="line.33728"></a>
<span class="sourceLineNo">33729</span> oi16data[it.oIndex] = ox;<a name="line.33729"></a>
<span class="sourceLineNo">33730</span> }<a name="line.33730"></a>
<span class="sourceLineNo">33731</span> }<a name="line.33731"></a>
<span class="sourceLineNo">33732</span> break;<a name="line.33732"></a>
<span class="sourceLineNo">33733</span> case Dataset.INT64:<a name="line.33733"></a>
<span class="sourceLineNo">33734</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.33734"></a>
<span class="sourceLineNo">33735</span> if (it.isOutputDouble()) {<a name="line.33735"></a>
<span class="sourceLineNo">33736</span> while (it.hasNext()) {<a name="line.33736"></a>
<span class="sourceLineNo">33737</span> final double ix = it.aDouble;<a name="line.33737"></a>
<span class="sourceLineNo">33738</span> long ox;<a name="line.33738"></a>
<span class="sourceLineNo">33739</span> ox = toLong(ix &gt; 0 ? 1 : (ix &lt; 0 ? -1 : 0));<a name="line.33739"></a>
<span class="sourceLineNo">33740</span> oi64data[it.oIndex] = ox;<a name="line.33740"></a>
<span class="sourceLineNo">33741</span> }<a name="line.33741"></a>
<span class="sourceLineNo">33742</span> } else {<a name="line.33742"></a>
<span class="sourceLineNo">33743</span> while (it.hasNext()) {<a name="line.33743"></a>
<span class="sourceLineNo">33744</span> final long ix = it.aLong;<a name="line.33744"></a>
<span class="sourceLineNo">33745</span> long ox;<a name="line.33745"></a>
<span class="sourceLineNo">33746</span> ox = toLong(ix &gt; 0 ? 1 : (ix &lt; 0 ? -1 : 0));<a name="line.33746"></a>
<span class="sourceLineNo">33747</span> oi64data[it.oIndex] = ox;<a name="line.33747"></a>
<span class="sourceLineNo">33748</span> }<a name="line.33748"></a>
<span class="sourceLineNo">33749</span> }<a name="line.33749"></a>
<span class="sourceLineNo">33750</span> break;<a name="line.33750"></a>
<span class="sourceLineNo">33751</span> case Dataset.INT32:<a name="line.33751"></a>
<span class="sourceLineNo">33752</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.33752"></a>
<span class="sourceLineNo">33753</span> if (it.isOutputDouble()) {<a name="line.33753"></a>
<span class="sourceLineNo">33754</span> while (it.hasNext()) {<a name="line.33754"></a>
<span class="sourceLineNo">33755</span> final double ix = it.aDouble;<a name="line.33755"></a>
<span class="sourceLineNo">33756</span> int ox;<a name="line.33756"></a>
<span class="sourceLineNo">33757</span> ox = (int) toLong(ix &gt; 0 ? 1 : (ix &lt; 0 ? -1 : 0));<a name="line.33757"></a>
<span class="sourceLineNo">33758</span> oi32data[it.oIndex] = ox;<a name="line.33758"></a>
<span class="sourceLineNo">33759</span> }<a name="line.33759"></a>
<span class="sourceLineNo">33760</span> } else {<a name="line.33760"></a>
<span class="sourceLineNo">33761</span> while (it.hasNext()) {<a name="line.33761"></a>
<span class="sourceLineNo">33762</span> final long ix = it.aLong;<a name="line.33762"></a>
<span class="sourceLineNo">33763</span> int ox;<a name="line.33763"></a>
<span class="sourceLineNo">33764</span> ox = (int) toLong(ix &gt; 0 ? 1 : (ix &lt; 0 ? -1 : 0));<a name="line.33764"></a>
<span class="sourceLineNo">33765</span> oi32data[it.oIndex] = ox;<a name="line.33765"></a>
<span class="sourceLineNo">33766</span> }<a name="line.33766"></a>
<span class="sourceLineNo">33767</span> }<a name="line.33767"></a>
<span class="sourceLineNo">33768</span> break;<a name="line.33768"></a>
<span class="sourceLineNo">33769</span> case Dataset.ARRAYINT8:<a name="line.33769"></a>
<span class="sourceLineNo">33770</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.33770"></a>
<span class="sourceLineNo">33771</span> if (is == 1) {<a name="line.33771"></a>
<span class="sourceLineNo">33772</span> if (it.isOutputDouble()) {<a name="line.33772"></a>
<span class="sourceLineNo">33773</span> while (it.hasNext()) {<a name="line.33773"></a>
<span class="sourceLineNo">33774</span> final double ix = it.aDouble;<a name="line.33774"></a>
<span class="sourceLineNo">33775</span> byte ox;<a name="line.33775"></a>
<span class="sourceLineNo">33776</span> ox = (byte) toLong(ix &gt; 0 ? 1 : (ix &lt; 0 ? -1 : 0));<a name="line.33776"></a>
<span class="sourceLineNo">33777</span> oai8data[it.oIndex] = ox;<a name="line.33777"></a>
<span class="sourceLineNo">33778</span> }<a name="line.33778"></a>
<span class="sourceLineNo">33779</span> } else {<a name="line.33779"></a>
<span class="sourceLineNo">33780</span> while (it.hasNext()) {<a name="line.33780"></a>
<span class="sourceLineNo">33781</span> final long ix = it.aLong;<a name="line.33781"></a>
<span class="sourceLineNo">33782</span> byte ox;<a name="line.33782"></a>
<span class="sourceLineNo">33783</span> ox = (byte) toLong(ix &gt; 0 ? 1 : (ix &lt; 0 ? -1 : 0));<a name="line.33783"></a>
<span class="sourceLineNo">33784</span> oai8data[it.oIndex] = ox;<a name="line.33784"></a>
<span class="sourceLineNo">33785</span> }<a name="line.33785"></a>
<span class="sourceLineNo">33786</span> }<a name="line.33786"></a>
<span class="sourceLineNo">33787</span> } else if (as == 1) {<a name="line.33787"></a>
<span class="sourceLineNo">33788</span> if (it.isOutputDouble()) {<a name="line.33788"></a>
<span class="sourceLineNo">33789</span> while (it.hasNext()) {<a name="line.33789"></a>
<span class="sourceLineNo">33790</span> final double ix = it.aDouble;<a name="line.33790"></a>
<span class="sourceLineNo">33791</span> byte ox;<a name="line.33791"></a>
<span class="sourceLineNo">33792</span> ox = (byte) toLong(ix &gt; 0 ? 1 : (ix &lt; 0 ? -1 : 0));<a name="line.33792"></a>
<span class="sourceLineNo">33793</span> for (int j = 0; j &lt; is; j++) {<a name="line.33793"></a>
<span class="sourceLineNo">33794</span> oai8data[it.oIndex + j] = ox;<a name="line.33794"></a>
<span class="sourceLineNo">33795</span> }<a name="line.33795"></a>
<span class="sourceLineNo">33796</span> }<a name="line.33796"></a>
<span class="sourceLineNo">33797</span> } else {<a name="line.33797"></a>
<span class="sourceLineNo">33798</span> while (it.hasNext()) {<a name="line.33798"></a>
<span class="sourceLineNo">33799</span> final long ix = it.aLong;<a name="line.33799"></a>
<span class="sourceLineNo">33800</span> byte ox;<a name="line.33800"></a>
<span class="sourceLineNo">33801</span> ox = (byte) toLong(ix &gt; 0 ? 1 : (ix &lt; 0 ? -1 : 0));<a name="line.33801"></a>
<span class="sourceLineNo">33802</span> for (int j = 0; j &lt; is; j++) {<a name="line.33802"></a>
<span class="sourceLineNo">33803</span> oai8data[it.oIndex + j] = ox;<a name="line.33803"></a>
<span class="sourceLineNo">33804</span> }<a name="line.33804"></a>
<span class="sourceLineNo">33805</span> }<a name="line.33805"></a>
<span class="sourceLineNo">33806</span> }<a name="line.33806"></a>
<span class="sourceLineNo">33807</span> } else {<a name="line.33807"></a>
<span class="sourceLineNo">33808</span> if (it.isOutputDouble()) {<a name="line.33808"></a>
<span class="sourceLineNo">33809</span> while (it.hasNext()) {<a name="line.33809"></a>
<span class="sourceLineNo">33810</span> for (int j = 0; j &lt; is; j++) {<a name="line.33810"></a>
<span class="sourceLineNo">33811</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.33811"></a>
<span class="sourceLineNo">33812</span> byte ox;<a name="line.33812"></a>
<span class="sourceLineNo">33813</span> ox = (byte) toLong(ix &gt; 0 ? 1 : (ix &lt; 0 ? -1 : 0));<a name="line.33813"></a>
<span class="sourceLineNo">33814</span> oai8data[it.oIndex + j] = ox;<a name="line.33814"></a>
<span class="sourceLineNo">33815</span> }<a name="line.33815"></a>
<span class="sourceLineNo">33816</span> }<a name="line.33816"></a>
<span class="sourceLineNo">33817</span> } else {<a name="line.33817"></a>
<span class="sourceLineNo">33818</span> while (it.hasNext()) {<a name="line.33818"></a>
<span class="sourceLineNo">33819</span> for (int j = 0; j &lt; is; j++) {<a name="line.33819"></a>
<span class="sourceLineNo">33820</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.33820"></a>
<span class="sourceLineNo">33821</span> byte ox;<a name="line.33821"></a>
<span class="sourceLineNo">33822</span> ox = (byte) toLong(ix &gt; 0 ? 1 : (ix &lt; 0 ? -1 : 0));<a name="line.33822"></a>
<span class="sourceLineNo">33823</span> oai8data[it.oIndex + j] = ox;<a name="line.33823"></a>
<span class="sourceLineNo">33824</span> }<a name="line.33824"></a>
<span class="sourceLineNo">33825</span> }<a name="line.33825"></a>
<span class="sourceLineNo">33826</span> }<a name="line.33826"></a>
<span class="sourceLineNo">33827</span> }<a name="line.33827"></a>
<span class="sourceLineNo">33828</span> break;<a name="line.33828"></a>
<span class="sourceLineNo">33829</span> case Dataset.ARRAYINT16:<a name="line.33829"></a>
<span class="sourceLineNo">33830</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.33830"></a>
<span class="sourceLineNo">33831</span> if (is == 1) {<a name="line.33831"></a>
<span class="sourceLineNo">33832</span> if (it.isOutputDouble()) {<a name="line.33832"></a>
<span class="sourceLineNo">33833</span> while (it.hasNext()) {<a name="line.33833"></a>
<span class="sourceLineNo">33834</span> final double ix = it.aDouble;<a name="line.33834"></a>
<span class="sourceLineNo">33835</span> short ox;<a name="line.33835"></a>
<span class="sourceLineNo">33836</span> ox = (short) toLong(ix &gt; 0 ? 1 : (ix &lt; 0 ? -1 : 0));<a name="line.33836"></a>
<span class="sourceLineNo">33837</span> oai16data[it.oIndex] = ox;<a name="line.33837"></a>
<span class="sourceLineNo">33838</span> }<a name="line.33838"></a>
<span class="sourceLineNo">33839</span> } else {<a name="line.33839"></a>
<span class="sourceLineNo">33840</span> while (it.hasNext()) {<a name="line.33840"></a>
<span class="sourceLineNo">33841</span> final long ix = it.aLong;<a name="line.33841"></a>
<span class="sourceLineNo">33842</span> short ox;<a name="line.33842"></a>
<span class="sourceLineNo">33843</span> ox = (short) toLong(ix &gt; 0 ? 1 : (ix &lt; 0 ? -1 : 0));<a name="line.33843"></a>
<span class="sourceLineNo">33844</span> oai16data[it.oIndex] = ox;<a name="line.33844"></a>
<span class="sourceLineNo">33845</span> }<a name="line.33845"></a>
<span class="sourceLineNo">33846</span> }<a name="line.33846"></a>
<span class="sourceLineNo">33847</span> } else if (as == 1) {<a name="line.33847"></a>
<span class="sourceLineNo">33848</span> if (it.isOutputDouble()) {<a name="line.33848"></a>
<span class="sourceLineNo">33849</span> while (it.hasNext()) {<a name="line.33849"></a>
<span class="sourceLineNo">33850</span> final double ix = it.aDouble;<a name="line.33850"></a>
<span class="sourceLineNo">33851</span> short ox;<a name="line.33851"></a>
<span class="sourceLineNo">33852</span> ox = (short) toLong(ix &gt; 0 ? 1 : (ix &lt; 0 ? -1 : 0));<a name="line.33852"></a>
<span class="sourceLineNo">33853</span> for (int j = 0; j &lt; is; j++) {<a name="line.33853"></a>
<span class="sourceLineNo">33854</span> oai16data[it.oIndex + j] = ox;<a name="line.33854"></a>
<span class="sourceLineNo">33855</span> }<a name="line.33855"></a>
<span class="sourceLineNo">33856</span> }<a name="line.33856"></a>
<span class="sourceLineNo">33857</span> } else {<a name="line.33857"></a>
<span class="sourceLineNo">33858</span> while (it.hasNext()) {<a name="line.33858"></a>
<span class="sourceLineNo">33859</span> final long ix = it.aLong;<a name="line.33859"></a>
<span class="sourceLineNo">33860</span> short ox;<a name="line.33860"></a>
<span class="sourceLineNo">33861</span> ox = (short) toLong(ix &gt; 0 ? 1 : (ix &lt; 0 ? -1 : 0));<a name="line.33861"></a>
<span class="sourceLineNo">33862</span> for (int j = 0; j &lt; is; j++) {<a name="line.33862"></a>
<span class="sourceLineNo">33863</span> oai16data[it.oIndex + j] = ox;<a name="line.33863"></a>
<span class="sourceLineNo">33864</span> }<a name="line.33864"></a>
<span class="sourceLineNo">33865</span> }<a name="line.33865"></a>
<span class="sourceLineNo">33866</span> }<a name="line.33866"></a>
<span class="sourceLineNo">33867</span> } else {<a name="line.33867"></a>
<span class="sourceLineNo">33868</span> if (it.isOutputDouble()) {<a name="line.33868"></a>
<span class="sourceLineNo">33869</span> while (it.hasNext()) {<a name="line.33869"></a>
<span class="sourceLineNo">33870</span> for (int j = 0; j &lt; is; j++) {<a name="line.33870"></a>
<span class="sourceLineNo">33871</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.33871"></a>
<span class="sourceLineNo">33872</span> short ox;<a name="line.33872"></a>
<span class="sourceLineNo">33873</span> ox = (short) toLong(ix &gt; 0 ? 1 : (ix &lt; 0 ? -1 : 0));<a name="line.33873"></a>
<span class="sourceLineNo">33874</span> oai16data[it.oIndex + j] = ox;<a name="line.33874"></a>
<span class="sourceLineNo">33875</span> }<a name="line.33875"></a>
<span class="sourceLineNo">33876</span> }<a name="line.33876"></a>
<span class="sourceLineNo">33877</span> } else {<a name="line.33877"></a>
<span class="sourceLineNo">33878</span> while (it.hasNext()) {<a name="line.33878"></a>
<span class="sourceLineNo">33879</span> for (int j = 0; j &lt; is; j++) {<a name="line.33879"></a>
<span class="sourceLineNo">33880</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.33880"></a>
<span class="sourceLineNo">33881</span> short ox;<a name="line.33881"></a>
<span class="sourceLineNo">33882</span> ox = (short) toLong(ix &gt; 0 ? 1 : (ix &lt; 0 ? -1 : 0));<a name="line.33882"></a>
<span class="sourceLineNo">33883</span> oai16data[it.oIndex + j] = ox;<a name="line.33883"></a>
<span class="sourceLineNo">33884</span> }<a name="line.33884"></a>
<span class="sourceLineNo">33885</span> }<a name="line.33885"></a>
<span class="sourceLineNo">33886</span> }<a name="line.33886"></a>
<span class="sourceLineNo">33887</span> }<a name="line.33887"></a>
<span class="sourceLineNo">33888</span> break;<a name="line.33888"></a>
<span class="sourceLineNo">33889</span> case Dataset.ARRAYINT64:<a name="line.33889"></a>
<span class="sourceLineNo">33890</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.33890"></a>
<span class="sourceLineNo">33891</span> if (is == 1) {<a name="line.33891"></a>
<span class="sourceLineNo">33892</span> if (it.isOutputDouble()) {<a name="line.33892"></a>
<span class="sourceLineNo">33893</span> while (it.hasNext()) {<a name="line.33893"></a>
<span class="sourceLineNo">33894</span> final double ix = it.aDouble;<a name="line.33894"></a>
<span class="sourceLineNo">33895</span> long ox;<a name="line.33895"></a>
<span class="sourceLineNo">33896</span> ox = toLong(ix &gt; 0 ? 1 : (ix &lt; 0 ? -1 : 0));<a name="line.33896"></a>
<span class="sourceLineNo">33897</span> oai64data[it.oIndex] = ox;<a name="line.33897"></a>
<span class="sourceLineNo">33898</span> }<a name="line.33898"></a>
<span class="sourceLineNo">33899</span> } else {<a name="line.33899"></a>
<span class="sourceLineNo">33900</span> while (it.hasNext()) {<a name="line.33900"></a>
<span class="sourceLineNo">33901</span> final long ix = it.aLong;<a name="line.33901"></a>
<span class="sourceLineNo">33902</span> long ox;<a name="line.33902"></a>
<span class="sourceLineNo">33903</span> ox = toLong(ix &gt; 0 ? 1 : (ix &lt; 0 ? -1 : 0));<a name="line.33903"></a>
<span class="sourceLineNo">33904</span> oai64data[it.oIndex] = ox;<a name="line.33904"></a>
<span class="sourceLineNo">33905</span> }<a name="line.33905"></a>
<span class="sourceLineNo">33906</span> }<a name="line.33906"></a>
<span class="sourceLineNo">33907</span> } else if (as == 1) {<a name="line.33907"></a>
<span class="sourceLineNo">33908</span> if (it.isOutputDouble()) {<a name="line.33908"></a>
<span class="sourceLineNo">33909</span> while (it.hasNext()) {<a name="line.33909"></a>
<span class="sourceLineNo">33910</span> final double ix = it.aDouble;<a name="line.33910"></a>
<span class="sourceLineNo">33911</span> long ox;<a name="line.33911"></a>
<span class="sourceLineNo">33912</span> ox = toLong(ix &gt; 0 ? 1 : (ix &lt; 0 ? -1 : 0));<a name="line.33912"></a>
<span class="sourceLineNo">33913</span> for (int j = 0; j &lt; is; j++) {<a name="line.33913"></a>
<span class="sourceLineNo">33914</span> oai64data[it.oIndex + j] = ox;<a name="line.33914"></a>
<span class="sourceLineNo">33915</span> }<a name="line.33915"></a>
<span class="sourceLineNo">33916</span> }<a name="line.33916"></a>
<span class="sourceLineNo">33917</span> } else {<a name="line.33917"></a>
<span class="sourceLineNo">33918</span> while (it.hasNext()) {<a name="line.33918"></a>
<span class="sourceLineNo">33919</span> final long ix = it.aLong;<a name="line.33919"></a>
<span class="sourceLineNo">33920</span> long ox;<a name="line.33920"></a>
<span class="sourceLineNo">33921</span> ox = toLong(ix &gt; 0 ? 1 : (ix &lt; 0 ? -1 : 0));<a name="line.33921"></a>
<span class="sourceLineNo">33922</span> for (int j = 0; j &lt; is; j++) {<a name="line.33922"></a>
<span class="sourceLineNo">33923</span> oai64data[it.oIndex + j] = ox;<a name="line.33923"></a>
<span class="sourceLineNo">33924</span> }<a name="line.33924"></a>
<span class="sourceLineNo">33925</span> }<a name="line.33925"></a>
<span class="sourceLineNo">33926</span> }<a name="line.33926"></a>
<span class="sourceLineNo">33927</span> } else {<a name="line.33927"></a>
<span class="sourceLineNo">33928</span> if (it.isOutputDouble()) {<a name="line.33928"></a>
<span class="sourceLineNo">33929</span> while (it.hasNext()) {<a name="line.33929"></a>
<span class="sourceLineNo">33930</span> for (int j = 0; j &lt; is; j++) {<a name="line.33930"></a>
<span class="sourceLineNo">33931</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.33931"></a>
<span class="sourceLineNo">33932</span> long ox;<a name="line.33932"></a>
<span class="sourceLineNo">33933</span> ox = toLong(ix &gt; 0 ? 1 : (ix &lt; 0 ? -1 : 0));<a name="line.33933"></a>
<span class="sourceLineNo">33934</span> oai64data[it.oIndex + j] = ox;<a name="line.33934"></a>
<span class="sourceLineNo">33935</span> }<a name="line.33935"></a>
<span class="sourceLineNo">33936</span> }<a name="line.33936"></a>
<span class="sourceLineNo">33937</span> } else {<a name="line.33937"></a>
<span class="sourceLineNo">33938</span> while (it.hasNext()) {<a name="line.33938"></a>
<span class="sourceLineNo">33939</span> for (int j = 0; j &lt; is; j++) {<a name="line.33939"></a>
<span class="sourceLineNo">33940</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.33940"></a>
<span class="sourceLineNo">33941</span> long ox;<a name="line.33941"></a>
<span class="sourceLineNo">33942</span> ox = toLong(ix &gt; 0 ? 1 : (ix &lt; 0 ? -1 : 0));<a name="line.33942"></a>
<span class="sourceLineNo">33943</span> oai64data[it.oIndex + j] = ox;<a name="line.33943"></a>
<span class="sourceLineNo">33944</span> }<a name="line.33944"></a>
<span class="sourceLineNo">33945</span> }<a name="line.33945"></a>
<span class="sourceLineNo">33946</span> }<a name="line.33946"></a>
<span class="sourceLineNo">33947</span> }<a name="line.33947"></a>
<span class="sourceLineNo">33948</span> break;<a name="line.33948"></a>
<span class="sourceLineNo">33949</span> case Dataset.ARRAYINT32:<a name="line.33949"></a>
<span class="sourceLineNo">33950</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.33950"></a>
<span class="sourceLineNo">33951</span> if (is == 1) {<a name="line.33951"></a>
<span class="sourceLineNo">33952</span> if (it.isOutputDouble()) {<a name="line.33952"></a>
<span class="sourceLineNo">33953</span> while (it.hasNext()) {<a name="line.33953"></a>
<span class="sourceLineNo">33954</span> final double ix = it.aDouble;<a name="line.33954"></a>
<span class="sourceLineNo">33955</span> int ox;<a name="line.33955"></a>
<span class="sourceLineNo">33956</span> ox = (int) toLong(ix &gt; 0 ? 1 : (ix &lt; 0 ? -1 : 0));<a name="line.33956"></a>
<span class="sourceLineNo">33957</span> oai32data[it.oIndex] = ox;<a name="line.33957"></a>
<span class="sourceLineNo">33958</span> }<a name="line.33958"></a>
<span class="sourceLineNo">33959</span> } else {<a name="line.33959"></a>
<span class="sourceLineNo">33960</span> while (it.hasNext()) {<a name="line.33960"></a>
<span class="sourceLineNo">33961</span> final long ix = it.aLong;<a name="line.33961"></a>
<span class="sourceLineNo">33962</span> int ox;<a name="line.33962"></a>
<span class="sourceLineNo">33963</span> ox = (int) toLong(ix &gt; 0 ? 1 : (ix &lt; 0 ? -1 : 0));<a name="line.33963"></a>
<span class="sourceLineNo">33964</span> oai32data[it.oIndex] = ox;<a name="line.33964"></a>
<span class="sourceLineNo">33965</span> }<a name="line.33965"></a>
<span class="sourceLineNo">33966</span> }<a name="line.33966"></a>
<span class="sourceLineNo">33967</span> } else if (as == 1) {<a name="line.33967"></a>
<span class="sourceLineNo">33968</span> if (it.isOutputDouble()) {<a name="line.33968"></a>
<span class="sourceLineNo">33969</span> while (it.hasNext()) {<a name="line.33969"></a>
<span class="sourceLineNo">33970</span> final double ix = it.aDouble;<a name="line.33970"></a>
<span class="sourceLineNo">33971</span> int ox;<a name="line.33971"></a>
<span class="sourceLineNo">33972</span> ox = (int) toLong(ix &gt; 0 ? 1 : (ix &lt; 0 ? -1 : 0));<a name="line.33972"></a>
<span class="sourceLineNo">33973</span> for (int j = 0; j &lt; is; j++) {<a name="line.33973"></a>
<span class="sourceLineNo">33974</span> oai32data[it.oIndex + j] = ox;<a name="line.33974"></a>
<span class="sourceLineNo">33975</span> }<a name="line.33975"></a>
<span class="sourceLineNo">33976</span> }<a name="line.33976"></a>
<span class="sourceLineNo">33977</span> } else {<a name="line.33977"></a>
<span class="sourceLineNo">33978</span> while (it.hasNext()) {<a name="line.33978"></a>
<span class="sourceLineNo">33979</span> final long ix = it.aLong;<a name="line.33979"></a>
<span class="sourceLineNo">33980</span> int ox;<a name="line.33980"></a>
<span class="sourceLineNo">33981</span> ox = (int) toLong(ix &gt; 0 ? 1 : (ix &lt; 0 ? -1 : 0));<a name="line.33981"></a>
<span class="sourceLineNo">33982</span> for (int j = 0; j &lt; is; j++) {<a name="line.33982"></a>
<span class="sourceLineNo">33983</span> oai32data[it.oIndex + j] = ox;<a name="line.33983"></a>
<span class="sourceLineNo">33984</span> }<a name="line.33984"></a>
<span class="sourceLineNo">33985</span> }<a name="line.33985"></a>
<span class="sourceLineNo">33986</span> }<a name="line.33986"></a>
<span class="sourceLineNo">33987</span> } else {<a name="line.33987"></a>
<span class="sourceLineNo">33988</span> if (it.isOutputDouble()) {<a name="line.33988"></a>
<span class="sourceLineNo">33989</span> while (it.hasNext()) {<a name="line.33989"></a>
<span class="sourceLineNo">33990</span> for (int j = 0; j &lt; is; j++) {<a name="line.33990"></a>
<span class="sourceLineNo">33991</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.33991"></a>
<span class="sourceLineNo">33992</span> int ox;<a name="line.33992"></a>
<span class="sourceLineNo">33993</span> ox = (int) toLong(ix &gt; 0 ? 1 : (ix &lt; 0 ? -1 : 0));<a name="line.33993"></a>
<span class="sourceLineNo">33994</span> oai32data[it.oIndex + j] = ox;<a name="line.33994"></a>
<span class="sourceLineNo">33995</span> }<a name="line.33995"></a>
<span class="sourceLineNo">33996</span> }<a name="line.33996"></a>
<span class="sourceLineNo">33997</span> } else {<a name="line.33997"></a>
<span class="sourceLineNo">33998</span> while (it.hasNext()) {<a name="line.33998"></a>
<span class="sourceLineNo">33999</span> for (int j = 0; j &lt; is; j++) {<a name="line.33999"></a>
<span class="sourceLineNo">34000</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.34000"></a>
<span class="sourceLineNo">34001</span> int ox;<a name="line.34001"></a>
<span class="sourceLineNo">34002</span> ox = (int) toLong(ix &gt; 0 ? 1 : (ix &lt; 0 ? -1 : 0));<a name="line.34002"></a>
<span class="sourceLineNo">34003</span> oai32data[it.oIndex + j] = ox;<a name="line.34003"></a>
<span class="sourceLineNo">34004</span> }<a name="line.34004"></a>
<span class="sourceLineNo">34005</span> }<a name="line.34005"></a>
<span class="sourceLineNo">34006</span> }<a name="line.34006"></a>
<span class="sourceLineNo">34007</span> }<a name="line.34007"></a>
<span class="sourceLineNo">34008</span> break;<a name="line.34008"></a>
<span class="sourceLineNo">34009</span> case Dataset.FLOAT32:<a name="line.34009"></a>
<span class="sourceLineNo">34010</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.34010"></a>
<span class="sourceLineNo">34011</span> if (it.isOutputDouble()) {<a name="line.34011"></a>
<span class="sourceLineNo">34012</span> while (it.hasNext()) {<a name="line.34012"></a>
<span class="sourceLineNo">34013</span> final double ix = it.aDouble;<a name="line.34013"></a>
<span class="sourceLineNo">34014</span> float ox;<a name="line.34014"></a>
<span class="sourceLineNo">34015</span> ox = (float) (Math.signum(ix));<a name="line.34015"></a>
<span class="sourceLineNo">34016</span> of32data[it.oIndex] = ox;<a name="line.34016"></a>
<span class="sourceLineNo">34017</span> }<a name="line.34017"></a>
<span class="sourceLineNo">34018</span> } else {<a name="line.34018"></a>
<span class="sourceLineNo">34019</span> while (it.hasNext()) {<a name="line.34019"></a>
<span class="sourceLineNo">34020</span> final long ix = it.aLong;<a name="line.34020"></a>
<span class="sourceLineNo">34021</span> float ox;<a name="line.34021"></a>
<span class="sourceLineNo">34022</span> ox = (float) (Math.signum(ix));<a name="line.34022"></a>
<span class="sourceLineNo">34023</span> of32data[it.oIndex] = ox;<a name="line.34023"></a>
<span class="sourceLineNo">34024</span> }<a name="line.34024"></a>
<span class="sourceLineNo">34025</span> }<a name="line.34025"></a>
<span class="sourceLineNo">34026</span> break;<a name="line.34026"></a>
<span class="sourceLineNo">34027</span> case Dataset.FLOAT64:<a name="line.34027"></a>
<span class="sourceLineNo">34028</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.34028"></a>
<span class="sourceLineNo">34029</span> if (it.isOutputDouble()) {<a name="line.34029"></a>
<span class="sourceLineNo">34030</span> while (it.hasNext()) {<a name="line.34030"></a>
<span class="sourceLineNo">34031</span> final double ix = it.aDouble;<a name="line.34031"></a>
<span class="sourceLineNo">34032</span> double ox;<a name="line.34032"></a>
<span class="sourceLineNo">34033</span> ox = (Math.signum(ix));<a name="line.34033"></a>
<span class="sourceLineNo">34034</span> of64data[it.oIndex] = ox;<a name="line.34034"></a>
<span class="sourceLineNo">34035</span> }<a name="line.34035"></a>
<span class="sourceLineNo">34036</span> } else {<a name="line.34036"></a>
<span class="sourceLineNo">34037</span> while (it.hasNext()) {<a name="line.34037"></a>
<span class="sourceLineNo">34038</span> final long ix = it.aLong;<a name="line.34038"></a>
<span class="sourceLineNo">34039</span> double ox;<a name="line.34039"></a>
<span class="sourceLineNo">34040</span> ox = (Math.signum(ix));<a name="line.34040"></a>
<span class="sourceLineNo">34041</span> of64data[it.oIndex] = ox;<a name="line.34041"></a>
<span class="sourceLineNo">34042</span> }<a name="line.34042"></a>
<span class="sourceLineNo">34043</span> }<a name="line.34043"></a>
<span class="sourceLineNo">34044</span> break;<a name="line.34044"></a>
<span class="sourceLineNo">34045</span> case Dataset.ARRAYFLOAT32:<a name="line.34045"></a>
<span class="sourceLineNo">34046</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.34046"></a>
<span class="sourceLineNo">34047</span> if (is == 1) {<a name="line.34047"></a>
<span class="sourceLineNo">34048</span> if (it.isOutputDouble()) {<a name="line.34048"></a>
<span class="sourceLineNo">34049</span> while (it.hasNext()) {<a name="line.34049"></a>
<span class="sourceLineNo">34050</span> final double ix = it.aDouble;<a name="line.34050"></a>
<span class="sourceLineNo">34051</span> float ox;<a name="line.34051"></a>
<span class="sourceLineNo">34052</span> ox = (float) (Math.signum(ix));<a name="line.34052"></a>
<span class="sourceLineNo">34053</span> oaf32data[it.oIndex] = ox;<a name="line.34053"></a>
<span class="sourceLineNo">34054</span> }<a name="line.34054"></a>
<span class="sourceLineNo">34055</span> } else {<a name="line.34055"></a>
<span class="sourceLineNo">34056</span> while (it.hasNext()) {<a name="line.34056"></a>
<span class="sourceLineNo">34057</span> final long ix = it.aLong;<a name="line.34057"></a>
<span class="sourceLineNo">34058</span> float ox;<a name="line.34058"></a>
<span class="sourceLineNo">34059</span> ox = (float) (Math.signum(ix));<a name="line.34059"></a>
<span class="sourceLineNo">34060</span> oaf32data[it.oIndex] = ox;<a name="line.34060"></a>
<span class="sourceLineNo">34061</span> }<a name="line.34061"></a>
<span class="sourceLineNo">34062</span> }<a name="line.34062"></a>
<span class="sourceLineNo">34063</span> } else if (as == 1) {<a name="line.34063"></a>
<span class="sourceLineNo">34064</span> if (it.isOutputDouble()) {<a name="line.34064"></a>
<span class="sourceLineNo">34065</span> while (it.hasNext()) {<a name="line.34065"></a>
<span class="sourceLineNo">34066</span> final double ix = it.aDouble;<a name="line.34066"></a>
<span class="sourceLineNo">34067</span> float ox;<a name="line.34067"></a>
<span class="sourceLineNo">34068</span> ox = (float) (Math.signum(ix));<a name="line.34068"></a>
<span class="sourceLineNo">34069</span> for (int j = 0; j &lt; is; j++) {<a name="line.34069"></a>
<span class="sourceLineNo">34070</span> oaf32data[it.oIndex + j] = ox;<a name="line.34070"></a>
<span class="sourceLineNo">34071</span> }<a name="line.34071"></a>
<span class="sourceLineNo">34072</span> }<a name="line.34072"></a>
<span class="sourceLineNo">34073</span> } else {<a name="line.34073"></a>
<span class="sourceLineNo">34074</span> while (it.hasNext()) {<a name="line.34074"></a>
<span class="sourceLineNo">34075</span> final long ix = it.aLong;<a name="line.34075"></a>
<span class="sourceLineNo">34076</span> float ox;<a name="line.34076"></a>
<span class="sourceLineNo">34077</span> ox = (float) (Math.signum(ix));<a name="line.34077"></a>
<span class="sourceLineNo">34078</span> for (int j = 0; j &lt; is; j++) {<a name="line.34078"></a>
<span class="sourceLineNo">34079</span> oaf32data[it.oIndex + j] = ox;<a name="line.34079"></a>
<span class="sourceLineNo">34080</span> }<a name="line.34080"></a>
<span class="sourceLineNo">34081</span> }<a name="line.34081"></a>
<span class="sourceLineNo">34082</span> }<a name="line.34082"></a>
<span class="sourceLineNo">34083</span> } else {<a name="line.34083"></a>
<span class="sourceLineNo">34084</span> if (it.isOutputDouble()) {<a name="line.34084"></a>
<span class="sourceLineNo">34085</span> while (it.hasNext()) {<a name="line.34085"></a>
<span class="sourceLineNo">34086</span> for (int j = 0; j &lt; is; j++) {<a name="line.34086"></a>
<span class="sourceLineNo">34087</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.34087"></a>
<span class="sourceLineNo">34088</span> float ox;<a name="line.34088"></a>
<span class="sourceLineNo">34089</span> ox = (float) (Math.signum(ix));<a name="line.34089"></a>
<span class="sourceLineNo">34090</span> oaf32data[it.oIndex + j] = ox;<a name="line.34090"></a>
<span class="sourceLineNo">34091</span> }<a name="line.34091"></a>
<span class="sourceLineNo">34092</span> }<a name="line.34092"></a>
<span class="sourceLineNo">34093</span> } else {<a name="line.34093"></a>
<span class="sourceLineNo">34094</span> while (it.hasNext()) {<a name="line.34094"></a>
<span class="sourceLineNo">34095</span> for (int j = 0; j &lt; is; j++) {<a name="line.34095"></a>
<span class="sourceLineNo">34096</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.34096"></a>
<span class="sourceLineNo">34097</span> float ox;<a name="line.34097"></a>
<span class="sourceLineNo">34098</span> ox = (float) (Math.signum(ix));<a name="line.34098"></a>
<span class="sourceLineNo">34099</span> oaf32data[it.oIndex + j] = ox;<a name="line.34099"></a>
<span class="sourceLineNo">34100</span> }<a name="line.34100"></a>
<span class="sourceLineNo">34101</span> }<a name="line.34101"></a>
<span class="sourceLineNo">34102</span> }<a name="line.34102"></a>
<span class="sourceLineNo">34103</span> }<a name="line.34103"></a>
<span class="sourceLineNo">34104</span> break;<a name="line.34104"></a>
<span class="sourceLineNo">34105</span> case Dataset.ARRAYFLOAT64:<a name="line.34105"></a>
<span class="sourceLineNo">34106</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.34106"></a>
<span class="sourceLineNo">34107</span> if (is == 1) {<a name="line.34107"></a>
<span class="sourceLineNo">34108</span> if (it.isOutputDouble()) {<a name="line.34108"></a>
<span class="sourceLineNo">34109</span> while (it.hasNext()) {<a name="line.34109"></a>
<span class="sourceLineNo">34110</span> final double ix = it.aDouble;<a name="line.34110"></a>
<span class="sourceLineNo">34111</span> double ox;<a name="line.34111"></a>
<span class="sourceLineNo">34112</span> ox = (Math.signum(ix));<a name="line.34112"></a>
<span class="sourceLineNo">34113</span> oaf64data[it.oIndex] = ox;<a name="line.34113"></a>
<span class="sourceLineNo">34114</span> }<a name="line.34114"></a>
<span class="sourceLineNo">34115</span> } else {<a name="line.34115"></a>
<span class="sourceLineNo">34116</span> while (it.hasNext()) {<a name="line.34116"></a>
<span class="sourceLineNo">34117</span> final long ix = it.aLong;<a name="line.34117"></a>
<span class="sourceLineNo">34118</span> double ox;<a name="line.34118"></a>
<span class="sourceLineNo">34119</span> ox = (Math.signum(ix));<a name="line.34119"></a>
<span class="sourceLineNo">34120</span> oaf64data[it.oIndex] = ox;<a name="line.34120"></a>
<span class="sourceLineNo">34121</span> }<a name="line.34121"></a>
<span class="sourceLineNo">34122</span> }<a name="line.34122"></a>
<span class="sourceLineNo">34123</span> } else if (as == 1) {<a name="line.34123"></a>
<span class="sourceLineNo">34124</span> if (it.isOutputDouble()) {<a name="line.34124"></a>
<span class="sourceLineNo">34125</span> while (it.hasNext()) {<a name="line.34125"></a>
<span class="sourceLineNo">34126</span> final double ix = it.aDouble;<a name="line.34126"></a>
<span class="sourceLineNo">34127</span> double ox;<a name="line.34127"></a>
<span class="sourceLineNo">34128</span> ox = (Math.signum(ix));<a name="line.34128"></a>
<span class="sourceLineNo">34129</span> for (int j = 0; j &lt; is; j++) {<a name="line.34129"></a>
<span class="sourceLineNo">34130</span> oaf64data[it.oIndex + j] = ox;<a name="line.34130"></a>
<span class="sourceLineNo">34131</span> }<a name="line.34131"></a>
<span class="sourceLineNo">34132</span> }<a name="line.34132"></a>
<span class="sourceLineNo">34133</span> } else {<a name="line.34133"></a>
<span class="sourceLineNo">34134</span> while (it.hasNext()) {<a name="line.34134"></a>
<span class="sourceLineNo">34135</span> final long ix = it.aLong;<a name="line.34135"></a>
<span class="sourceLineNo">34136</span> double ox;<a name="line.34136"></a>
<span class="sourceLineNo">34137</span> ox = (Math.signum(ix));<a name="line.34137"></a>
<span class="sourceLineNo">34138</span> for (int j = 0; j &lt; is; j++) {<a name="line.34138"></a>
<span class="sourceLineNo">34139</span> oaf64data[it.oIndex + j] = ox;<a name="line.34139"></a>
<span class="sourceLineNo">34140</span> }<a name="line.34140"></a>
<span class="sourceLineNo">34141</span> }<a name="line.34141"></a>
<span class="sourceLineNo">34142</span> }<a name="line.34142"></a>
<span class="sourceLineNo">34143</span> } else {<a name="line.34143"></a>
<span class="sourceLineNo">34144</span> if (it.isOutputDouble()) {<a name="line.34144"></a>
<span class="sourceLineNo">34145</span> while (it.hasNext()) {<a name="line.34145"></a>
<span class="sourceLineNo">34146</span> for (int j = 0; j &lt; is; j++) {<a name="line.34146"></a>
<span class="sourceLineNo">34147</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.34147"></a>
<span class="sourceLineNo">34148</span> double ox;<a name="line.34148"></a>
<span class="sourceLineNo">34149</span> ox = (Math.signum(ix));<a name="line.34149"></a>
<span class="sourceLineNo">34150</span> oaf64data[it.oIndex + j] = ox;<a name="line.34150"></a>
<span class="sourceLineNo">34151</span> }<a name="line.34151"></a>
<span class="sourceLineNo">34152</span> }<a name="line.34152"></a>
<span class="sourceLineNo">34153</span> } else {<a name="line.34153"></a>
<span class="sourceLineNo">34154</span> while (it.hasNext()) {<a name="line.34154"></a>
<span class="sourceLineNo">34155</span> for (int j = 0; j &lt; is; j++) {<a name="line.34155"></a>
<span class="sourceLineNo">34156</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.34156"></a>
<span class="sourceLineNo">34157</span> double ox;<a name="line.34157"></a>
<span class="sourceLineNo">34158</span> ox = (Math.signum(ix));<a name="line.34158"></a>
<span class="sourceLineNo">34159</span> oaf64data[it.oIndex + j] = ox;<a name="line.34159"></a>
<span class="sourceLineNo">34160</span> }<a name="line.34160"></a>
<span class="sourceLineNo">34161</span> }<a name="line.34161"></a>
<span class="sourceLineNo">34162</span> }<a name="line.34162"></a>
<span class="sourceLineNo">34163</span> }<a name="line.34163"></a>
<span class="sourceLineNo">34164</span> break;<a name="line.34164"></a>
<span class="sourceLineNo">34165</span> case Dataset.COMPLEX64:<a name="line.34165"></a>
<span class="sourceLineNo">34166</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.34166"></a>
<span class="sourceLineNo">34167</span> if (!da.isComplex()) {<a name="line.34167"></a>
<span class="sourceLineNo">34168</span> if (it.isOutputDouble()) {<a name="line.34168"></a>
<span class="sourceLineNo">34169</span> final double iy = 0;<a name="line.34169"></a>
<span class="sourceLineNo">34170</span> while (it.hasNext()) {<a name="line.34170"></a>
<span class="sourceLineNo">34171</span> final double ix = it.aDouble;<a name="line.34171"></a>
<span class="sourceLineNo">34172</span> float ox;<a name="line.34172"></a>
<span class="sourceLineNo">34173</span> float oy;<a name="line.34173"></a>
<span class="sourceLineNo">34174</span> ox = (float) (Math.signum(ix));<a name="line.34174"></a>
<span class="sourceLineNo">34175</span> oy = (float) (Math.signum(iy));<a name="line.34175"></a>
<span class="sourceLineNo">34176</span> oc64data[it.oIndex] = ox;<a name="line.34176"></a>
<span class="sourceLineNo">34177</span> oc64data[it.oIndex + 1] = oy;<a name="line.34177"></a>
<span class="sourceLineNo">34178</span> }<a name="line.34178"></a>
<span class="sourceLineNo">34179</span> } else {<a name="line.34179"></a>
<span class="sourceLineNo">34180</span> final long iy = 0;<a name="line.34180"></a>
<span class="sourceLineNo">34181</span> while (it.hasNext()) {<a name="line.34181"></a>
<span class="sourceLineNo">34182</span> final long ix = it.aLong;<a name="line.34182"></a>
<span class="sourceLineNo">34183</span> float ox;<a name="line.34183"></a>
<span class="sourceLineNo">34184</span> float oy;<a name="line.34184"></a>
<span class="sourceLineNo">34185</span> ox = (float) toLong(Math.signum(ix));<a name="line.34185"></a>
<span class="sourceLineNo">34186</span> oy = (float) toLong(Math.signum(iy));<a name="line.34186"></a>
<span class="sourceLineNo">34187</span> oc64data[it.oIndex] = ox;<a name="line.34187"></a>
<span class="sourceLineNo">34188</span> oc64data[it.oIndex + 1] = oy;<a name="line.34188"></a>
<span class="sourceLineNo">34189</span> }<a name="line.34189"></a>
<span class="sourceLineNo">34190</span> }<a name="line.34190"></a>
<span class="sourceLineNo">34191</span> } else {<a name="line.34191"></a>
<span class="sourceLineNo">34192</span> while (it.hasNext()) {<a name="line.34192"></a>
<span class="sourceLineNo">34193</span> final double ix = it.aDouble;<a name="line.34193"></a>
<span class="sourceLineNo">34194</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.34194"></a>
<span class="sourceLineNo">34195</span> float ox;<a name="line.34195"></a>
<span class="sourceLineNo">34196</span> float oy;<a name="line.34196"></a>
<span class="sourceLineNo">34197</span> ox = (float) (Math.signum(ix));<a name="line.34197"></a>
<span class="sourceLineNo">34198</span> oy = (float) (Math.signum(iy));<a name="line.34198"></a>
<span class="sourceLineNo">34199</span> oc64data[it.oIndex] = ox;<a name="line.34199"></a>
<span class="sourceLineNo">34200</span> oc64data[it.oIndex + 1] = oy;<a name="line.34200"></a>
<span class="sourceLineNo">34201</span> }<a name="line.34201"></a>
<span class="sourceLineNo">34202</span> }<a name="line.34202"></a>
<span class="sourceLineNo">34203</span> break;<a name="line.34203"></a>
<span class="sourceLineNo">34204</span> case Dataset.COMPLEX128:<a name="line.34204"></a>
<span class="sourceLineNo">34205</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.34205"></a>
<span class="sourceLineNo">34206</span> if (!da.isComplex()) {<a name="line.34206"></a>
<span class="sourceLineNo">34207</span> if (it.isOutputDouble()) {<a name="line.34207"></a>
<span class="sourceLineNo">34208</span> final double iy = 0;<a name="line.34208"></a>
<span class="sourceLineNo">34209</span> while (it.hasNext()) {<a name="line.34209"></a>
<span class="sourceLineNo">34210</span> final double ix = it.aDouble;<a name="line.34210"></a>
<span class="sourceLineNo">34211</span> double ox;<a name="line.34211"></a>
<span class="sourceLineNo">34212</span> double oy;<a name="line.34212"></a>
<span class="sourceLineNo">34213</span> ox = (Math.signum(ix));<a name="line.34213"></a>
<span class="sourceLineNo">34214</span> oy = (Math.signum(iy));<a name="line.34214"></a>
<span class="sourceLineNo">34215</span> oc128data[it.oIndex] = ox;<a name="line.34215"></a>
<span class="sourceLineNo">34216</span> oc128data[it.oIndex + 1] = oy;<a name="line.34216"></a>
<span class="sourceLineNo">34217</span> }<a name="line.34217"></a>
<span class="sourceLineNo">34218</span> } else {<a name="line.34218"></a>
<span class="sourceLineNo">34219</span> final long iy = 0;<a name="line.34219"></a>
<span class="sourceLineNo">34220</span> while (it.hasNext()) {<a name="line.34220"></a>
<span class="sourceLineNo">34221</span> final long ix = it.aLong;<a name="line.34221"></a>
<span class="sourceLineNo">34222</span> double ox;<a name="line.34222"></a>
<span class="sourceLineNo">34223</span> double oy;<a name="line.34223"></a>
<span class="sourceLineNo">34224</span> ox = (double) (Math.signum(ix));<a name="line.34224"></a>
<span class="sourceLineNo">34225</span> oy = (double) (Math.signum(iy));<a name="line.34225"></a>
<span class="sourceLineNo">34226</span> oc128data[it.oIndex] = ox;<a name="line.34226"></a>
<span class="sourceLineNo">34227</span> oc128data[it.oIndex + 1] = oy;<a name="line.34227"></a>
<span class="sourceLineNo">34228</span> }<a name="line.34228"></a>
<span class="sourceLineNo">34229</span> }<a name="line.34229"></a>
<span class="sourceLineNo">34230</span> } else {<a name="line.34230"></a>
<span class="sourceLineNo">34231</span> while (it.hasNext()) {<a name="line.34231"></a>
<span class="sourceLineNo">34232</span> final double ix = it.aDouble;<a name="line.34232"></a>
<span class="sourceLineNo">34233</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.34233"></a>
<span class="sourceLineNo">34234</span> double ox;<a name="line.34234"></a>
<span class="sourceLineNo">34235</span> double oy;<a name="line.34235"></a>
<span class="sourceLineNo">34236</span> ox = (Math.signum(ix));<a name="line.34236"></a>
<span class="sourceLineNo">34237</span> oy = (Math.signum(iy));<a name="line.34237"></a>
<span class="sourceLineNo">34238</span> oc128data[it.oIndex] = ox;<a name="line.34238"></a>
<span class="sourceLineNo">34239</span> oc128data[it.oIndex + 1] = oy;<a name="line.34239"></a>
<span class="sourceLineNo">34240</span> }<a name="line.34240"></a>
<span class="sourceLineNo">34241</span> }<a name="line.34241"></a>
<span class="sourceLineNo">34242</span> break;<a name="line.34242"></a>
<span class="sourceLineNo">34243</span> default:<a name="line.34243"></a>
<span class="sourceLineNo">34244</span> throw new IllegalArgumentException("signum supports integer, compound integer, real, compound real, complex datasets only");<a name="line.34244"></a>
<span class="sourceLineNo">34245</span> }<a name="line.34245"></a>
<span class="sourceLineNo">34246</span><a name="line.34246"></a>
<span class="sourceLineNo">34247</span> addFunctionName(result, "signum");<a name="line.34247"></a>
<span class="sourceLineNo">34248</span> return result;<a name="line.34248"></a>
<span class="sourceLineNo">34249</span> }<a name="line.34249"></a>
<span class="sourceLineNo">34250</span><a name="line.34250"></a>
<span class="sourceLineNo">34251</span> /**<a name="line.34251"></a>
<span class="sourceLineNo">34252</span> * negative - negative value of each element<a name="line.34252"></a>
<span class="sourceLineNo">34253</span> * @param a<a name="line.34253"></a>
<span class="sourceLineNo">34254</span> * @return dataset<a name="line.34254"></a>
<span class="sourceLineNo">34255</span> */<a name="line.34255"></a>
<span class="sourceLineNo">34256</span> public static Dataset negative(final Object a) {<a name="line.34256"></a>
<span class="sourceLineNo">34257</span> return negative(a, null);<a name="line.34257"></a>
<span class="sourceLineNo">34258</span> }<a name="line.34258"></a>
<span class="sourceLineNo">34259</span><a name="line.34259"></a>
<span class="sourceLineNo">34260</span> /**<a name="line.34260"></a>
<span class="sourceLineNo">34261</span> * negative - negative value of each element<a name="line.34261"></a>
<span class="sourceLineNo">34262</span> * @param a<a name="line.34262"></a>
<span class="sourceLineNo">34263</span> * @param o output can be null - in which case, a new dataset is created<a name="line.34263"></a>
<span class="sourceLineNo">34264</span> * @return dataset<a name="line.34264"></a>
<span class="sourceLineNo">34265</span> */<a name="line.34265"></a>
<span class="sourceLineNo">34266</span> public static Dataset negative(final Object a, final Dataset o) {<a name="line.34266"></a>
<span class="sourceLineNo">34267</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.34267"></a>
<span class="sourceLineNo">34268</span> SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true);<a name="line.34268"></a>
<span class="sourceLineNo">34269</span> final Dataset result = it.getOutput();<a name="line.34269"></a>
<span class="sourceLineNo">34270</span> if (!result.isComplex()) {<a name="line.34270"></a>
<span class="sourceLineNo">34271</span> if (da.isComplex()) {<a name="line.34271"></a>
<span class="sourceLineNo">34272</span> da = da.getRealView();<a name="line.34272"></a>
<span class="sourceLineNo">34273</span> it = new SingleInputBroadcastIterator(da, result, true);<a name="line.34273"></a>
<span class="sourceLineNo">34274</span> }<a name="line.34274"></a>
<span class="sourceLineNo">34275</span> }<a name="line.34275"></a>
<span class="sourceLineNo">34276</span> final int is = result.getElementsPerItem();<a name="line.34276"></a>
<span class="sourceLineNo">34277</span> final int as = da.getElementsPerItem();<a name="line.34277"></a>
<span class="sourceLineNo">34278</span> final int dt = result.getDType();<a name="line.34278"></a>
<span class="sourceLineNo">34279</span><a name="line.34279"></a>
<span class="sourceLineNo">34280</span> switch(dt) {<a name="line.34280"></a>
<span class="sourceLineNo">34281</span> case Dataset.INT8:<a name="line.34281"></a>
<span class="sourceLineNo">34282</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.34282"></a>
<span class="sourceLineNo">34283</span> if (it.isOutputDouble()) {<a name="line.34283"></a>
<span class="sourceLineNo">34284</span> while (it.hasNext()) {<a name="line.34284"></a>
<span class="sourceLineNo">34285</span> final double ix = it.aDouble;<a name="line.34285"></a>
<span class="sourceLineNo">34286</span> byte ox;<a name="line.34286"></a>
<span class="sourceLineNo">34287</span> ox = (byte) toLong(-ix);<a name="line.34287"></a>
<span class="sourceLineNo">34288</span> oi8data[it.oIndex] = ox;<a name="line.34288"></a>
<span class="sourceLineNo">34289</span> }<a name="line.34289"></a>
<span class="sourceLineNo">34290</span> } else {<a name="line.34290"></a>
<span class="sourceLineNo">34291</span> while (it.hasNext()) {<a name="line.34291"></a>
<span class="sourceLineNo">34292</span> final long ix = it.aLong;<a name="line.34292"></a>
<span class="sourceLineNo">34293</span> byte ox;<a name="line.34293"></a>
<span class="sourceLineNo">34294</span> ox = (byte) toLong(-ix);<a name="line.34294"></a>
<span class="sourceLineNo">34295</span> oi8data[it.oIndex] = ox;<a name="line.34295"></a>
<span class="sourceLineNo">34296</span> }<a name="line.34296"></a>
<span class="sourceLineNo">34297</span> }<a name="line.34297"></a>
<span class="sourceLineNo">34298</span> break;<a name="line.34298"></a>
<span class="sourceLineNo">34299</span> case Dataset.INT16:<a name="line.34299"></a>
<span class="sourceLineNo">34300</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.34300"></a>
<span class="sourceLineNo">34301</span> if (it.isOutputDouble()) {<a name="line.34301"></a>
<span class="sourceLineNo">34302</span> while (it.hasNext()) {<a name="line.34302"></a>
<span class="sourceLineNo">34303</span> final double ix = it.aDouble;<a name="line.34303"></a>
<span class="sourceLineNo">34304</span> short ox;<a name="line.34304"></a>
<span class="sourceLineNo">34305</span> ox = (short) toLong(-ix);<a name="line.34305"></a>
<span class="sourceLineNo">34306</span> oi16data[it.oIndex] = ox;<a name="line.34306"></a>
<span class="sourceLineNo">34307</span> }<a name="line.34307"></a>
<span class="sourceLineNo">34308</span> } else {<a name="line.34308"></a>
<span class="sourceLineNo">34309</span> while (it.hasNext()) {<a name="line.34309"></a>
<span class="sourceLineNo">34310</span> final long ix = it.aLong;<a name="line.34310"></a>
<span class="sourceLineNo">34311</span> short ox;<a name="line.34311"></a>
<span class="sourceLineNo">34312</span> ox = (short) toLong(-ix);<a name="line.34312"></a>
<span class="sourceLineNo">34313</span> oi16data[it.oIndex] = ox;<a name="line.34313"></a>
<span class="sourceLineNo">34314</span> }<a name="line.34314"></a>
<span class="sourceLineNo">34315</span> }<a name="line.34315"></a>
<span class="sourceLineNo">34316</span> break;<a name="line.34316"></a>
<span class="sourceLineNo">34317</span> case Dataset.INT64:<a name="line.34317"></a>
<span class="sourceLineNo">34318</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.34318"></a>
<span class="sourceLineNo">34319</span> if (it.isOutputDouble()) {<a name="line.34319"></a>
<span class="sourceLineNo">34320</span> while (it.hasNext()) {<a name="line.34320"></a>
<span class="sourceLineNo">34321</span> final double ix = it.aDouble;<a name="line.34321"></a>
<span class="sourceLineNo">34322</span> long ox;<a name="line.34322"></a>
<span class="sourceLineNo">34323</span> ox = toLong(-ix);<a name="line.34323"></a>
<span class="sourceLineNo">34324</span> oi64data[it.oIndex] = ox;<a name="line.34324"></a>
<span class="sourceLineNo">34325</span> }<a name="line.34325"></a>
<span class="sourceLineNo">34326</span> } else {<a name="line.34326"></a>
<span class="sourceLineNo">34327</span> while (it.hasNext()) {<a name="line.34327"></a>
<span class="sourceLineNo">34328</span> final long ix = it.aLong;<a name="line.34328"></a>
<span class="sourceLineNo">34329</span> long ox;<a name="line.34329"></a>
<span class="sourceLineNo">34330</span> ox = toLong(-ix);<a name="line.34330"></a>
<span class="sourceLineNo">34331</span> oi64data[it.oIndex] = ox;<a name="line.34331"></a>
<span class="sourceLineNo">34332</span> }<a name="line.34332"></a>
<span class="sourceLineNo">34333</span> }<a name="line.34333"></a>
<span class="sourceLineNo">34334</span> break;<a name="line.34334"></a>
<span class="sourceLineNo">34335</span> case Dataset.INT32:<a name="line.34335"></a>
<span class="sourceLineNo">34336</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.34336"></a>
<span class="sourceLineNo">34337</span> if (it.isOutputDouble()) {<a name="line.34337"></a>
<span class="sourceLineNo">34338</span> while (it.hasNext()) {<a name="line.34338"></a>
<span class="sourceLineNo">34339</span> final double ix = it.aDouble;<a name="line.34339"></a>
<span class="sourceLineNo">34340</span> int ox;<a name="line.34340"></a>
<span class="sourceLineNo">34341</span> ox = (int) toLong(-ix);<a name="line.34341"></a>
<span class="sourceLineNo">34342</span> oi32data[it.oIndex] = ox;<a name="line.34342"></a>
<span class="sourceLineNo">34343</span> }<a name="line.34343"></a>
<span class="sourceLineNo">34344</span> } else {<a name="line.34344"></a>
<span class="sourceLineNo">34345</span> while (it.hasNext()) {<a name="line.34345"></a>
<span class="sourceLineNo">34346</span> final long ix = it.aLong;<a name="line.34346"></a>
<span class="sourceLineNo">34347</span> int ox;<a name="line.34347"></a>
<span class="sourceLineNo">34348</span> ox = (int) toLong(-ix);<a name="line.34348"></a>
<span class="sourceLineNo">34349</span> oi32data[it.oIndex] = ox;<a name="line.34349"></a>
<span class="sourceLineNo">34350</span> }<a name="line.34350"></a>
<span class="sourceLineNo">34351</span> }<a name="line.34351"></a>
<span class="sourceLineNo">34352</span> break;<a name="line.34352"></a>
<span class="sourceLineNo">34353</span> case Dataset.ARRAYINT8:<a name="line.34353"></a>
<span class="sourceLineNo">34354</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.34354"></a>
<span class="sourceLineNo">34355</span> if (is == 1) {<a name="line.34355"></a>
<span class="sourceLineNo">34356</span> if (it.isOutputDouble()) {<a name="line.34356"></a>
<span class="sourceLineNo">34357</span> while (it.hasNext()) {<a name="line.34357"></a>
<span class="sourceLineNo">34358</span> final double ix = it.aDouble;<a name="line.34358"></a>
<span class="sourceLineNo">34359</span> byte ox;<a name="line.34359"></a>
<span class="sourceLineNo">34360</span> ox = (byte) toLong(-ix);<a name="line.34360"></a>
<span class="sourceLineNo">34361</span> oai8data[it.oIndex] = ox;<a name="line.34361"></a>
<span class="sourceLineNo">34362</span> }<a name="line.34362"></a>
<span class="sourceLineNo">34363</span> } else {<a name="line.34363"></a>
<span class="sourceLineNo">34364</span> while (it.hasNext()) {<a name="line.34364"></a>
<span class="sourceLineNo">34365</span> final long ix = it.aLong;<a name="line.34365"></a>
<span class="sourceLineNo">34366</span> byte ox;<a name="line.34366"></a>
<span class="sourceLineNo">34367</span> ox = (byte) toLong(-ix);<a name="line.34367"></a>
<span class="sourceLineNo">34368</span> oai8data[it.oIndex] = ox;<a name="line.34368"></a>
<span class="sourceLineNo">34369</span> }<a name="line.34369"></a>
<span class="sourceLineNo">34370</span> }<a name="line.34370"></a>
<span class="sourceLineNo">34371</span> } else if (as == 1) {<a name="line.34371"></a>
<span class="sourceLineNo">34372</span> if (it.isOutputDouble()) {<a name="line.34372"></a>
<span class="sourceLineNo">34373</span> while (it.hasNext()) {<a name="line.34373"></a>
<span class="sourceLineNo">34374</span> final double ix = it.aDouble;<a name="line.34374"></a>
<span class="sourceLineNo">34375</span> byte ox;<a name="line.34375"></a>
<span class="sourceLineNo">34376</span> ox = (byte) toLong(-ix);<a name="line.34376"></a>
<span class="sourceLineNo">34377</span> for (int j = 0; j &lt; is; j++) {<a name="line.34377"></a>
<span class="sourceLineNo">34378</span> oai8data[it.oIndex + j] = ox;<a name="line.34378"></a>
<span class="sourceLineNo">34379</span> }<a name="line.34379"></a>
<span class="sourceLineNo">34380</span> }<a name="line.34380"></a>
<span class="sourceLineNo">34381</span> } else {<a name="line.34381"></a>
<span class="sourceLineNo">34382</span> while (it.hasNext()) {<a name="line.34382"></a>
<span class="sourceLineNo">34383</span> final long ix = it.aLong;<a name="line.34383"></a>
<span class="sourceLineNo">34384</span> byte ox;<a name="line.34384"></a>
<span class="sourceLineNo">34385</span> ox = (byte) toLong(-ix);<a name="line.34385"></a>
<span class="sourceLineNo">34386</span> for (int j = 0; j &lt; is; j++) {<a name="line.34386"></a>
<span class="sourceLineNo">34387</span> oai8data[it.oIndex + j] = ox;<a name="line.34387"></a>
<span class="sourceLineNo">34388</span> }<a name="line.34388"></a>
<span class="sourceLineNo">34389</span> }<a name="line.34389"></a>
<span class="sourceLineNo">34390</span> }<a name="line.34390"></a>
<span class="sourceLineNo">34391</span> } else {<a name="line.34391"></a>
<span class="sourceLineNo">34392</span> if (it.isOutputDouble()) {<a name="line.34392"></a>
<span class="sourceLineNo">34393</span> while (it.hasNext()) {<a name="line.34393"></a>
<span class="sourceLineNo">34394</span> for (int j = 0; j &lt; is; j++) {<a name="line.34394"></a>
<span class="sourceLineNo">34395</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.34395"></a>
<span class="sourceLineNo">34396</span> byte ox;<a name="line.34396"></a>
<span class="sourceLineNo">34397</span> ox = (byte) toLong(-ix);<a name="line.34397"></a>
<span class="sourceLineNo">34398</span> oai8data[it.oIndex + j] = ox;<a name="line.34398"></a>
<span class="sourceLineNo">34399</span> }<a name="line.34399"></a>
<span class="sourceLineNo">34400</span> }<a name="line.34400"></a>
<span class="sourceLineNo">34401</span> } else {<a name="line.34401"></a>
<span class="sourceLineNo">34402</span> while (it.hasNext()) {<a name="line.34402"></a>
<span class="sourceLineNo">34403</span> for (int j = 0; j &lt; is; j++) {<a name="line.34403"></a>
<span class="sourceLineNo">34404</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.34404"></a>
<span class="sourceLineNo">34405</span> byte ox;<a name="line.34405"></a>
<span class="sourceLineNo">34406</span> ox = (byte) toLong(-ix);<a name="line.34406"></a>
<span class="sourceLineNo">34407</span> oai8data[it.oIndex + j] = ox;<a name="line.34407"></a>
<span class="sourceLineNo">34408</span> }<a name="line.34408"></a>
<span class="sourceLineNo">34409</span> }<a name="line.34409"></a>
<span class="sourceLineNo">34410</span> }<a name="line.34410"></a>
<span class="sourceLineNo">34411</span> }<a name="line.34411"></a>
<span class="sourceLineNo">34412</span> break;<a name="line.34412"></a>
<span class="sourceLineNo">34413</span> case Dataset.ARRAYINT16:<a name="line.34413"></a>
<span class="sourceLineNo">34414</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.34414"></a>
<span class="sourceLineNo">34415</span> if (is == 1) {<a name="line.34415"></a>
<span class="sourceLineNo">34416</span> if (it.isOutputDouble()) {<a name="line.34416"></a>
<span class="sourceLineNo">34417</span> while (it.hasNext()) {<a name="line.34417"></a>
<span class="sourceLineNo">34418</span> final double ix = it.aDouble;<a name="line.34418"></a>
<span class="sourceLineNo">34419</span> short ox;<a name="line.34419"></a>
<span class="sourceLineNo">34420</span> ox = (short) toLong(-ix);<a name="line.34420"></a>
<span class="sourceLineNo">34421</span> oai16data[it.oIndex] = ox;<a name="line.34421"></a>
<span class="sourceLineNo">34422</span> }<a name="line.34422"></a>
<span class="sourceLineNo">34423</span> } else {<a name="line.34423"></a>
<span class="sourceLineNo">34424</span> while (it.hasNext()) {<a name="line.34424"></a>
<span class="sourceLineNo">34425</span> final long ix = it.aLong;<a name="line.34425"></a>
<span class="sourceLineNo">34426</span> short ox;<a name="line.34426"></a>
<span class="sourceLineNo">34427</span> ox = (short) toLong(-ix);<a name="line.34427"></a>
<span class="sourceLineNo">34428</span> oai16data[it.oIndex] = ox;<a name="line.34428"></a>
<span class="sourceLineNo">34429</span> }<a name="line.34429"></a>
<span class="sourceLineNo">34430</span> }<a name="line.34430"></a>
<span class="sourceLineNo">34431</span> } else if (as == 1) {<a name="line.34431"></a>
<span class="sourceLineNo">34432</span> if (it.isOutputDouble()) {<a name="line.34432"></a>
<span class="sourceLineNo">34433</span> while (it.hasNext()) {<a name="line.34433"></a>
<span class="sourceLineNo">34434</span> final double ix = it.aDouble;<a name="line.34434"></a>
<span class="sourceLineNo">34435</span> short ox;<a name="line.34435"></a>
<span class="sourceLineNo">34436</span> ox = (short) toLong(-ix);<a name="line.34436"></a>
<span class="sourceLineNo">34437</span> for (int j = 0; j &lt; is; j++) {<a name="line.34437"></a>
<span class="sourceLineNo">34438</span> oai16data[it.oIndex + j] = ox;<a name="line.34438"></a>
<span class="sourceLineNo">34439</span> }<a name="line.34439"></a>
<span class="sourceLineNo">34440</span> }<a name="line.34440"></a>
<span class="sourceLineNo">34441</span> } else {<a name="line.34441"></a>
<span class="sourceLineNo">34442</span> while (it.hasNext()) {<a name="line.34442"></a>
<span class="sourceLineNo">34443</span> final long ix = it.aLong;<a name="line.34443"></a>
<span class="sourceLineNo">34444</span> short ox;<a name="line.34444"></a>
<span class="sourceLineNo">34445</span> ox = (short) toLong(-ix);<a name="line.34445"></a>
<span class="sourceLineNo">34446</span> for (int j = 0; j &lt; is; j++) {<a name="line.34446"></a>
<span class="sourceLineNo">34447</span> oai16data[it.oIndex + j] = ox;<a name="line.34447"></a>
<span class="sourceLineNo">34448</span> }<a name="line.34448"></a>
<span class="sourceLineNo">34449</span> }<a name="line.34449"></a>
<span class="sourceLineNo">34450</span> }<a name="line.34450"></a>
<span class="sourceLineNo">34451</span> } else {<a name="line.34451"></a>
<span class="sourceLineNo">34452</span> if (it.isOutputDouble()) {<a name="line.34452"></a>
<span class="sourceLineNo">34453</span> while (it.hasNext()) {<a name="line.34453"></a>
<span class="sourceLineNo">34454</span> for (int j = 0; j &lt; is; j++) {<a name="line.34454"></a>
<span class="sourceLineNo">34455</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.34455"></a>
<span class="sourceLineNo">34456</span> short ox;<a name="line.34456"></a>
<span class="sourceLineNo">34457</span> ox = (short) toLong(-ix);<a name="line.34457"></a>
<span class="sourceLineNo">34458</span> oai16data[it.oIndex + j] = ox;<a name="line.34458"></a>
<span class="sourceLineNo">34459</span> }<a name="line.34459"></a>
<span class="sourceLineNo">34460</span> }<a name="line.34460"></a>
<span class="sourceLineNo">34461</span> } else {<a name="line.34461"></a>
<span class="sourceLineNo">34462</span> while (it.hasNext()) {<a name="line.34462"></a>
<span class="sourceLineNo">34463</span> for (int j = 0; j &lt; is; j++) {<a name="line.34463"></a>
<span class="sourceLineNo">34464</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.34464"></a>
<span class="sourceLineNo">34465</span> short ox;<a name="line.34465"></a>
<span class="sourceLineNo">34466</span> ox = (short) toLong(-ix);<a name="line.34466"></a>
<span class="sourceLineNo">34467</span> oai16data[it.oIndex + j] = ox;<a name="line.34467"></a>
<span class="sourceLineNo">34468</span> }<a name="line.34468"></a>
<span class="sourceLineNo">34469</span> }<a name="line.34469"></a>
<span class="sourceLineNo">34470</span> }<a name="line.34470"></a>
<span class="sourceLineNo">34471</span> }<a name="line.34471"></a>
<span class="sourceLineNo">34472</span> break;<a name="line.34472"></a>
<span class="sourceLineNo">34473</span> case Dataset.ARRAYINT64:<a name="line.34473"></a>
<span class="sourceLineNo">34474</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.34474"></a>
<span class="sourceLineNo">34475</span> if (is == 1) {<a name="line.34475"></a>
<span class="sourceLineNo">34476</span> if (it.isOutputDouble()) {<a name="line.34476"></a>
<span class="sourceLineNo">34477</span> while (it.hasNext()) {<a name="line.34477"></a>
<span class="sourceLineNo">34478</span> final double ix = it.aDouble;<a name="line.34478"></a>
<span class="sourceLineNo">34479</span> long ox;<a name="line.34479"></a>
<span class="sourceLineNo">34480</span> ox = toLong(-ix);<a name="line.34480"></a>
<span class="sourceLineNo">34481</span> oai64data[it.oIndex] = ox;<a name="line.34481"></a>
<span class="sourceLineNo">34482</span> }<a name="line.34482"></a>
<span class="sourceLineNo">34483</span> } else {<a name="line.34483"></a>
<span class="sourceLineNo">34484</span> while (it.hasNext()) {<a name="line.34484"></a>
<span class="sourceLineNo">34485</span> final long ix = it.aLong;<a name="line.34485"></a>
<span class="sourceLineNo">34486</span> long ox;<a name="line.34486"></a>
<span class="sourceLineNo">34487</span> ox = toLong(-ix);<a name="line.34487"></a>
<span class="sourceLineNo">34488</span> oai64data[it.oIndex] = ox;<a name="line.34488"></a>
<span class="sourceLineNo">34489</span> }<a name="line.34489"></a>
<span class="sourceLineNo">34490</span> }<a name="line.34490"></a>
<span class="sourceLineNo">34491</span> } else if (as == 1) {<a name="line.34491"></a>
<span class="sourceLineNo">34492</span> if (it.isOutputDouble()) {<a name="line.34492"></a>
<span class="sourceLineNo">34493</span> while (it.hasNext()) {<a name="line.34493"></a>
<span class="sourceLineNo">34494</span> final double ix = it.aDouble;<a name="line.34494"></a>
<span class="sourceLineNo">34495</span> long ox;<a name="line.34495"></a>
<span class="sourceLineNo">34496</span> ox = toLong(-ix);<a name="line.34496"></a>
<span class="sourceLineNo">34497</span> for (int j = 0; j &lt; is; j++) {<a name="line.34497"></a>
<span class="sourceLineNo">34498</span> oai64data[it.oIndex + j] = ox;<a name="line.34498"></a>
<span class="sourceLineNo">34499</span> }<a name="line.34499"></a>
<span class="sourceLineNo">34500</span> }<a name="line.34500"></a>
<span class="sourceLineNo">34501</span> } else {<a name="line.34501"></a>
<span class="sourceLineNo">34502</span> while (it.hasNext()) {<a name="line.34502"></a>
<span class="sourceLineNo">34503</span> final long ix = it.aLong;<a name="line.34503"></a>
<span class="sourceLineNo">34504</span> long ox;<a name="line.34504"></a>
<span class="sourceLineNo">34505</span> ox = toLong(-ix);<a name="line.34505"></a>
<span class="sourceLineNo">34506</span> for (int j = 0; j &lt; is; j++) {<a name="line.34506"></a>
<span class="sourceLineNo">34507</span> oai64data[it.oIndex + j] = ox;<a name="line.34507"></a>
<span class="sourceLineNo">34508</span> }<a name="line.34508"></a>
<span class="sourceLineNo">34509</span> }<a name="line.34509"></a>
<span class="sourceLineNo">34510</span> }<a name="line.34510"></a>
<span class="sourceLineNo">34511</span> } else {<a name="line.34511"></a>
<span class="sourceLineNo">34512</span> if (it.isOutputDouble()) {<a name="line.34512"></a>
<span class="sourceLineNo">34513</span> while (it.hasNext()) {<a name="line.34513"></a>
<span class="sourceLineNo">34514</span> for (int j = 0; j &lt; is; j++) {<a name="line.34514"></a>
<span class="sourceLineNo">34515</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.34515"></a>
<span class="sourceLineNo">34516</span> long ox;<a name="line.34516"></a>
<span class="sourceLineNo">34517</span> ox = toLong(-ix);<a name="line.34517"></a>
<span class="sourceLineNo">34518</span> oai64data[it.oIndex + j] = ox;<a name="line.34518"></a>
<span class="sourceLineNo">34519</span> }<a name="line.34519"></a>
<span class="sourceLineNo">34520</span> }<a name="line.34520"></a>
<span class="sourceLineNo">34521</span> } else {<a name="line.34521"></a>
<span class="sourceLineNo">34522</span> while (it.hasNext()) {<a name="line.34522"></a>
<span class="sourceLineNo">34523</span> for (int j = 0; j &lt; is; j++) {<a name="line.34523"></a>
<span class="sourceLineNo">34524</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.34524"></a>
<span class="sourceLineNo">34525</span> long ox;<a name="line.34525"></a>
<span class="sourceLineNo">34526</span> ox = toLong(-ix);<a name="line.34526"></a>
<span class="sourceLineNo">34527</span> oai64data[it.oIndex + j] = ox;<a name="line.34527"></a>
<span class="sourceLineNo">34528</span> }<a name="line.34528"></a>
<span class="sourceLineNo">34529</span> }<a name="line.34529"></a>
<span class="sourceLineNo">34530</span> }<a name="line.34530"></a>
<span class="sourceLineNo">34531</span> }<a name="line.34531"></a>
<span class="sourceLineNo">34532</span> break;<a name="line.34532"></a>
<span class="sourceLineNo">34533</span> case Dataset.ARRAYINT32:<a name="line.34533"></a>
<span class="sourceLineNo">34534</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.34534"></a>
<span class="sourceLineNo">34535</span> if (is == 1) {<a name="line.34535"></a>
<span class="sourceLineNo">34536</span> if (it.isOutputDouble()) {<a name="line.34536"></a>
<span class="sourceLineNo">34537</span> while (it.hasNext()) {<a name="line.34537"></a>
<span class="sourceLineNo">34538</span> final double ix = it.aDouble;<a name="line.34538"></a>
<span class="sourceLineNo">34539</span> int ox;<a name="line.34539"></a>
<span class="sourceLineNo">34540</span> ox = (int) toLong(-ix);<a name="line.34540"></a>
<span class="sourceLineNo">34541</span> oai32data[it.oIndex] = ox;<a name="line.34541"></a>
<span class="sourceLineNo">34542</span> }<a name="line.34542"></a>
<span class="sourceLineNo">34543</span> } else {<a name="line.34543"></a>
<span class="sourceLineNo">34544</span> while (it.hasNext()) {<a name="line.34544"></a>
<span class="sourceLineNo">34545</span> final long ix = it.aLong;<a name="line.34545"></a>
<span class="sourceLineNo">34546</span> int ox;<a name="line.34546"></a>
<span class="sourceLineNo">34547</span> ox = (int) toLong(-ix);<a name="line.34547"></a>
<span class="sourceLineNo">34548</span> oai32data[it.oIndex] = ox;<a name="line.34548"></a>
<span class="sourceLineNo">34549</span> }<a name="line.34549"></a>
<span class="sourceLineNo">34550</span> }<a name="line.34550"></a>
<span class="sourceLineNo">34551</span> } else if (as == 1) {<a name="line.34551"></a>
<span class="sourceLineNo">34552</span> if (it.isOutputDouble()) {<a name="line.34552"></a>
<span class="sourceLineNo">34553</span> while (it.hasNext()) {<a name="line.34553"></a>
<span class="sourceLineNo">34554</span> final double ix = it.aDouble;<a name="line.34554"></a>
<span class="sourceLineNo">34555</span> int ox;<a name="line.34555"></a>
<span class="sourceLineNo">34556</span> ox = (int) toLong(-ix);<a name="line.34556"></a>
<span class="sourceLineNo">34557</span> for (int j = 0; j &lt; is; j++) {<a name="line.34557"></a>
<span class="sourceLineNo">34558</span> oai32data[it.oIndex + j] = ox;<a name="line.34558"></a>
<span class="sourceLineNo">34559</span> }<a name="line.34559"></a>
<span class="sourceLineNo">34560</span> }<a name="line.34560"></a>
<span class="sourceLineNo">34561</span> } else {<a name="line.34561"></a>
<span class="sourceLineNo">34562</span> while (it.hasNext()) {<a name="line.34562"></a>
<span class="sourceLineNo">34563</span> final long ix = it.aLong;<a name="line.34563"></a>
<span class="sourceLineNo">34564</span> int ox;<a name="line.34564"></a>
<span class="sourceLineNo">34565</span> ox = (int) toLong(-ix);<a name="line.34565"></a>
<span class="sourceLineNo">34566</span> for (int j = 0; j &lt; is; j++) {<a name="line.34566"></a>
<span class="sourceLineNo">34567</span> oai32data[it.oIndex + j] = ox;<a name="line.34567"></a>
<span class="sourceLineNo">34568</span> }<a name="line.34568"></a>
<span class="sourceLineNo">34569</span> }<a name="line.34569"></a>
<span class="sourceLineNo">34570</span> }<a name="line.34570"></a>
<span class="sourceLineNo">34571</span> } else {<a name="line.34571"></a>
<span class="sourceLineNo">34572</span> if (it.isOutputDouble()) {<a name="line.34572"></a>
<span class="sourceLineNo">34573</span> while (it.hasNext()) {<a name="line.34573"></a>
<span class="sourceLineNo">34574</span> for (int j = 0; j &lt; is; j++) {<a name="line.34574"></a>
<span class="sourceLineNo">34575</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.34575"></a>
<span class="sourceLineNo">34576</span> int ox;<a name="line.34576"></a>
<span class="sourceLineNo">34577</span> ox = (int) toLong(-ix);<a name="line.34577"></a>
<span class="sourceLineNo">34578</span> oai32data[it.oIndex + j] = ox;<a name="line.34578"></a>
<span class="sourceLineNo">34579</span> }<a name="line.34579"></a>
<span class="sourceLineNo">34580</span> }<a name="line.34580"></a>
<span class="sourceLineNo">34581</span> } else {<a name="line.34581"></a>
<span class="sourceLineNo">34582</span> while (it.hasNext()) {<a name="line.34582"></a>
<span class="sourceLineNo">34583</span> for (int j = 0; j &lt; is; j++) {<a name="line.34583"></a>
<span class="sourceLineNo">34584</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.34584"></a>
<span class="sourceLineNo">34585</span> int ox;<a name="line.34585"></a>
<span class="sourceLineNo">34586</span> ox = (int) toLong(-ix);<a name="line.34586"></a>
<span class="sourceLineNo">34587</span> oai32data[it.oIndex + j] = ox;<a name="line.34587"></a>
<span class="sourceLineNo">34588</span> }<a name="line.34588"></a>
<span class="sourceLineNo">34589</span> }<a name="line.34589"></a>
<span class="sourceLineNo">34590</span> }<a name="line.34590"></a>
<span class="sourceLineNo">34591</span> }<a name="line.34591"></a>
<span class="sourceLineNo">34592</span> break;<a name="line.34592"></a>
<span class="sourceLineNo">34593</span> case Dataset.FLOAT32:<a name="line.34593"></a>
<span class="sourceLineNo">34594</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.34594"></a>
<span class="sourceLineNo">34595</span> if (it.isOutputDouble()) {<a name="line.34595"></a>
<span class="sourceLineNo">34596</span> while (it.hasNext()) {<a name="line.34596"></a>
<span class="sourceLineNo">34597</span> final double ix = it.aDouble;<a name="line.34597"></a>
<span class="sourceLineNo">34598</span> float ox;<a name="line.34598"></a>
<span class="sourceLineNo">34599</span> ox = (float) (-ix);<a name="line.34599"></a>
<span class="sourceLineNo">34600</span> of32data[it.oIndex] = ox;<a name="line.34600"></a>
<span class="sourceLineNo">34601</span> }<a name="line.34601"></a>
<span class="sourceLineNo">34602</span> } else {<a name="line.34602"></a>
<span class="sourceLineNo">34603</span> while (it.hasNext()) {<a name="line.34603"></a>
<span class="sourceLineNo">34604</span> final long ix = it.aLong;<a name="line.34604"></a>
<span class="sourceLineNo">34605</span> float ox;<a name="line.34605"></a>
<span class="sourceLineNo">34606</span> ox = (-ix);<a name="line.34606"></a>
<span class="sourceLineNo">34607</span> of32data[it.oIndex] = ox;<a name="line.34607"></a>
<span class="sourceLineNo">34608</span> }<a name="line.34608"></a>
<span class="sourceLineNo">34609</span> }<a name="line.34609"></a>
<span class="sourceLineNo">34610</span> break;<a name="line.34610"></a>
<span class="sourceLineNo">34611</span> case Dataset.FLOAT64:<a name="line.34611"></a>
<span class="sourceLineNo">34612</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.34612"></a>
<span class="sourceLineNo">34613</span> if (it.isOutputDouble()) {<a name="line.34613"></a>
<span class="sourceLineNo">34614</span> while (it.hasNext()) {<a name="line.34614"></a>
<span class="sourceLineNo">34615</span> final double ix = it.aDouble;<a name="line.34615"></a>
<span class="sourceLineNo">34616</span> double ox;<a name="line.34616"></a>
<span class="sourceLineNo">34617</span> ox = (-ix);<a name="line.34617"></a>
<span class="sourceLineNo">34618</span> of64data[it.oIndex] = ox;<a name="line.34618"></a>
<span class="sourceLineNo">34619</span> }<a name="line.34619"></a>
<span class="sourceLineNo">34620</span> } else {<a name="line.34620"></a>
<span class="sourceLineNo">34621</span> while (it.hasNext()) {<a name="line.34621"></a>
<span class="sourceLineNo">34622</span> final long ix = it.aLong;<a name="line.34622"></a>
<span class="sourceLineNo">34623</span> double ox;<a name="line.34623"></a>
<span class="sourceLineNo">34624</span> ox = (-ix);<a name="line.34624"></a>
<span class="sourceLineNo">34625</span> of64data[it.oIndex] = ox;<a name="line.34625"></a>
<span class="sourceLineNo">34626</span> }<a name="line.34626"></a>
<span class="sourceLineNo">34627</span> }<a name="line.34627"></a>
<span class="sourceLineNo">34628</span> break;<a name="line.34628"></a>
<span class="sourceLineNo">34629</span> case Dataset.ARRAYFLOAT32:<a name="line.34629"></a>
<span class="sourceLineNo">34630</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.34630"></a>
<span class="sourceLineNo">34631</span> if (is == 1) {<a name="line.34631"></a>
<span class="sourceLineNo">34632</span> if (it.isOutputDouble()) {<a name="line.34632"></a>
<span class="sourceLineNo">34633</span> while (it.hasNext()) {<a name="line.34633"></a>
<span class="sourceLineNo">34634</span> final double ix = it.aDouble;<a name="line.34634"></a>
<span class="sourceLineNo">34635</span> float ox;<a name="line.34635"></a>
<span class="sourceLineNo">34636</span> ox = (float) (-ix);<a name="line.34636"></a>
<span class="sourceLineNo">34637</span> oaf32data[it.oIndex] = ox;<a name="line.34637"></a>
<span class="sourceLineNo">34638</span> }<a name="line.34638"></a>
<span class="sourceLineNo">34639</span> } else {<a name="line.34639"></a>
<span class="sourceLineNo">34640</span> while (it.hasNext()) {<a name="line.34640"></a>
<span class="sourceLineNo">34641</span> final long ix = it.aLong;<a name="line.34641"></a>
<span class="sourceLineNo">34642</span> float ox;<a name="line.34642"></a>
<span class="sourceLineNo">34643</span> ox = (-ix);<a name="line.34643"></a>
<span class="sourceLineNo">34644</span> oaf32data[it.oIndex] = ox;<a name="line.34644"></a>
<span class="sourceLineNo">34645</span> }<a name="line.34645"></a>
<span class="sourceLineNo">34646</span> }<a name="line.34646"></a>
<span class="sourceLineNo">34647</span> } else if (as == 1) {<a name="line.34647"></a>
<span class="sourceLineNo">34648</span> if (it.isOutputDouble()) {<a name="line.34648"></a>
<span class="sourceLineNo">34649</span> while (it.hasNext()) {<a name="line.34649"></a>
<span class="sourceLineNo">34650</span> final double ix = it.aDouble;<a name="line.34650"></a>
<span class="sourceLineNo">34651</span> float ox;<a name="line.34651"></a>
<span class="sourceLineNo">34652</span> ox = (float) (-ix);<a name="line.34652"></a>
<span class="sourceLineNo">34653</span> for (int j = 0; j &lt; is; j++) {<a name="line.34653"></a>
<span class="sourceLineNo">34654</span> oaf32data[it.oIndex + j] = ox;<a name="line.34654"></a>
<span class="sourceLineNo">34655</span> }<a name="line.34655"></a>
<span class="sourceLineNo">34656</span> }<a name="line.34656"></a>
<span class="sourceLineNo">34657</span> } else {<a name="line.34657"></a>
<span class="sourceLineNo">34658</span> while (it.hasNext()) {<a name="line.34658"></a>
<span class="sourceLineNo">34659</span> final long ix = it.aLong;<a name="line.34659"></a>
<span class="sourceLineNo">34660</span> float ox;<a name="line.34660"></a>
<span class="sourceLineNo">34661</span> ox = (-ix);<a name="line.34661"></a>
<span class="sourceLineNo">34662</span> for (int j = 0; j &lt; is; j++) {<a name="line.34662"></a>
<span class="sourceLineNo">34663</span> oaf32data[it.oIndex + j] = ox;<a name="line.34663"></a>
<span class="sourceLineNo">34664</span> }<a name="line.34664"></a>
<span class="sourceLineNo">34665</span> }<a name="line.34665"></a>
<span class="sourceLineNo">34666</span> }<a name="line.34666"></a>
<span class="sourceLineNo">34667</span> } else {<a name="line.34667"></a>
<span class="sourceLineNo">34668</span> if (it.isOutputDouble()) {<a name="line.34668"></a>
<span class="sourceLineNo">34669</span> while (it.hasNext()) {<a name="line.34669"></a>
<span class="sourceLineNo">34670</span> for (int j = 0; j &lt; is; j++) {<a name="line.34670"></a>
<span class="sourceLineNo">34671</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.34671"></a>
<span class="sourceLineNo">34672</span> float ox;<a name="line.34672"></a>
<span class="sourceLineNo">34673</span> ox = (float) (-ix);<a name="line.34673"></a>
<span class="sourceLineNo">34674</span> oaf32data[it.oIndex + j] = ox;<a name="line.34674"></a>
<span class="sourceLineNo">34675</span> }<a name="line.34675"></a>
<span class="sourceLineNo">34676</span> }<a name="line.34676"></a>
<span class="sourceLineNo">34677</span> } else {<a name="line.34677"></a>
<span class="sourceLineNo">34678</span> while (it.hasNext()) {<a name="line.34678"></a>
<span class="sourceLineNo">34679</span> for (int j = 0; j &lt; is; j++) {<a name="line.34679"></a>
<span class="sourceLineNo">34680</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.34680"></a>
<span class="sourceLineNo">34681</span> float ox;<a name="line.34681"></a>
<span class="sourceLineNo">34682</span> ox = (-ix);<a name="line.34682"></a>
<span class="sourceLineNo">34683</span> oaf32data[it.oIndex + j] = ox;<a name="line.34683"></a>
<span class="sourceLineNo">34684</span> }<a name="line.34684"></a>
<span class="sourceLineNo">34685</span> }<a name="line.34685"></a>
<span class="sourceLineNo">34686</span> }<a name="line.34686"></a>
<span class="sourceLineNo">34687</span> }<a name="line.34687"></a>
<span class="sourceLineNo">34688</span> break;<a name="line.34688"></a>
<span class="sourceLineNo">34689</span> case Dataset.ARRAYFLOAT64:<a name="line.34689"></a>
<span class="sourceLineNo">34690</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.34690"></a>
<span class="sourceLineNo">34691</span> if (is == 1) {<a name="line.34691"></a>
<span class="sourceLineNo">34692</span> if (it.isOutputDouble()) {<a name="line.34692"></a>
<span class="sourceLineNo">34693</span> while (it.hasNext()) {<a name="line.34693"></a>
<span class="sourceLineNo">34694</span> final double ix = it.aDouble;<a name="line.34694"></a>
<span class="sourceLineNo">34695</span> double ox;<a name="line.34695"></a>
<span class="sourceLineNo">34696</span> ox = (-ix);<a name="line.34696"></a>
<span class="sourceLineNo">34697</span> oaf64data[it.oIndex] = ox;<a name="line.34697"></a>
<span class="sourceLineNo">34698</span> }<a name="line.34698"></a>
<span class="sourceLineNo">34699</span> } else {<a name="line.34699"></a>
<span class="sourceLineNo">34700</span> while (it.hasNext()) {<a name="line.34700"></a>
<span class="sourceLineNo">34701</span> final long ix = it.aLong;<a name="line.34701"></a>
<span class="sourceLineNo">34702</span> double ox;<a name="line.34702"></a>
<span class="sourceLineNo">34703</span> ox = (-ix);<a name="line.34703"></a>
<span class="sourceLineNo">34704</span> oaf64data[it.oIndex] = ox;<a name="line.34704"></a>
<span class="sourceLineNo">34705</span> }<a name="line.34705"></a>
<span class="sourceLineNo">34706</span> }<a name="line.34706"></a>
<span class="sourceLineNo">34707</span> } else if (as == 1) {<a name="line.34707"></a>
<span class="sourceLineNo">34708</span> if (it.isOutputDouble()) {<a name="line.34708"></a>
<span class="sourceLineNo">34709</span> while (it.hasNext()) {<a name="line.34709"></a>
<span class="sourceLineNo">34710</span> final double ix = it.aDouble;<a name="line.34710"></a>
<span class="sourceLineNo">34711</span> double ox;<a name="line.34711"></a>
<span class="sourceLineNo">34712</span> ox = (-ix);<a name="line.34712"></a>
<span class="sourceLineNo">34713</span> for (int j = 0; j &lt; is; j++) {<a name="line.34713"></a>
<span class="sourceLineNo">34714</span> oaf64data[it.oIndex + j] = ox;<a name="line.34714"></a>
<span class="sourceLineNo">34715</span> }<a name="line.34715"></a>
<span class="sourceLineNo">34716</span> }<a name="line.34716"></a>
<span class="sourceLineNo">34717</span> } else {<a name="line.34717"></a>
<span class="sourceLineNo">34718</span> while (it.hasNext()) {<a name="line.34718"></a>
<span class="sourceLineNo">34719</span> final long ix = it.aLong;<a name="line.34719"></a>
<span class="sourceLineNo">34720</span> double ox;<a name="line.34720"></a>
<span class="sourceLineNo">34721</span> ox = (-ix);<a name="line.34721"></a>
<span class="sourceLineNo">34722</span> for (int j = 0; j &lt; is; j++) {<a name="line.34722"></a>
<span class="sourceLineNo">34723</span> oaf64data[it.oIndex + j] = ox;<a name="line.34723"></a>
<span class="sourceLineNo">34724</span> }<a name="line.34724"></a>
<span class="sourceLineNo">34725</span> }<a name="line.34725"></a>
<span class="sourceLineNo">34726</span> }<a name="line.34726"></a>
<span class="sourceLineNo">34727</span> } else {<a name="line.34727"></a>
<span class="sourceLineNo">34728</span> if (it.isOutputDouble()) {<a name="line.34728"></a>
<span class="sourceLineNo">34729</span> while (it.hasNext()) {<a name="line.34729"></a>
<span class="sourceLineNo">34730</span> for (int j = 0; j &lt; is; j++) {<a name="line.34730"></a>
<span class="sourceLineNo">34731</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.34731"></a>
<span class="sourceLineNo">34732</span> double ox;<a name="line.34732"></a>
<span class="sourceLineNo">34733</span> ox = (-ix);<a name="line.34733"></a>
<span class="sourceLineNo">34734</span> oaf64data[it.oIndex + j] = ox;<a name="line.34734"></a>
<span class="sourceLineNo">34735</span> }<a name="line.34735"></a>
<span class="sourceLineNo">34736</span> }<a name="line.34736"></a>
<span class="sourceLineNo">34737</span> } else {<a name="line.34737"></a>
<span class="sourceLineNo">34738</span> while (it.hasNext()) {<a name="line.34738"></a>
<span class="sourceLineNo">34739</span> for (int j = 0; j &lt; is; j++) {<a name="line.34739"></a>
<span class="sourceLineNo">34740</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.34740"></a>
<span class="sourceLineNo">34741</span> double ox;<a name="line.34741"></a>
<span class="sourceLineNo">34742</span> ox = (-ix);<a name="line.34742"></a>
<span class="sourceLineNo">34743</span> oaf64data[it.oIndex + j] = ox;<a name="line.34743"></a>
<span class="sourceLineNo">34744</span> }<a name="line.34744"></a>
<span class="sourceLineNo">34745</span> }<a name="line.34745"></a>
<span class="sourceLineNo">34746</span> }<a name="line.34746"></a>
<span class="sourceLineNo">34747</span> }<a name="line.34747"></a>
<span class="sourceLineNo">34748</span> break;<a name="line.34748"></a>
<span class="sourceLineNo">34749</span> case Dataset.COMPLEX64:<a name="line.34749"></a>
<span class="sourceLineNo">34750</span> final float[] oc64data = ((ComplexFloatDataset) result).getData();<a name="line.34750"></a>
<span class="sourceLineNo">34751</span> if (!da.isComplex()) {<a name="line.34751"></a>
<span class="sourceLineNo">34752</span> if (it.isOutputDouble()) {<a name="line.34752"></a>
<span class="sourceLineNo">34753</span> final double iy = 0;<a name="line.34753"></a>
<span class="sourceLineNo">34754</span> while (it.hasNext()) {<a name="line.34754"></a>
<span class="sourceLineNo">34755</span> final double ix = it.aDouble;<a name="line.34755"></a>
<span class="sourceLineNo">34756</span> float ox;<a name="line.34756"></a>
<span class="sourceLineNo">34757</span> float oy;<a name="line.34757"></a>
<span class="sourceLineNo">34758</span> ox = (float) (-ix);<a name="line.34758"></a>
<span class="sourceLineNo">34759</span> oy = (float) (-iy);<a name="line.34759"></a>
<span class="sourceLineNo">34760</span> oc64data[it.oIndex] = ox;<a name="line.34760"></a>
<span class="sourceLineNo">34761</span> oc64data[it.oIndex + 1] = oy;<a name="line.34761"></a>
<span class="sourceLineNo">34762</span> }<a name="line.34762"></a>
<span class="sourceLineNo">34763</span> } else {<a name="line.34763"></a>
<span class="sourceLineNo">34764</span> final long iy = 0;<a name="line.34764"></a>
<span class="sourceLineNo">34765</span> while (it.hasNext()) {<a name="line.34765"></a>
<span class="sourceLineNo">34766</span> final long ix = it.aLong;<a name="line.34766"></a>
<span class="sourceLineNo">34767</span> float ox;<a name="line.34767"></a>
<span class="sourceLineNo">34768</span> float oy;<a name="line.34768"></a>
<span class="sourceLineNo">34769</span> ox = (float) toLong(-ix);<a name="line.34769"></a>
<span class="sourceLineNo">34770</span> oy = (float) toLong(-iy);<a name="line.34770"></a>
<span class="sourceLineNo">34771</span> oc64data[it.oIndex] = ox;<a name="line.34771"></a>
<span class="sourceLineNo">34772</span> oc64data[it.oIndex + 1] = oy;<a name="line.34772"></a>
<span class="sourceLineNo">34773</span> }<a name="line.34773"></a>
<span class="sourceLineNo">34774</span> }<a name="line.34774"></a>
<span class="sourceLineNo">34775</span> } else {<a name="line.34775"></a>
<span class="sourceLineNo">34776</span> while (it.hasNext()) {<a name="line.34776"></a>
<span class="sourceLineNo">34777</span> final double ix = it.aDouble;<a name="line.34777"></a>
<span class="sourceLineNo">34778</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.34778"></a>
<span class="sourceLineNo">34779</span> float ox;<a name="line.34779"></a>
<span class="sourceLineNo">34780</span> float oy;<a name="line.34780"></a>
<span class="sourceLineNo">34781</span> ox = (float) (-ix);<a name="line.34781"></a>
<span class="sourceLineNo">34782</span> oy = (float) (-iy);<a name="line.34782"></a>
<span class="sourceLineNo">34783</span> oc64data[it.oIndex] = ox;<a name="line.34783"></a>
<span class="sourceLineNo">34784</span> oc64data[it.oIndex + 1] = oy;<a name="line.34784"></a>
<span class="sourceLineNo">34785</span> }<a name="line.34785"></a>
<span class="sourceLineNo">34786</span> }<a name="line.34786"></a>
<span class="sourceLineNo">34787</span> break;<a name="line.34787"></a>
<span class="sourceLineNo">34788</span> case Dataset.COMPLEX128:<a name="line.34788"></a>
<span class="sourceLineNo">34789</span> final double[] oc128data = ((ComplexDoubleDataset) result).getData();<a name="line.34789"></a>
<span class="sourceLineNo">34790</span> if (!da.isComplex()) {<a name="line.34790"></a>
<span class="sourceLineNo">34791</span> if (it.isOutputDouble()) {<a name="line.34791"></a>
<span class="sourceLineNo">34792</span> final double iy = 0;<a name="line.34792"></a>
<span class="sourceLineNo">34793</span> while (it.hasNext()) {<a name="line.34793"></a>
<span class="sourceLineNo">34794</span> final double ix = it.aDouble;<a name="line.34794"></a>
<span class="sourceLineNo">34795</span> double ox;<a name="line.34795"></a>
<span class="sourceLineNo">34796</span> double oy;<a name="line.34796"></a>
<span class="sourceLineNo">34797</span> ox = (-ix);<a name="line.34797"></a>
<span class="sourceLineNo">34798</span> oy = (-iy);<a name="line.34798"></a>
<span class="sourceLineNo">34799</span> oc128data[it.oIndex] = ox;<a name="line.34799"></a>
<span class="sourceLineNo">34800</span> oc128data[it.oIndex + 1] = oy;<a name="line.34800"></a>
<span class="sourceLineNo">34801</span> }<a name="line.34801"></a>
<span class="sourceLineNo">34802</span> } else {<a name="line.34802"></a>
<span class="sourceLineNo">34803</span> final long iy = 0;<a name="line.34803"></a>
<span class="sourceLineNo">34804</span> while (it.hasNext()) {<a name="line.34804"></a>
<span class="sourceLineNo">34805</span> final long ix = it.aLong;<a name="line.34805"></a>
<span class="sourceLineNo">34806</span> double ox;<a name="line.34806"></a>
<span class="sourceLineNo">34807</span> double oy;<a name="line.34807"></a>
<span class="sourceLineNo">34808</span> ox = (-ix);<a name="line.34808"></a>
<span class="sourceLineNo">34809</span> oy = (-iy);<a name="line.34809"></a>
<span class="sourceLineNo">34810</span> oc128data[it.oIndex] = ox;<a name="line.34810"></a>
<span class="sourceLineNo">34811</span> oc128data[it.oIndex + 1] = oy;<a name="line.34811"></a>
<span class="sourceLineNo">34812</span> }<a name="line.34812"></a>
<span class="sourceLineNo">34813</span> }<a name="line.34813"></a>
<span class="sourceLineNo">34814</span> } else {<a name="line.34814"></a>
<span class="sourceLineNo">34815</span> while (it.hasNext()) {<a name="line.34815"></a>
<span class="sourceLineNo">34816</span> final double ix = it.aDouble;<a name="line.34816"></a>
<span class="sourceLineNo">34817</span> final double iy = da.getElementDoubleAbs(it.aIndex + 1);<a name="line.34817"></a>
<span class="sourceLineNo">34818</span> double ox;<a name="line.34818"></a>
<span class="sourceLineNo">34819</span> double oy;<a name="line.34819"></a>
<span class="sourceLineNo">34820</span> ox = (-ix);<a name="line.34820"></a>
<span class="sourceLineNo">34821</span> oy = (-iy);<a name="line.34821"></a>
<span class="sourceLineNo">34822</span> oc128data[it.oIndex] = ox;<a name="line.34822"></a>
<span class="sourceLineNo">34823</span> oc128data[it.oIndex + 1] = oy;<a name="line.34823"></a>
<span class="sourceLineNo">34824</span> }<a name="line.34824"></a>
<span class="sourceLineNo">34825</span> }<a name="line.34825"></a>
<span class="sourceLineNo">34826</span> break;<a name="line.34826"></a>
<span class="sourceLineNo">34827</span> default:<a name="line.34827"></a>
<span class="sourceLineNo">34828</span> throw new IllegalArgumentException("negative supports integer, compound integer, real, compound real, complex datasets only");<a name="line.34828"></a>
<span class="sourceLineNo">34829</span> }<a name="line.34829"></a>
<span class="sourceLineNo">34830</span><a name="line.34830"></a>
<span class="sourceLineNo">34831</span> addFunctionName(result, "negative");<a name="line.34831"></a>
<span class="sourceLineNo">34832</span> return result;<a name="line.34832"></a>
<span class="sourceLineNo">34833</span> }<a name="line.34833"></a>
<span class="sourceLineNo">34834</span><a name="line.34834"></a>
<span class="sourceLineNo">34835</span> /**<a name="line.34835"></a>
<span class="sourceLineNo">34836</span> * lowerClip - clip elements to lower limit<a name="line.34836"></a>
<span class="sourceLineNo">34837</span> * @param a<a name="line.34837"></a>
<span class="sourceLineNo">34838</span> * @param pa<a name="line.34838"></a>
<span class="sourceLineNo">34839</span> * @return dataset<a name="line.34839"></a>
<span class="sourceLineNo">34840</span> * @since 2.3<a name="line.34840"></a>
<span class="sourceLineNo">34841</span> */<a name="line.34841"></a>
<span class="sourceLineNo">34842</span> public static Dataset lowerClip(final Object a, final Object pa) {<a name="line.34842"></a>
<span class="sourceLineNo">34843</span> return lowerClip(a, null, pa);<a name="line.34843"></a>
<span class="sourceLineNo">34844</span> }<a name="line.34844"></a>
<span class="sourceLineNo">34845</span><a name="line.34845"></a>
<span class="sourceLineNo">34846</span> /**<a name="line.34846"></a>
<span class="sourceLineNo">34847</span> * lowerClip - clip elements to lower limit<a name="line.34847"></a>
<span class="sourceLineNo">34848</span> * @param a<a name="line.34848"></a>
<span class="sourceLineNo">34849</span> * @param o output can be null - in which case, a new dataset is created<a name="line.34849"></a>
<span class="sourceLineNo">34850</span> * @param pa<a name="line.34850"></a>
<span class="sourceLineNo">34851</span> * @return dataset<a name="line.34851"></a>
<span class="sourceLineNo">34852</span> * @since 2.3<a name="line.34852"></a>
<span class="sourceLineNo">34853</span> */<a name="line.34853"></a>
<span class="sourceLineNo">34854</span> public static Dataset lowerClip(final Object a, final Dataset o, final Object pa) {<a name="line.34854"></a>
<span class="sourceLineNo">34855</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.34855"></a>
<span class="sourceLineNo">34856</span> SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true);<a name="line.34856"></a>
<span class="sourceLineNo">34857</span> final Dataset result = it.getOutput();<a name="line.34857"></a>
<span class="sourceLineNo">34858</span> if (!result.isComplex()) {<a name="line.34858"></a>
<span class="sourceLineNo">34859</span> if (da.isComplex()) {<a name="line.34859"></a>
<span class="sourceLineNo">34860</span> da = da.getRealView();<a name="line.34860"></a>
<span class="sourceLineNo">34861</span> it = new SingleInputBroadcastIterator(da, result, true);<a name="line.34861"></a>
<span class="sourceLineNo">34862</span> }<a name="line.34862"></a>
<span class="sourceLineNo">34863</span> }<a name="line.34863"></a>
<span class="sourceLineNo">34864</span> final int is = result.getElementsPerItem();<a name="line.34864"></a>
<span class="sourceLineNo">34865</span> final int as = da.getElementsPerItem();<a name="line.34865"></a>
<span class="sourceLineNo">34866</span> final int dt = result.getDType();<a name="line.34866"></a>
<span class="sourceLineNo">34867</span> final double pax = DTypeUtils.toReal(pa);<a name="line.34867"></a>
<span class="sourceLineNo">34868</span><a name="line.34868"></a>
<span class="sourceLineNo">34869</span> switch(dt) {<a name="line.34869"></a>
<span class="sourceLineNo">34870</span> case Dataset.INT8:<a name="line.34870"></a>
<span class="sourceLineNo">34871</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.34871"></a>
<span class="sourceLineNo">34872</span> if (it.isOutputDouble()) {<a name="line.34872"></a>
<span class="sourceLineNo">34873</span> while (it.hasNext()) {<a name="line.34873"></a>
<span class="sourceLineNo">34874</span> final double ix = it.aDouble;<a name="line.34874"></a>
<span class="sourceLineNo">34875</span> byte ox;<a name="line.34875"></a>
<span class="sourceLineNo">34876</span> if (ix &lt; pax)<a name="line.34876"></a>
<span class="sourceLineNo">34877</span> ox = (byte) toLong(pax);<a name="line.34877"></a>
<span class="sourceLineNo">34878</span> else<a name="line.34878"></a>
<span class="sourceLineNo">34879</span> ox = (byte) toLong(ix);<a name="line.34879"></a>
<span class="sourceLineNo">34880</span> oi8data[it.oIndex] = ox;<a name="line.34880"></a>
<span class="sourceLineNo">34881</span> }<a name="line.34881"></a>
<span class="sourceLineNo">34882</span> } else {<a name="line.34882"></a>
<span class="sourceLineNo">34883</span> while (it.hasNext()) {<a name="line.34883"></a>
<span class="sourceLineNo">34884</span> final long ix = it.aLong;<a name="line.34884"></a>
<span class="sourceLineNo">34885</span> byte ox;<a name="line.34885"></a>
<span class="sourceLineNo">34886</span> if (ix &lt; pax)<a name="line.34886"></a>
<span class="sourceLineNo">34887</span> ox = (byte) toLong(pax);<a name="line.34887"></a>
<span class="sourceLineNo">34888</span> else<a name="line.34888"></a>
<span class="sourceLineNo">34889</span> ox = (byte) toLong(ix);<a name="line.34889"></a>
<span class="sourceLineNo">34890</span> oi8data[it.oIndex] = ox;<a name="line.34890"></a>
<span class="sourceLineNo">34891</span> }<a name="line.34891"></a>
<span class="sourceLineNo">34892</span> }<a name="line.34892"></a>
<span class="sourceLineNo">34893</span> break;<a name="line.34893"></a>
<span class="sourceLineNo">34894</span> case Dataset.INT16:<a name="line.34894"></a>
<span class="sourceLineNo">34895</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.34895"></a>
<span class="sourceLineNo">34896</span> if (it.isOutputDouble()) {<a name="line.34896"></a>
<span class="sourceLineNo">34897</span> while (it.hasNext()) {<a name="line.34897"></a>
<span class="sourceLineNo">34898</span> final double ix = it.aDouble;<a name="line.34898"></a>
<span class="sourceLineNo">34899</span> short ox;<a name="line.34899"></a>
<span class="sourceLineNo">34900</span> if (ix &lt; pax)<a name="line.34900"></a>
<span class="sourceLineNo">34901</span> ox = (short) toLong(pax);<a name="line.34901"></a>
<span class="sourceLineNo">34902</span> else<a name="line.34902"></a>
<span class="sourceLineNo">34903</span> ox = (short) toLong(ix);<a name="line.34903"></a>
<span class="sourceLineNo">34904</span> oi16data[it.oIndex] = ox;<a name="line.34904"></a>
<span class="sourceLineNo">34905</span> }<a name="line.34905"></a>
<span class="sourceLineNo">34906</span> } else {<a name="line.34906"></a>
<span class="sourceLineNo">34907</span> while (it.hasNext()) {<a name="line.34907"></a>
<span class="sourceLineNo">34908</span> final long ix = it.aLong;<a name="line.34908"></a>
<span class="sourceLineNo">34909</span> short ox;<a name="line.34909"></a>
<span class="sourceLineNo">34910</span> if (ix &lt; pax)<a name="line.34910"></a>
<span class="sourceLineNo">34911</span> ox = (short) toLong(pax);<a name="line.34911"></a>
<span class="sourceLineNo">34912</span> else<a name="line.34912"></a>
<span class="sourceLineNo">34913</span> ox = (short) toLong(ix);<a name="line.34913"></a>
<span class="sourceLineNo">34914</span> oi16data[it.oIndex] = ox;<a name="line.34914"></a>
<span class="sourceLineNo">34915</span> }<a name="line.34915"></a>
<span class="sourceLineNo">34916</span> }<a name="line.34916"></a>
<span class="sourceLineNo">34917</span> break;<a name="line.34917"></a>
<span class="sourceLineNo">34918</span> case Dataset.INT64:<a name="line.34918"></a>
<span class="sourceLineNo">34919</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.34919"></a>
<span class="sourceLineNo">34920</span> if (it.isOutputDouble()) {<a name="line.34920"></a>
<span class="sourceLineNo">34921</span> while (it.hasNext()) {<a name="line.34921"></a>
<span class="sourceLineNo">34922</span> final double ix = it.aDouble;<a name="line.34922"></a>
<span class="sourceLineNo">34923</span> long ox;<a name="line.34923"></a>
<span class="sourceLineNo">34924</span> if (ix &lt; pax)<a name="line.34924"></a>
<span class="sourceLineNo">34925</span> ox = toLong(pax);<a name="line.34925"></a>
<span class="sourceLineNo">34926</span> else<a name="line.34926"></a>
<span class="sourceLineNo">34927</span> ox = toLong(ix);<a name="line.34927"></a>
<span class="sourceLineNo">34928</span> oi64data[it.oIndex] = ox;<a name="line.34928"></a>
<span class="sourceLineNo">34929</span> }<a name="line.34929"></a>
<span class="sourceLineNo">34930</span> } else {<a name="line.34930"></a>
<span class="sourceLineNo">34931</span> while (it.hasNext()) {<a name="line.34931"></a>
<span class="sourceLineNo">34932</span> final long ix = it.aLong;<a name="line.34932"></a>
<span class="sourceLineNo">34933</span> long ox;<a name="line.34933"></a>
<span class="sourceLineNo">34934</span> if (ix &lt; pax)<a name="line.34934"></a>
<span class="sourceLineNo">34935</span> ox = toLong(pax);<a name="line.34935"></a>
<span class="sourceLineNo">34936</span> else<a name="line.34936"></a>
<span class="sourceLineNo">34937</span> ox = toLong(ix);<a name="line.34937"></a>
<span class="sourceLineNo">34938</span> oi64data[it.oIndex] = ox;<a name="line.34938"></a>
<span class="sourceLineNo">34939</span> }<a name="line.34939"></a>
<span class="sourceLineNo">34940</span> }<a name="line.34940"></a>
<span class="sourceLineNo">34941</span> break;<a name="line.34941"></a>
<span class="sourceLineNo">34942</span> case Dataset.INT32:<a name="line.34942"></a>
<span class="sourceLineNo">34943</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.34943"></a>
<span class="sourceLineNo">34944</span> if (it.isOutputDouble()) {<a name="line.34944"></a>
<span class="sourceLineNo">34945</span> while (it.hasNext()) {<a name="line.34945"></a>
<span class="sourceLineNo">34946</span> final double ix = it.aDouble;<a name="line.34946"></a>
<span class="sourceLineNo">34947</span> int ox;<a name="line.34947"></a>
<span class="sourceLineNo">34948</span> if (ix &lt; pax)<a name="line.34948"></a>
<span class="sourceLineNo">34949</span> ox = (int) toLong(pax);<a name="line.34949"></a>
<span class="sourceLineNo">34950</span> else<a name="line.34950"></a>
<span class="sourceLineNo">34951</span> ox = (int) toLong(ix);<a name="line.34951"></a>
<span class="sourceLineNo">34952</span> oi32data[it.oIndex] = ox;<a name="line.34952"></a>
<span class="sourceLineNo">34953</span> }<a name="line.34953"></a>
<span class="sourceLineNo">34954</span> } else {<a name="line.34954"></a>
<span class="sourceLineNo">34955</span> while (it.hasNext()) {<a name="line.34955"></a>
<span class="sourceLineNo">34956</span> final long ix = it.aLong;<a name="line.34956"></a>
<span class="sourceLineNo">34957</span> int ox;<a name="line.34957"></a>
<span class="sourceLineNo">34958</span> if (ix &lt; pax)<a name="line.34958"></a>
<span class="sourceLineNo">34959</span> ox = (int) toLong(pax);<a name="line.34959"></a>
<span class="sourceLineNo">34960</span> else<a name="line.34960"></a>
<span class="sourceLineNo">34961</span> ox = (int) toLong(ix);<a name="line.34961"></a>
<span class="sourceLineNo">34962</span> oi32data[it.oIndex] = ox;<a name="line.34962"></a>
<span class="sourceLineNo">34963</span> }<a name="line.34963"></a>
<span class="sourceLineNo">34964</span> }<a name="line.34964"></a>
<span class="sourceLineNo">34965</span> break;<a name="line.34965"></a>
<span class="sourceLineNo">34966</span> case Dataset.ARRAYINT8:<a name="line.34966"></a>
<span class="sourceLineNo">34967</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.34967"></a>
<span class="sourceLineNo">34968</span> if (is == 1) {<a name="line.34968"></a>
<span class="sourceLineNo">34969</span> if (it.isOutputDouble()) {<a name="line.34969"></a>
<span class="sourceLineNo">34970</span> while (it.hasNext()) {<a name="line.34970"></a>
<span class="sourceLineNo">34971</span> final double ix = it.aDouble;<a name="line.34971"></a>
<span class="sourceLineNo">34972</span> byte ox;<a name="line.34972"></a>
<span class="sourceLineNo">34973</span> if (ix &lt; pax)<a name="line.34973"></a>
<span class="sourceLineNo">34974</span> ox = (byte) toLong(pax);<a name="line.34974"></a>
<span class="sourceLineNo">34975</span> else<a name="line.34975"></a>
<span class="sourceLineNo">34976</span> ox = (byte) toLong(ix);<a name="line.34976"></a>
<span class="sourceLineNo">34977</span> oai8data[it.oIndex] = ox;<a name="line.34977"></a>
<span class="sourceLineNo">34978</span> }<a name="line.34978"></a>
<span class="sourceLineNo">34979</span> } else {<a name="line.34979"></a>
<span class="sourceLineNo">34980</span> while (it.hasNext()) {<a name="line.34980"></a>
<span class="sourceLineNo">34981</span> final long ix = it.aLong;<a name="line.34981"></a>
<span class="sourceLineNo">34982</span> byte ox;<a name="line.34982"></a>
<span class="sourceLineNo">34983</span> if (ix &lt; pax)<a name="line.34983"></a>
<span class="sourceLineNo">34984</span> ox = (byte) toLong(pax);<a name="line.34984"></a>
<span class="sourceLineNo">34985</span> else<a name="line.34985"></a>
<span class="sourceLineNo">34986</span> ox = (byte) toLong(ix);<a name="line.34986"></a>
<span class="sourceLineNo">34987</span> oai8data[it.oIndex] = ox;<a name="line.34987"></a>
<span class="sourceLineNo">34988</span> }<a name="line.34988"></a>
<span class="sourceLineNo">34989</span> }<a name="line.34989"></a>
<span class="sourceLineNo">34990</span> } else if (as == 1) {<a name="line.34990"></a>
<span class="sourceLineNo">34991</span> if (it.isOutputDouble()) {<a name="line.34991"></a>
<span class="sourceLineNo">34992</span> while (it.hasNext()) {<a name="line.34992"></a>
<span class="sourceLineNo">34993</span> final double ix = it.aDouble;<a name="line.34993"></a>
<span class="sourceLineNo">34994</span> byte ox;<a name="line.34994"></a>
<span class="sourceLineNo">34995</span> if (ix &lt; pax)<a name="line.34995"></a>
<span class="sourceLineNo">34996</span> ox = (byte) toLong(pax);<a name="line.34996"></a>
<span class="sourceLineNo">34997</span> else<a name="line.34997"></a>
<span class="sourceLineNo">34998</span> ox = (byte) toLong(ix);<a name="line.34998"></a>
<span class="sourceLineNo">34999</span> for (int j = 0; j &lt; is; j++) {<a name="line.34999"></a>
<span class="sourceLineNo">35000</span> oai8data[it.oIndex + j] = ox;<a name="line.35000"></a>
<span class="sourceLineNo">35001</span> }<a name="line.35001"></a>
<span class="sourceLineNo">35002</span> }<a name="line.35002"></a>
<span class="sourceLineNo">35003</span> } else {<a name="line.35003"></a>
<span class="sourceLineNo">35004</span> while (it.hasNext()) {<a name="line.35004"></a>
<span class="sourceLineNo">35005</span> final long ix = it.aLong;<a name="line.35005"></a>
<span class="sourceLineNo">35006</span> byte ox;<a name="line.35006"></a>
<span class="sourceLineNo">35007</span> if (ix &lt; pax)<a name="line.35007"></a>
<span class="sourceLineNo">35008</span> ox = (byte) toLong(pax);<a name="line.35008"></a>
<span class="sourceLineNo">35009</span> else<a name="line.35009"></a>
<span class="sourceLineNo">35010</span> ox = (byte) toLong(ix);<a name="line.35010"></a>
<span class="sourceLineNo">35011</span> for (int j = 0; j &lt; is; j++) {<a name="line.35011"></a>
<span class="sourceLineNo">35012</span> oai8data[it.oIndex + j] = ox;<a name="line.35012"></a>
<span class="sourceLineNo">35013</span> }<a name="line.35013"></a>
<span class="sourceLineNo">35014</span> }<a name="line.35014"></a>
<span class="sourceLineNo">35015</span> }<a name="line.35015"></a>
<span class="sourceLineNo">35016</span> } else {<a name="line.35016"></a>
<span class="sourceLineNo">35017</span> if (it.isOutputDouble()) {<a name="line.35017"></a>
<span class="sourceLineNo">35018</span> while (it.hasNext()) {<a name="line.35018"></a>
<span class="sourceLineNo">35019</span> for (int j = 0; j &lt; is; j++) {<a name="line.35019"></a>
<span class="sourceLineNo">35020</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.35020"></a>
<span class="sourceLineNo">35021</span> byte ox;<a name="line.35021"></a>
<span class="sourceLineNo">35022</span> if (ix &lt; pax)<a name="line.35022"></a>
<span class="sourceLineNo">35023</span> ox = (byte) toLong(pax);<a name="line.35023"></a>
<span class="sourceLineNo">35024</span> else<a name="line.35024"></a>
<span class="sourceLineNo">35025</span> ox = (byte) toLong(ix);<a name="line.35025"></a>
<span class="sourceLineNo">35026</span> oai8data[it.oIndex + j] = ox;<a name="line.35026"></a>
<span class="sourceLineNo">35027</span> }<a name="line.35027"></a>
<span class="sourceLineNo">35028</span> }<a name="line.35028"></a>
<span class="sourceLineNo">35029</span> } else {<a name="line.35029"></a>
<span class="sourceLineNo">35030</span> while (it.hasNext()) {<a name="line.35030"></a>
<span class="sourceLineNo">35031</span> for (int j = 0; j &lt; is; j++) {<a name="line.35031"></a>
<span class="sourceLineNo">35032</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.35032"></a>
<span class="sourceLineNo">35033</span> byte ox;<a name="line.35033"></a>
<span class="sourceLineNo">35034</span> if (ix &lt; pax)<a name="line.35034"></a>
<span class="sourceLineNo">35035</span> ox = (byte) toLong(pax);<a name="line.35035"></a>
<span class="sourceLineNo">35036</span> else<a name="line.35036"></a>
<span class="sourceLineNo">35037</span> ox = (byte) toLong(ix);<a name="line.35037"></a>
<span class="sourceLineNo">35038</span> oai8data[it.oIndex + j] = ox;<a name="line.35038"></a>
<span class="sourceLineNo">35039</span> }<a name="line.35039"></a>
<span class="sourceLineNo">35040</span> }<a name="line.35040"></a>
<span class="sourceLineNo">35041</span> }<a name="line.35041"></a>
<span class="sourceLineNo">35042</span> }<a name="line.35042"></a>
<span class="sourceLineNo">35043</span> break;<a name="line.35043"></a>
<span class="sourceLineNo">35044</span> case Dataset.ARRAYINT16:<a name="line.35044"></a>
<span class="sourceLineNo">35045</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.35045"></a>
<span class="sourceLineNo">35046</span> if (is == 1) {<a name="line.35046"></a>
<span class="sourceLineNo">35047</span> if (it.isOutputDouble()) {<a name="line.35047"></a>
<span class="sourceLineNo">35048</span> while (it.hasNext()) {<a name="line.35048"></a>
<span class="sourceLineNo">35049</span> final double ix = it.aDouble;<a name="line.35049"></a>
<span class="sourceLineNo">35050</span> short ox;<a name="line.35050"></a>
<span class="sourceLineNo">35051</span> if (ix &lt; pax)<a name="line.35051"></a>
<span class="sourceLineNo">35052</span> ox = (short) toLong(pax);<a name="line.35052"></a>
<span class="sourceLineNo">35053</span> else<a name="line.35053"></a>
<span class="sourceLineNo">35054</span> ox = (short) toLong(ix);<a name="line.35054"></a>
<span class="sourceLineNo">35055</span> oai16data[it.oIndex] = ox;<a name="line.35055"></a>
<span class="sourceLineNo">35056</span> }<a name="line.35056"></a>
<span class="sourceLineNo">35057</span> } else {<a name="line.35057"></a>
<span class="sourceLineNo">35058</span> while (it.hasNext()) {<a name="line.35058"></a>
<span class="sourceLineNo">35059</span> final long ix = it.aLong;<a name="line.35059"></a>
<span class="sourceLineNo">35060</span> short ox;<a name="line.35060"></a>
<span class="sourceLineNo">35061</span> if (ix &lt; pax)<a name="line.35061"></a>
<span class="sourceLineNo">35062</span> ox = (short) toLong(pax);<a name="line.35062"></a>
<span class="sourceLineNo">35063</span> else<a name="line.35063"></a>
<span class="sourceLineNo">35064</span> ox = (short) toLong(ix);<a name="line.35064"></a>
<span class="sourceLineNo">35065</span> oai16data[it.oIndex] = ox;<a name="line.35065"></a>
<span class="sourceLineNo">35066</span> }<a name="line.35066"></a>
<span class="sourceLineNo">35067</span> }<a name="line.35067"></a>
<span class="sourceLineNo">35068</span> } else if (as == 1) {<a name="line.35068"></a>
<span class="sourceLineNo">35069</span> if (it.isOutputDouble()) {<a name="line.35069"></a>
<span class="sourceLineNo">35070</span> while (it.hasNext()) {<a name="line.35070"></a>
<span class="sourceLineNo">35071</span> final double ix = it.aDouble;<a name="line.35071"></a>
<span class="sourceLineNo">35072</span> short ox;<a name="line.35072"></a>
<span class="sourceLineNo">35073</span> if (ix &lt; pax)<a name="line.35073"></a>
<span class="sourceLineNo">35074</span> ox = (short) toLong(pax);<a name="line.35074"></a>
<span class="sourceLineNo">35075</span> else<a name="line.35075"></a>
<span class="sourceLineNo">35076</span> ox = (short) toLong(ix);<a name="line.35076"></a>
<span class="sourceLineNo">35077</span> for (int j = 0; j &lt; is; j++) {<a name="line.35077"></a>
<span class="sourceLineNo">35078</span> oai16data[it.oIndex + j] = ox;<a name="line.35078"></a>
<span class="sourceLineNo">35079</span> }<a name="line.35079"></a>
<span class="sourceLineNo">35080</span> }<a name="line.35080"></a>
<span class="sourceLineNo">35081</span> } else {<a name="line.35081"></a>
<span class="sourceLineNo">35082</span> while (it.hasNext()) {<a name="line.35082"></a>
<span class="sourceLineNo">35083</span> final long ix = it.aLong;<a name="line.35083"></a>
<span class="sourceLineNo">35084</span> short ox;<a name="line.35084"></a>
<span class="sourceLineNo">35085</span> if (ix &lt; pax)<a name="line.35085"></a>
<span class="sourceLineNo">35086</span> ox = (short) toLong(pax);<a name="line.35086"></a>
<span class="sourceLineNo">35087</span> else<a name="line.35087"></a>
<span class="sourceLineNo">35088</span> ox = (short) toLong(ix);<a name="line.35088"></a>
<span class="sourceLineNo">35089</span> for (int j = 0; j &lt; is; j++) {<a name="line.35089"></a>
<span class="sourceLineNo">35090</span> oai16data[it.oIndex + j] = ox;<a name="line.35090"></a>
<span class="sourceLineNo">35091</span> }<a name="line.35091"></a>
<span class="sourceLineNo">35092</span> }<a name="line.35092"></a>
<span class="sourceLineNo">35093</span> }<a name="line.35093"></a>
<span class="sourceLineNo">35094</span> } else {<a name="line.35094"></a>
<span class="sourceLineNo">35095</span> if (it.isOutputDouble()) {<a name="line.35095"></a>
<span class="sourceLineNo">35096</span> while (it.hasNext()) {<a name="line.35096"></a>
<span class="sourceLineNo">35097</span> for (int j = 0; j &lt; is; j++) {<a name="line.35097"></a>
<span class="sourceLineNo">35098</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.35098"></a>
<span class="sourceLineNo">35099</span> short ox;<a name="line.35099"></a>
<span class="sourceLineNo">35100</span> if (ix &lt; pax)<a name="line.35100"></a>
<span class="sourceLineNo">35101</span> ox = (short) toLong(pax);<a name="line.35101"></a>
<span class="sourceLineNo">35102</span> else<a name="line.35102"></a>
<span class="sourceLineNo">35103</span> ox = (short) toLong(ix);<a name="line.35103"></a>
<span class="sourceLineNo">35104</span> oai16data[it.oIndex + j] = ox;<a name="line.35104"></a>
<span class="sourceLineNo">35105</span> }<a name="line.35105"></a>
<span class="sourceLineNo">35106</span> }<a name="line.35106"></a>
<span class="sourceLineNo">35107</span> } else {<a name="line.35107"></a>
<span class="sourceLineNo">35108</span> while (it.hasNext()) {<a name="line.35108"></a>
<span class="sourceLineNo">35109</span> for (int j = 0; j &lt; is; j++) {<a name="line.35109"></a>
<span class="sourceLineNo">35110</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.35110"></a>
<span class="sourceLineNo">35111</span> short ox;<a name="line.35111"></a>
<span class="sourceLineNo">35112</span> if (ix &lt; pax)<a name="line.35112"></a>
<span class="sourceLineNo">35113</span> ox = (short) toLong(pax);<a name="line.35113"></a>
<span class="sourceLineNo">35114</span> else<a name="line.35114"></a>
<span class="sourceLineNo">35115</span> ox = (short) toLong(ix);<a name="line.35115"></a>
<span class="sourceLineNo">35116</span> oai16data[it.oIndex + j] = ox;<a name="line.35116"></a>
<span class="sourceLineNo">35117</span> }<a name="line.35117"></a>
<span class="sourceLineNo">35118</span> }<a name="line.35118"></a>
<span class="sourceLineNo">35119</span> }<a name="line.35119"></a>
<span class="sourceLineNo">35120</span> }<a name="line.35120"></a>
<span class="sourceLineNo">35121</span> break;<a name="line.35121"></a>
<span class="sourceLineNo">35122</span> case Dataset.ARRAYINT64:<a name="line.35122"></a>
<span class="sourceLineNo">35123</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.35123"></a>
<span class="sourceLineNo">35124</span> if (is == 1) {<a name="line.35124"></a>
<span class="sourceLineNo">35125</span> if (it.isOutputDouble()) {<a name="line.35125"></a>
<span class="sourceLineNo">35126</span> while (it.hasNext()) {<a name="line.35126"></a>
<span class="sourceLineNo">35127</span> final double ix = it.aDouble;<a name="line.35127"></a>
<span class="sourceLineNo">35128</span> long ox;<a name="line.35128"></a>
<span class="sourceLineNo">35129</span> if (ix &lt; pax)<a name="line.35129"></a>
<span class="sourceLineNo">35130</span> ox = toLong(pax);<a name="line.35130"></a>
<span class="sourceLineNo">35131</span> else<a name="line.35131"></a>
<span class="sourceLineNo">35132</span> ox = toLong(ix);<a name="line.35132"></a>
<span class="sourceLineNo">35133</span> oai64data[it.oIndex] = ox;<a name="line.35133"></a>
<span class="sourceLineNo">35134</span> }<a name="line.35134"></a>
<span class="sourceLineNo">35135</span> } else {<a name="line.35135"></a>
<span class="sourceLineNo">35136</span> while (it.hasNext()) {<a name="line.35136"></a>
<span class="sourceLineNo">35137</span> final long ix = it.aLong;<a name="line.35137"></a>
<span class="sourceLineNo">35138</span> long ox;<a name="line.35138"></a>
<span class="sourceLineNo">35139</span> if (ix &lt; pax)<a name="line.35139"></a>
<span class="sourceLineNo">35140</span> ox = toLong(pax);<a name="line.35140"></a>
<span class="sourceLineNo">35141</span> else<a name="line.35141"></a>
<span class="sourceLineNo">35142</span> ox = toLong(ix);<a name="line.35142"></a>
<span class="sourceLineNo">35143</span> oai64data[it.oIndex] = ox;<a name="line.35143"></a>
<span class="sourceLineNo">35144</span> }<a name="line.35144"></a>
<span class="sourceLineNo">35145</span> }<a name="line.35145"></a>
<span class="sourceLineNo">35146</span> } else if (as == 1) {<a name="line.35146"></a>
<span class="sourceLineNo">35147</span> if (it.isOutputDouble()) {<a name="line.35147"></a>
<span class="sourceLineNo">35148</span> while (it.hasNext()) {<a name="line.35148"></a>
<span class="sourceLineNo">35149</span> final double ix = it.aDouble;<a name="line.35149"></a>
<span class="sourceLineNo">35150</span> long ox;<a name="line.35150"></a>
<span class="sourceLineNo">35151</span> if (ix &lt; pax)<a name="line.35151"></a>
<span class="sourceLineNo">35152</span> ox = toLong(pax);<a name="line.35152"></a>
<span class="sourceLineNo">35153</span> else<a name="line.35153"></a>
<span class="sourceLineNo">35154</span> ox = toLong(ix);<a name="line.35154"></a>
<span class="sourceLineNo">35155</span> for (int j = 0; j &lt; is; j++) {<a name="line.35155"></a>
<span class="sourceLineNo">35156</span> oai64data[it.oIndex + j] = ox;<a name="line.35156"></a>
<span class="sourceLineNo">35157</span> }<a name="line.35157"></a>
<span class="sourceLineNo">35158</span> }<a name="line.35158"></a>
<span class="sourceLineNo">35159</span> } else {<a name="line.35159"></a>
<span class="sourceLineNo">35160</span> while (it.hasNext()) {<a name="line.35160"></a>
<span class="sourceLineNo">35161</span> final long ix = it.aLong;<a name="line.35161"></a>
<span class="sourceLineNo">35162</span> long ox;<a name="line.35162"></a>
<span class="sourceLineNo">35163</span> if (ix &lt; pax)<a name="line.35163"></a>
<span class="sourceLineNo">35164</span> ox = toLong(pax);<a name="line.35164"></a>
<span class="sourceLineNo">35165</span> else<a name="line.35165"></a>
<span class="sourceLineNo">35166</span> ox = toLong(ix);<a name="line.35166"></a>
<span class="sourceLineNo">35167</span> for (int j = 0; j &lt; is; j++) {<a name="line.35167"></a>
<span class="sourceLineNo">35168</span> oai64data[it.oIndex + j] = ox;<a name="line.35168"></a>
<span class="sourceLineNo">35169</span> }<a name="line.35169"></a>
<span class="sourceLineNo">35170</span> }<a name="line.35170"></a>
<span class="sourceLineNo">35171</span> }<a name="line.35171"></a>
<span class="sourceLineNo">35172</span> } else {<a name="line.35172"></a>
<span class="sourceLineNo">35173</span> if (it.isOutputDouble()) {<a name="line.35173"></a>
<span class="sourceLineNo">35174</span> while (it.hasNext()) {<a name="line.35174"></a>
<span class="sourceLineNo">35175</span> for (int j = 0; j &lt; is; j++) {<a name="line.35175"></a>
<span class="sourceLineNo">35176</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.35176"></a>
<span class="sourceLineNo">35177</span> long ox;<a name="line.35177"></a>
<span class="sourceLineNo">35178</span> if (ix &lt; pax)<a name="line.35178"></a>
<span class="sourceLineNo">35179</span> ox = toLong(pax);<a name="line.35179"></a>
<span class="sourceLineNo">35180</span> else<a name="line.35180"></a>
<span class="sourceLineNo">35181</span> ox = toLong(ix);<a name="line.35181"></a>
<span class="sourceLineNo">35182</span> oai64data[it.oIndex + j] = ox;<a name="line.35182"></a>
<span class="sourceLineNo">35183</span> }<a name="line.35183"></a>
<span class="sourceLineNo">35184</span> }<a name="line.35184"></a>
<span class="sourceLineNo">35185</span> } else {<a name="line.35185"></a>
<span class="sourceLineNo">35186</span> while (it.hasNext()) {<a name="line.35186"></a>
<span class="sourceLineNo">35187</span> for (int j = 0; j &lt; is; j++) {<a name="line.35187"></a>
<span class="sourceLineNo">35188</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.35188"></a>
<span class="sourceLineNo">35189</span> long ox;<a name="line.35189"></a>
<span class="sourceLineNo">35190</span> if (ix &lt; pax)<a name="line.35190"></a>
<span class="sourceLineNo">35191</span> ox = toLong(pax);<a name="line.35191"></a>
<span class="sourceLineNo">35192</span> else<a name="line.35192"></a>
<span class="sourceLineNo">35193</span> ox = toLong(ix);<a name="line.35193"></a>
<span class="sourceLineNo">35194</span> oai64data[it.oIndex + j] = ox;<a name="line.35194"></a>
<span class="sourceLineNo">35195</span> }<a name="line.35195"></a>
<span class="sourceLineNo">35196</span> }<a name="line.35196"></a>
<span class="sourceLineNo">35197</span> }<a name="line.35197"></a>
<span class="sourceLineNo">35198</span> }<a name="line.35198"></a>
<span class="sourceLineNo">35199</span> break;<a name="line.35199"></a>
<span class="sourceLineNo">35200</span> case Dataset.ARRAYINT32:<a name="line.35200"></a>
<span class="sourceLineNo">35201</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.35201"></a>
<span class="sourceLineNo">35202</span> if (is == 1) {<a name="line.35202"></a>
<span class="sourceLineNo">35203</span> if (it.isOutputDouble()) {<a name="line.35203"></a>
<span class="sourceLineNo">35204</span> while (it.hasNext()) {<a name="line.35204"></a>
<span class="sourceLineNo">35205</span> final double ix = it.aDouble;<a name="line.35205"></a>
<span class="sourceLineNo">35206</span> int ox;<a name="line.35206"></a>
<span class="sourceLineNo">35207</span> if (ix &lt; pax)<a name="line.35207"></a>
<span class="sourceLineNo">35208</span> ox = (int) toLong(pax);<a name="line.35208"></a>
<span class="sourceLineNo">35209</span> else<a name="line.35209"></a>
<span class="sourceLineNo">35210</span> ox = (int) toLong(ix);<a name="line.35210"></a>
<span class="sourceLineNo">35211</span> oai32data[it.oIndex] = ox;<a name="line.35211"></a>
<span class="sourceLineNo">35212</span> }<a name="line.35212"></a>
<span class="sourceLineNo">35213</span> } else {<a name="line.35213"></a>
<span class="sourceLineNo">35214</span> while (it.hasNext()) {<a name="line.35214"></a>
<span class="sourceLineNo">35215</span> final long ix = it.aLong;<a name="line.35215"></a>
<span class="sourceLineNo">35216</span> int ox;<a name="line.35216"></a>
<span class="sourceLineNo">35217</span> if (ix &lt; pax)<a name="line.35217"></a>
<span class="sourceLineNo">35218</span> ox = (int) toLong(pax);<a name="line.35218"></a>
<span class="sourceLineNo">35219</span> else<a name="line.35219"></a>
<span class="sourceLineNo">35220</span> ox = (int) toLong(ix);<a name="line.35220"></a>
<span class="sourceLineNo">35221</span> oai32data[it.oIndex] = ox;<a name="line.35221"></a>
<span class="sourceLineNo">35222</span> }<a name="line.35222"></a>
<span class="sourceLineNo">35223</span> }<a name="line.35223"></a>
<span class="sourceLineNo">35224</span> } else if (as == 1) {<a name="line.35224"></a>
<span class="sourceLineNo">35225</span> if (it.isOutputDouble()) {<a name="line.35225"></a>
<span class="sourceLineNo">35226</span> while (it.hasNext()) {<a name="line.35226"></a>
<span class="sourceLineNo">35227</span> final double ix = it.aDouble;<a name="line.35227"></a>
<span class="sourceLineNo">35228</span> int ox;<a name="line.35228"></a>
<span class="sourceLineNo">35229</span> if (ix &lt; pax)<a name="line.35229"></a>
<span class="sourceLineNo">35230</span> ox = (int) toLong(pax);<a name="line.35230"></a>
<span class="sourceLineNo">35231</span> else<a name="line.35231"></a>
<span class="sourceLineNo">35232</span> ox = (int) toLong(ix);<a name="line.35232"></a>
<span class="sourceLineNo">35233</span> for (int j = 0; j &lt; is; j++) {<a name="line.35233"></a>
<span class="sourceLineNo">35234</span> oai32data[it.oIndex + j] = ox;<a name="line.35234"></a>
<span class="sourceLineNo">35235</span> }<a name="line.35235"></a>
<span class="sourceLineNo">35236</span> }<a name="line.35236"></a>
<span class="sourceLineNo">35237</span> } else {<a name="line.35237"></a>
<span class="sourceLineNo">35238</span> while (it.hasNext()) {<a name="line.35238"></a>
<span class="sourceLineNo">35239</span> final long ix = it.aLong;<a name="line.35239"></a>
<span class="sourceLineNo">35240</span> int ox;<a name="line.35240"></a>
<span class="sourceLineNo">35241</span> if (ix &lt; pax)<a name="line.35241"></a>
<span class="sourceLineNo">35242</span> ox = (int) toLong(pax);<a name="line.35242"></a>
<span class="sourceLineNo">35243</span> else<a name="line.35243"></a>
<span class="sourceLineNo">35244</span> ox = (int) toLong(ix);<a name="line.35244"></a>
<span class="sourceLineNo">35245</span> for (int j = 0; j &lt; is; j++) {<a name="line.35245"></a>
<span class="sourceLineNo">35246</span> oai32data[it.oIndex + j] = ox;<a name="line.35246"></a>
<span class="sourceLineNo">35247</span> }<a name="line.35247"></a>
<span class="sourceLineNo">35248</span> }<a name="line.35248"></a>
<span class="sourceLineNo">35249</span> }<a name="line.35249"></a>
<span class="sourceLineNo">35250</span> } else {<a name="line.35250"></a>
<span class="sourceLineNo">35251</span> if (it.isOutputDouble()) {<a name="line.35251"></a>
<span class="sourceLineNo">35252</span> while (it.hasNext()) {<a name="line.35252"></a>
<span class="sourceLineNo">35253</span> for (int j = 0; j &lt; is; j++) {<a name="line.35253"></a>
<span class="sourceLineNo">35254</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.35254"></a>
<span class="sourceLineNo">35255</span> int ox;<a name="line.35255"></a>
<span class="sourceLineNo">35256</span> if (ix &lt; pax)<a name="line.35256"></a>
<span class="sourceLineNo">35257</span> ox = (int) toLong(pax);<a name="line.35257"></a>
<span class="sourceLineNo">35258</span> else<a name="line.35258"></a>
<span class="sourceLineNo">35259</span> ox = (int) toLong(ix);<a name="line.35259"></a>
<span class="sourceLineNo">35260</span> oai32data[it.oIndex + j] = ox;<a name="line.35260"></a>
<span class="sourceLineNo">35261</span> }<a name="line.35261"></a>
<span class="sourceLineNo">35262</span> }<a name="line.35262"></a>
<span class="sourceLineNo">35263</span> } else {<a name="line.35263"></a>
<span class="sourceLineNo">35264</span> while (it.hasNext()) {<a name="line.35264"></a>
<span class="sourceLineNo">35265</span> for (int j = 0; j &lt; is; j++) {<a name="line.35265"></a>
<span class="sourceLineNo">35266</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.35266"></a>
<span class="sourceLineNo">35267</span> int ox;<a name="line.35267"></a>
<span class="sourceLineNo">35268</span> if (ix &lt; pax)<a name="line.35268"></a>
<span class="sourceLineNo">35269</span> ox = (int) toLong(pax);<a name="line.35269"></a>
<span class="sourceLineNo">35270</span> else<a name="line.35270"></a>
<span class="sourceLineNo">35271</span> ox = (int) toLong(ix);<a name="line.35271"></a>
<span class="sourceLineNo">35272</span> oai32data[it.oIndex + j] = ox;<a name="line.35272"></a>
<span class="sourceLineNo">35273</span> }<a name="line.35273"></a>
<span class="sourceLineNo">35274</span> }<a name="line.35274"></a>
<span class="sourceLineNo">35275</span> }<a name="line.35275"></a>
<span class="sourceLineNo">35276</span> }<a name="line.35276"></a>
<span class="sourceLineNo">35277</span> break;<a name="line.35277"></a>
<span class="sourceLineNo">35278</span> case Dataset.FLOAT32:<a name="line.35278"></a>
<span class="sourceLineNo">35279</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.35279"></a>
<span class="sourceLineNo">35280</span> if (it.isOutputDouble()) {<a name="line.35280"></a>
<span class="sourceLineNo">35281</span> while (it.hasNext()) {<a name="line.35281"></a>
<span class="sourceLineNo">35282</span> final double ix = it.aDouble;<a name="line.35282"></a>
<span class="sourceLineNo">35283</span> float ox;<a name="line.35283"></a>
<span class="sourceLineNo">35284</span> if (ix &lt; pax)<a name="line.35284"></a>
<span class="sourceLineNo">35285</span> ox = (float) (pax);<a name="line.35285"></a>
<span class="sourceLineNo">35286</span> else<a name="line.35286"></a>
<span class="sourceLineNo">35287</span> ox = (float) (ix);<a name="line.35287"></a>
<span class="sourceLineNo">35288</span> of32data[it.oIndex] = ox;<a name="line.35288"></a>
<span class="sourceLineNo">35289</span> }<a name="line.35289"></a>
<span class="sourceLineNo">35290</span> } else {<a name="line.35290"></a>
<span class="sourceLineNo">35291</span> while (it.hasNext()) {<a name="line.35291"></a>
<span class="sourceLineNo">35292</span> final long ix = it.aLong;<a name="line.35292"></a>
<span class="sourceLineNo">35293</span> float ox;<a name="line.35293"></a>
<span class="sourceLineNo">35294</span> if (ix &lt; pax)<a name="line.35294"></a>
<span class="sourceLineNo">35295</span> ox = (float) (pax);<a name="line.35295"></a>
<span class="sourceLineNo">35296</span> else<a name="line.35296"></a>
<span class="sourceLineNo">35297</span> ox = (ix);<a name="line.35297"></a>
<span class="sourceLineNo">35298</span> of32data[it.oIndex] = ox;<a name="line.35298"></a>
<span class="sourceLineNo">35299</span> }<a name="line.35299"></a>
<span class="sourceLineNo">35300</span> }<a name="line.35300"></a>
<span class="sourceLineNo">35301</span> break;<a name="line.35301"></a>
<span class="sourceLineNo">35302</span> case Dataset.FLOAT64:<a name="line.35302"></a>
<span class="sourceLineNo">35303</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.35303"></a>
<span class="sourceLineNo">35304</span> if (it.isOutputDouble()) {<a name="line.35304"></a>
<span class="sourceLineNo">35305</span> while (it.hasNext()) {<a name="line.35305"></a>
<span class="sourceLineNo">35306</span> final double ix = it.aDouble;<a name="line.35306"></a>
<span class="sourceLineNo">35307</span> double ox;<a name="line.35307"></a>
<span class="sourceLineNo">35308</span> if (ix &lt; pax)<a name="line.35308"></a>
<span class="sourceLineNo">35309</span> ox = (pax);<a name="line.35309"></a>
<span class="sourceLineNo">35310</span> else<a name="line.35310"></a>
<span class="sourceLineNo">35311</span> ox = (ix);<a name="line.35311"></a>
<span class="sourceLineNo">35312</span> of64data[it.oIndex] = ox;<a name="line.35312"></a>
<span class="sourceLineNo">35313</span> }<a name="line.35313"></a>
<span class="sourceLineNo">35314</span> } else {<a name="line.35314"></a>
<span class="sourceLineNo">35315</span> while (it.hasNext()) {<a name="line.35315"></a>
<span class="sourceLineNo">35316</span> final long ix = it.aLong;<a name="line.35316"></a>
<span class="sourceLineNo">35317</span> double ox;<a name="line.35317"></a>
<span class="sourceLineNo">35318</span> if (ix &lt; pax)<a name="line.35318"></a>
<span class="sourceLineNo">35319</span> ox = (pax);<a name="line.35319"></a>
<span class="sourceLineNo">35320</span> else<a name="line.35320"></a>
<span class="sourceLineNo">35321</span> ox = (ix);<a name="line.35321"></a>
<span class="sourceLineNo">35322</span> of64data[it.oIndex] = ox;<a name="line.35322"></a>
<span class="sourceLineNo">35323</span> }<a name="line.35323"></a>
<span class="sourceLineNo">35324</span> }<a name="line.35324"></a>
<span class="sourceLineNo">35325</span> break;<a name="line.35325"></a>
<span class="sourceLineNo">35326</span> case Dataset.ARRAYFLOAT32:<a name="line.35326"></a>
<span class="sourceLineNo">35327</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.35327"></a>
<span class="sourceLineNo">35328</span> if (is == 1) {<a name="line.35328"></a>
<span class="sourceLineNo">35329</span> if (it.isOutputDouble()) {<a name="line.35329"></a>
<span class="sourceLineNo">35330</span> while (it.hasNext()) {<a name="line.35330"></a>
<span class="sourceLineNo">35331</span> final double ix = it.aDouble;<a name="line.35331"></a>
<span class="sourceLineNo">35332</span> float ox;<a name="line.35332"></a>
<span class="sourceLineNo">35333</span> if (ix &lt; pax)<a name="line.35333"></a>
<span class="sourceLineNo">35334</span> ox = (float) (pax);<a name="line.35334"></a>
<span class="sourceLineNo">35335</span> else<a name="line.35335"></a>
<span class="sourceLineNo">35336</span> ox = (float) (ix);<a name="line.35336"></a>
<span class="sourceLineNo">35337</span> oaf32data[it.oIndex] = ox;<a name="line.35337"></a>
<span class="sourceLineNo">35338</span> }<a name="line.35338"></a>
<span class="sourceLineNo">35339</span> } else {<a name="line.35339"></a>
<span class="sourceLineNo">35340</span> while (it.hasNext()) {<a name="line.35340"></a>
<span class="sourceLineNo">35341</span> final long ix = it.aLong;<a name="line.35341"></a>
<span class="sourceLineNo">35342</span> float ox;<a name="line.35342"></a>
<span class="sourceLineNo">35343</span> if (ix &lt; pax)<a name="line.35343"></a>
<span class="sourceLineNo">35344</span> ox = (float) (pax);<a name="line.35344"></a>
<span class="sourceLineNo">35345</span> else<a name="line.35345"></a>
<span class="sourceLineNo">35346</span> ox = (ix);<a name="line.35346"></a>
<span class="sourceLineNo">35347</span> oaf32data[it.oIndex] = ox;<a name="line.35347"></a>
<span class="sourceLineNo">35348</span> }<a name="line.35348"></a>
<span class="sourceLineNo">35349</span> }<a name="line.35349"></a>
<span class="sourceLineNo">35350</span> } else if (as == 1) {<a name="line.35350"></a>
<span class="sourceLineNo">35351</span> if (it.isOutputDouble()) {<a name="line.35351"></a>
<span class="sourceLineNo">35352</span> while (it.hasNext()) {<a name="line.35352"></a>
<span class="sourceLineNo">35353</span> final double ix = it.aDouble;<a name="line.35353"></a>
<span class="sourceLineNo">35354</span> float ox;<a name="line.35354"></a>
<span class="sourceLineNo">35355</span> if (ix &lt; pax)<a name="line.35355"></a>
<span class="sourceLineNo">35356</span> ox = (float) (pax);<a name="line.35356"></a>
<span class="sourceLineNo">35357</span> else<a name="line.35357"></a>
<span class="sourceLineNo">35358</span> ox = (float) (ix);<a name="line.35358"></a>
<span class="sourceLineNo">35359</span> for (int j = 0; j &lt; is; j++) {<a name="line.35359"></a>
<span class="sourceLineNo">35360</span> oaf32data[it.oIndex + j] = ox;<a name="line.35360"></a>
<span class="sourceLineNo">35361</span> }<a name="line.35361"></a>
<span class="sourceLineNo">35362</span> }<a name="line.35362"></a>
<span class="sourceLineNo">35363</span> } else {<a name="line.35363"></a>
<span class="sourceLineNo">35364</span> while (it.hasNext()) {<a name="line.35364"></a>
<span class="sourceLineNo">35365</span> final long ix = it.aLong;<a name="line.35365"></a>
<span class="sourceLineNo">35366</span> float ox;<a name="line.35366"></a>
<span class="sourceLineNo">35367</span> if (ix &lt; pax)<a name="line.35367"></a>
<span class="sourceLineNo">35368</span> ox = (float) (pax);<a name="line.35368"></a>
<span class="sourceLineNo">35369</span> else<a name="line.35369"></a>
<span class="sourceLineNo">35370</span> ox = (ix);<a name="line.35370"></a>
<span class="sourceLineNo">35371</span> for (int j = 0; j &lt; is; j++) {<a name="line.35371"></a>
<span class="sourceLineNo">35372</span> oaf32data[it.oIndex + j] = ox;<a name="line.35372"></a>
<span class="sourceLineNo">35373</span> }<a name="line.35373"></a>
<span class="sourceLineNo">35374</span> }<a name="line.35374"></a>
<span class="sourceLineNo">35375</span> }<a name="line.35375"></a>
<span class="sourceLineNo">35376</span> } else {<a name="line.35376"></a>
<span class="sourceLineNo">35377</span> if (it.isOutputDouble()) {<a name="line.35377"></a>
<span class="sourceLineNo">35378</span> while (it.hasNext()) {<a name="line.35378"></a>
<span class="sourceLineNo">35379</span> for (int j = 0; j &lt; is; j++) {<a name="line.35379"></a>
<span class="sourceLineNo">35380</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.35380"></a>
<span class="sourceLineNo">35381</span> float ox;<a name="line.35381"></a>
<span class="sourceLineNo">35382</span> if (ix &lt; pax)<a name="line.35382"></a>
<span class="sourceLineNo">35383</span> ox = (float) (pax);<a name="line.35383"></a>
<span class="sourceLineNo">35384</span> else<a name="line.35384"></a>
<span class="sourceLineNo">35385</span> ox = (float) (ix);<a name="line.35385"></a>
<span class="sourceLineNo">35386</span> oaf32data[it.oIndex + j] = ox;<a name="line.35386"></a>
<span class="sourceLineNo">35387</span> }<a name="line.35387"></a>
<span class="sourceLineNo">35388</span> }<a name="line.35388"></a>
<span class="sourceLineNo">35389</span> } else {<a name="line.35389"></a>
<span class="sourceLineNo">35390</span> while (it.hasNext()) {<a name="line.35390"></a>
<span class="sourceLineNo">35391</span> for (int j = 0; j &lt; is; j++) {<a name="line.35391"></a>
<span class="sourceLineNo">35392</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.35392"></a>
<span class="sourceLineNo">35393</span> float ox;<a name="line.35393"></a>
<span class="sourceLineNo">35394</span> if (ix &lt; pax)<a name="line.35394"></a>
<span class="sourceLineNo">35395</span> ox = (float) (pax);<a name="line.35395"></a>
<span class="sourceLineNo">35396</span> else<a name="line.35396"></a>
<span class="sourceLineNo">35397</span> ox = (ix);<a name="line.35397"></a>
<span class="sourceLineNo">35398</span> oaf32data[it.oIndex + j] = ox;<a name="line.35398"></a>
<span class="sourceLineNo">35399</span> }<a name="line.35399"></a>
<span class="sourceLineNo">35400</span> }<a name="line.35400"></a>
<span class="sourceLineNo">35401</span> }<a name="line.35401"></a>
<span class="sourceLineNo">35402</span> }<a name="line.35402"></a>
<span class="sourceLineNo">35403</span> break;<a name="line.35403"></a>
<span class="sourceLineNo">35404</span> case Dataset.ARRAYFLOAT64:<a name="line.35404"></a>
<span class="sourceLineNo">35405</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.35405"></a>
<span class="sourceLineNo">35406</span> if (is == 1) {<a name="line.35406"></a>
<span class="sourceLineNo">35407</span> if (it.isOutputDouble()) {<a name="line.35407"></a>
<span class="sourceLineNo">35408</span> while (it.hasNext()) {<a name="line.35408"></a>
<span class="sourceLineNo">35409</span> final double ix = it.aDouble;<a name="line.35409"></a>
<span class="sourceLineNo">35410</span> double ox;<a name="line.35410"></a>
<span class="sourceLineNo">35411</span> if (ix &lt; pax)<a name="line.35411"></a>
<span class="sourceLineNo">35412</span> ox = (pax);<a name="line.35412"></a>
<span class="sourceLineNo">35413</span> else<a name="line.35413"></a>
<span class="sourceLineNo">35414</span> ox = (ix);<a name="line.35414"></a>
<span class="sourceLineNo">35415</span> oaf64data[it.oIndex] = ox;<a name="line.35415"></a>
<span class="sourceLineNo">35416</span> }<a name="line.35416"></a>
<span class="sourceLineNo">35417</span> } else {<a name="line.35417"></a>
<span class="sourceLineNo">35418</span> while (it.hasNext()) {<a name="line.35418"></a>
<span class="sourceLineNo">35419</span> final long ix = it.aLong;<a name="line.35419"></a>
<span class="sourceLineNo">35420</span> double ox;<a name="line.35420"></a>
<span class="sourceLineNo">35421</span> if (ix &lt; pax)<a name="line.35421"></a>
<span class="sourceLineNo">35422</span> ox = (pax);<a name="line.35422"></a>
<span class="sourceLineNo">35423</span> else<a name="line.35423"></a>
<span class="sourceLineNo">35424</span> ox = (ix);<a name="line.35424"></a>
<span class="sourceLineNo">35425</span> oaf64data[it.oIndex] = ox;<a name="line.35425"></a>
<span class="sourceLineNo">35426</span> }<a name="line.35426"></a>
<span class="sourceLineNo">35427</span> }<a name="line.35427"></a>
<span class="sourceLineNo">35428</span> } else if (as == 1) {<a name="line.35428"></a>
<span class="sourceLineNo">35429</span> if (it.isOutputDouble()) {<a name="line.35429"></a>
<span class="sourceLineNo">35430</span> while (it.hasNext()) {<a name="line.35430"></a>
<span class="sourceLineNo">35431</span> final double ix = it.aDouble;<a name="line.35431"></a>
<span class="sourceLineNo">35432</span> double ox;<a name="line.35432"></a>
<span class="sourceLineNo">35433</span> if (ix &lt; pax)<a name="line.35433"></a>
<span class="sourceLineNo">35434</span> ox = (pax);<a name="line.35434"></a>
<span class="sourceLineNo">35435</span> else<a name="line.35435"></a>
<span class="sourceLineNo">35436</span> ox = (ix);<a name="line.35436"></a>
<span class="sourceLineNo">35437</span> for (int j = 0; j &lt; is; j++) {<a name="line.35437"></a>
<span class="sourceLineNo">35438</span> oaf64data[it.oIndex + j] = ox;<a name="line.35438"></a>
<span class="sourceLineNo">35439</span> }<a name="line.35439"></a>
<span class="sourceLineNo">35440</span> }<a name="line.35440"></a>
<span class="sourceLineNo">35441</span> } else {<a name="line.35441"></a>
<span class="sourceLineNo">35442</span> while (it.hasNext()) {<a name="line.35442"></a>
<span class="sourceLineNo">35443</span> final long ix = it.aLong;<a name="line.35443"></a>
<span class="sourceLineNo">35444</span> double ox;<a name="line.35444"></a>
<span class="sourceLineNo">35445</span> if (ix &lt; pax)<a name="line.35445"></a>
<span class="sourceLineNo">35446</span> ox = (pax);<a name="line.35446"></a>
<span class="sourceLineNo">35447</span> else<a name="line.35447"></a>
<span class="sourceLineNo">35448</span> ox = (ix);<a name="line.35448"></a>
<span class="sourceLineNo">35449</span> for (int j = 0; j &lt; is; j++) {<a name="line.35449"></a>
<span class="sourceLineNo">35450</span> oaf64data[it.oIndex + j] = ox;<a name="line.35450"></a>
<span class="sourceLineNo">35451</span> }<a name="line.35451"></a>
<span class="sourceLineNo">35452</span> }<a name="line.35452"></a>
<span class="sourceLineNo">35453</span> }<a name="line.35453"></a>
<span class="sourceLineNo">35454</span> } else {<a name="line.35454"></a>
<span class="sourceLineNo">35455</span> if (it.isOutputDouble()) {<a name="line.35455"></a>
<span class="sourceLineNo">35456</span> while (it.hasNext()) {<a name="line.35456"></a>
<span class="sourceLineNo">35457</span> for (int j = 0; j &lt; is; j++) {<a name="line.35457"></a>
<span class="sourceLineNo">35458</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.35458"></a>
<span class="sourceLineNo">35459</span> double ox;<a name="line.35459"></a>
<span class="sourceLineNo">35460</span> if (ix &lt; pax)<a name="line.35460"></a>
<span class="sourceLineNo">35461</span> ox = (pax);<a name="line.35461"></a>
<span class="sourceLineNo">35462</span> else<a name="line.35462"></a>
<span class="sourceLineNo">35463</span> ox = (ix);<a name="line.35463"></a>
<span class="sourceLineNo">35464</span> oaf64data[it.oIndex + j] = ox;<a name="line.35464"></a>
<span class="sourceLineNo">35465</span> }<a name="line.35465"></a>
<span class="sourceLineNo">35466</span> }<a name="line.35466"></a>
<span class="sourceLineNo">35467</span> } else {<a name="line.35467"></a>
<span class="sourceLineNo">35468</span> while (it.hasNext()) {<a name="line.35468"></a>
<span class="sourceLineNo">35469</span> for (int j = 0; j &lt; is; j++) {<a name="line.35469"></a>
<span class="sourceLineNo">35470</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.35470"></a>
<span class="sourceLineNo">35471</span> double ox;<a name="line.35471"></a>
<span class="sourceLineNo">35472</span> if (ix &lt; pax)<a name="line.35472"></a>
<span class="sourceLineNo">35473</span> ox = (pax);<a name="line.35473"></a>
<span class="sourceLineNo">35474</span> else<a name="line.35474"></a>
<span class="sourceLineNo">35475</span> ox = (ix);<a name="line.35475"></a>
<span class="sourceLineNo">35476</span> oaf64data[it.oIndex + j] = ox;<a name="line.35476"></a>
<span class="sourceLineNo">35477</span> }<a name="line.35477"></a>
<span class="sourceLineNo">35478</span> }<a name="line.35478"></a>
<span class="sourceLineNo">35479</span> }<a name="line.35479"></a>
<span class="sourceLineNo">35480</span> }<a name="line.35480"></a>
<span class="sourceLineNo">35481</span> break;<a name="line.35481"></a>
<span class="sourceLineNo">35482</span> default:<a name="line.35482"></a>
<span class="sourceLineNo">35483</span> throw new IllegalArgumentException("lowerClip supports integer, compound integer, real, compound real datasets only");<a name="line.35483"></a>
<span class="sourceLineNo">35484</span> }<a name="line.35484"></a>
<span class="sourceLineNo">35485</span><a name="line.35485"></a>
<span class="sourceLineNo">35486</span> addFunctionName(result, "lowerClip");<a name="line.35486"></a>
<span class="sourceLineNo">35487</span> return result;<a name="line.35487"></a>
<span class="sourceLineNo">35488</span> }<a name="line.35488"></a>
<span class="sourceLineNo">35489</span><a name="line.35489"></a>
<span class="sourceLineNo">35490</span> /**<a name="line.35490"></a>
<span class="sourceLineNo">35491</span> * upperClip - clip elements to upper limit<a name="line.35491"></a>
<span class="sourceLineNo">35492</span> * @param a<a name="line.35492"></a>
<span class="sourceLineNo">35493</span> * @param pa<a name="line.35493"></a>
<span class="sourceLineNo">35494</span> * @return dataset<a name="line.35494"></a>
<span class="sourceLineNo">35495</span> * @since 2.3<a name="line.35495"></a>
<span class="sourceLineNo">35496</span> */<a name="line.35496"></a>
<span class="sourceLineNo">35497</span> public static Dataset upperClip(final Object a, final Object pa) {<a name="line.35497"></a>
<span class="sourceLineNo">35498</span> return upperClip(a, null, pa);<a name="line.35498"></a>
<span class="sourceLineNo">35499</span> }<a name="line.35499"></a>
<span class="sourceLineNo">35500</span><a name="line.35500"></a>
<span class="sourceLineNo">35501</span> /**<a name="line.35501"></a>
<span class="sourceLineNo">35502</span> * upperClip - clip elements to upper limit<a name="line.35502"></a>
<span class="sourceLineNo">35503</span> * @param a<a name="line.35503"></a>
<span class="sourceLineNo">35504</span> * @param o output can be null - in which case, a new dataset is created<a name="line.35504"></a>
<span class="sourceLineNo">35505</span> * @param pa<a name="line.35505"></a>
<span class="sourceLineNo">35506</span> * @return dataset<a name="line.35506"></a>
<span class="sourceLineNo">35507</span> * @since 2.3<a name="line.35507"></a>
<span class="sourceLineNo">35508</span> */<a name="line.35508"></a>
<span class="sourceLineNo">35509</span> public static Dataset upperClip(final Object a, final Dataset o, final Object pa) {<a name="line.35509"></a>
<span class="sourceLineNo">35510</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.35510"></a>
<span class="sourceLineNo">35511</span> SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true);<a name="line.35511"></a>
<span class="sourceLineNo">35512</span> final Dataset result = it.getOutput();<a name="line.35512"></a>
<span class="sourceLineNo">35513</span> if (!result.isComplex()) {<a name="line.35513"></a>
<span class="sourceLineNo">35514</span> if (da.isComplex()) {<a name="line.35514"></a>
<span class="sourceLineNo">35515</span> da = da.getRealView();<a name="line.35515"></a>
<span class="sourceLineNo">35516</span> it = new SingleInputBroadcastIterator(da, result, true);<a name="line.35516"></a>
<span class="sourceLineNo">35517</span> }<a name="line.35517"></a>
<span class="sourceLineNo">35518</span> }<a name="line.35518"></a>
<span class="sourceLineNo">35519</span> final int is = result.getElementsPerItem();<a name="line.35519"></a>
<span class="sourceLineNo">35520</span> final int as = da.getElementsPerItem();<a name="line.35520"></a>
<span class="sourceLineNo">35521</span> final int dt = result.getDType();<a name="line.35521"></a>
<span class="sourceLineNo">35522</span> final double pax = DTypeUtils.toReal(pa);<a name="line.35522"></a>
<span class="sourceLineNo">35523</span><a name="line.35523"></a>
<span class="sourceLineNo">35524</span> switch(dt) {<a name="line.35524"></a>
<span class="sourceLineNo">35525</span> case Dataset.INT8:<a name="line.35525"></a>
<span class="sourceLineNo">35526</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.35526"></a>
<span class="sourceLineNo">35527</span> if (it.isOutputDouble()) {<a name="line.35527"></a>
<span class="sourceLineNo">35528</span> while (it.hasNext()) {<a name="line.35528"></a>
<span class="sourceLineNo">35529</span> final double ix = it.aDouble;<a name="line.35529"></a>
<span class="sourceLineNo">35530</span> byte ox;<a name="line.35530"></a>
<span class="sourceLineNo">35531</span> if (ix &gt; pax)<a name="line.35531"></a>
<span class="sourceLineNo">35532</span> ox = (byte) toLong(pax);<a name="line.35532"></a>
<span class="sourceLineNo">35533</span> else<a name="line.35533"></a>
<span class="sourceLineNo">35534</span> ox = (byte) toLong(ix);<a name="line.35534"></a>
<span class="sourceLineNo">35535</span> oi8data[it.oIndex] = ox;<a name="line.35535"></a>
<span class="sourceLineNo">35536</span> }<a name="line.35536"></a>
<span class="sourceLineNo">35537</span> } else {<a name="line.35537"></a>
<span class="sourceLineNo">35538</span> while (it.hasNext()) {<a name="line.35538"></a>
<span class="sourceLineNo">35539</span> final long ix = it.aLong;<a name="line.35539"></a>
<span class="sourceLineNo">35540</span> byte ox;<a name="line.35540"></a>
<span class="sourceLineNo">35541</span> if (ix &gt; pax)<a name="line.35541"></a>
<span class="sourceLineNo">35542</span> ox = (byte) toLong(pax);<a name="line.35542"></a>
<span class="sourceLineNo">35543</span> else<a name="line.35543"></a>
<span class="sourceLineNo">35544</span> ox = (byte) toLong(ix);<a name="line.35544"></a>
<span class="sourceLineNo">35545</span> oi8data[it.oIndex] = ox;<a name="line.35545"></a>
<span class="sourceLineNo">35546</span> }<a name="line.35546"></a>
<span class="sourceLineNo">35547</span> }<a name="line.35547"></a>
<span class="sourceLineNo">35548</span> break;<a name="line.35548"></a>
<span class="sourceLineNo">35549</span> case Dataset.INT16:<a name="line.35549"></a>
<span class="sourceLineNo">35550</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.35550"></a>
<span class="sourceLineNo">35551</span> if (it.isOutputDouble()) {<a name="line.35551"></a>
<span class="sourceLineNo">35552</span> while (it.hasNext()) {<a name="line.35552"></a>
<span class="sourceLineNo">35553</span> final double ix = it.aDouble;<a name="line.35553"></a>
<span class="sourceLineNo">35554</span> short ox;<a name="line.35554"></a>
<span class="sourceLineNo">35555</span> if (ix &gt; pax)<a name="line.35555"></a>
<span class="sourceLineNo">35556</span> ox = (short) toLong(pax);<a name="line.35556"></a>
<span class="sourceLineNo">35557</span> else<a name="line.35557"></a>
<span class="sourceLineNo">35558</span> ox = (short) toLong(ix);<a name="line.35558"></a>
<span class="sourceLineNo">35559</span> oi16data[it.oIndex] = ox;<a name="line.35559"></a>
<span class="sourceLineNo">35560</span> }<a name="line.35560"></a>
<span class="sourceLineNo">35561</span> } else {<a name="line.35561"></a>
<span class="sourceLineNo">35562</span> while (it.hasNext()) {<a name="line.35562"></a>
<span class="sourceLineNo">35563</span> final long ix = it.aLong;<a name="line.35563"></a>
<span class="sourceLineNo">35564</span> short ox;<a name="line.35564"></a>
<span class="sourceLineNo">35565</span> if (ix &gt; pax)<a name="line.35565"></a>
<span class="sourceLineNo">35566</span> ox = (short) toLong(pax);<a name="line.35566"></a>
<span class="sourceLineNo">35567</span> else<a name="line.35567"></a>
<span class="sourceLineNo">35568</span> ox = (short) toLong(ix);<a name="line.35568"></a>
<span class="sourceLineNo">35569</span> oi16data[it.oIndex] = ox;<a name="line.35569"></a>
<span class="sourceLineNo">35570</span> }<a name="line.35570"></a>
<span class="sourceLineNo">35571</span> }<a name="line.35571"></a>
<span class="sourceLineNo">35572</span> break;<a name="line.35572"></a>
<span class="sourceLineNo">35573</span> case Dataset.INT64:<a name="line.35573"></a>
<span class="sourceLineNo">35574</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.35574"></a>
<span class="sourceLineNo">35575</span> if (it.isOutputDouble()) {<a name="line.35575"></a>
<span class="sourceLineNo">35576</span> while (it.hasNext()) {<a name="line.35576"></a>
<span class="sourceLineNo">35577</span> final double ix = it.aDouble;<a name="line.35577"></a>
<span class="sourceLineNo">35578</span> long ox;<a name="line.35578"></a>
<span class="sourceLineNo">35579</span> if (ix &gt; pax)<a name="line.35579"></a>
<span class="sourceLineNo">35580</span> ox = toLong(pax);<a name="line.35580"></a>
<span class="sourceLineNo">35581</span> else<a name="line.35581"></a>
<span class="sourceLineNo">35582</span> ox = toLong(ix);<a name="line.35582"></a>
<span class="sourceLineNo">35583</span> oi64data[it.oIndex] = ox;<a name="line.35583"></a>
<span class="sourceLineNo">35584</span> }<a name="line.35584"></a>
<span class="sourceLineNo">35585</span> } else {<a name="line.35585"></a>
<span class="sourceLineNo">35586</span> while (it.hasNext()) {<a name="line.35586"></a>
<span class="sourceLineNo">35587</span> final long ix = it.aLong;<a name="line.35587"></a>
<span class="sourceLineNo">35588</span> long ox;<a name="line.35588"></a>
<span class="sourceLineNo">35589</span> if (ix &gt; pax)<a name="line.35589"></a>
<span class="sourceLineNo">35590</span> ox = toLong(pax);<a name="line.35590"></a>
<span class="sourceLineNo">35591</span> else<a name="line.35591"></a>
<span class="sourceLineNo">35592</span> ox = toLong(ix);<a name="line.35592"></a>
<span class="sourceLineNo">35593</span> oi64data[it.oIndex] = ox;<a name="line.35593"></a>
<span class="sourceLineNo">35594</span> }<a name="line.35594"></a>
<span class="sourceLineNo">35595</span> }<a name="line.35595"></a>
<span class="sourceLineNo">35596</span> break;<a name="line.35596"></a>
<span class="sourceLineNo">35597</span> case Dataset.INT32:<a name="line.35597"></a>
<span class="sourceLineNo">35598</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.35598"></a>
<span class="sourceLineNo">35599</span> if (it.isOutputDouble()) {<a name="line.35599"></a>
<span class="sourceLineNo">35600</span> while (it.hasNext()) {<a name="line.35600"></a>
<span class="sourceLineNo">35601</span> final double ix = it.aDouble;<a name="line.35601"></a>
<span class="sourceLineNo">35602</span> int ox;<a name="line.35602"></a>
<span class="sourceLineNo">35603</span> if (ix &gt; pax)<a name="line.35603"></a>
<span class="sourceLineNo">35604</span> ox = (int) toLong(pax);<a name="line.35604"></a>
<span class="sourceLineNo">35605</span> else<a name="line.35605"></a>
<span class="sourceLineNo">35606</span> ox = (int) toLong(ix);<a name="line.35606"></a>
<span class="sourceLineNo">35607</span> oi32data[it.oIndex] = ox;<a name="line.35607"></a>
<span class="sourceLineNo">35608</span> }<a name="line.35608"></a>
<span class="sourceLineNo">35609</span> } else {<a name="line.35609"></a>
<span class="sourceLineNo">35610</span> while (it.hasNext()) {<a name="line.35610"></a>
<span class="sourceLineNo">35611</span> final long ix = it.aLong;<a name="line.35611"></a>
<span class="sourceLineNo">35612</span> int ox;<a name="line.35612"></a>
<span class="sourceLineNo">35613</span> if (ix &gt; pax)<a name="line.35613"></a>
<span class="sourceLineNo">35614</span> ox = (int) toLong(pax);<a name="line.35614"></a>
<span class="sourceLineNo">35615</span> else<a name="line.35615"></a>
<span class="sourceLineNo">35616</span> ox = (int) toLong(ix);<a name="line.35616"></a>
<span class="sourceLineNo">35617</span> oi32data[it.oIndex] = ox;<a name="line.35617"></a>
<span class="sourceLineNo">35618</span> }<a name="line.35618"></a>
<span class="sourceLineNo">35619</span> }<a name="line.35619"></a>
<span class="sourceLineNo">35620</span> break;<a name="line.35620"></a>
<span class="sourceLineNo">35621</span> case Dataset.ARRAYINT8:<a name="line.35621"></a>
<span class="sourceLineNo">35622</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.35622"></a>
<span class="sourceLineNo">35623</span> if (is == 1) {<a name="line.35623"></a>
<span class="sourceLineNo">35624</span> if (it.isOutputDouble()) {<a name="line.35624"></a>
<span class="sourceLineNo">35625</span> while (it.hasNext()) {<a name="line.35625"></a>
<span class="sourceLineNo">35626</span> final double ix = it.aDouble;<a name="line.35626"></a>
<span class="sourceLineNo">35627</span> byte ox;<a name="line.35627"></a>
<span class="sourceLineNo">35628</span> if (ix &gt; pax)<a name="line.35628"></a>
<span class="sourceLineNo">35629</span> ox = (byte) toLong(pax);<a name="line.35629"></a>
<span class="sourceLineNo">35630</span> else<a name="line.35630"></a>
<span class="sourceLineNo">35631</span> ox = (byte) toLong(ix);<a name="line.35631"></a>
<span class="sourceLineNo">35632</span> oai8data[it.oIndex] = ox;<a name="line.35632"></a>
<span class="sourceLineNo">35633</span> }<a name="line.35633"></a>
<span class="sourceLineNo">35634</span> } else {<a name="line.35634"></a>
<span class="sourceLineNo">35635</span> while (it.hasNext()) {<a name="line.35635"></a>
<span class="sourceLineNo">35636</span> final long ix = it.aLong;<a name="line.35636"></a>
<span class="sourceLineNo">35637</span> byte ox;<a name="line.35637"></a>
<span class="sourceLineNo">35638</span> if (ix &gt; pax)<a name="line.35638"></a>
<span class="sourceLineNo">35639</span> ox = (byte) toLong(pax);<a name="line.35639"></a>
<span class="sourceLineNo">35640</span> else<a name="line.35640"></a>
<span class="sourceLineNo">35641</span> ox = (byte) toLong(ix);<a name="line.35641"></a>
<span class="sourceLineNo">35642</span> oai8data[it.oIndex] = ox;<a name="line.35642"></a>
<span class="sourceLineNo">35643</span> }<a name="line.35643"></a>
<span class="sourceLineNo">35644</span> }<a name="line.35644"></a>
<span class="sourceLineNo">35645</span> } else if (as == 1) {<a name="line.35645"></a>
<span class="sourceLineNo">35646</span> if (it.isOutputDouble()) {<a name="line.35646"></a>
<span class="sourceLineNo">35647</span> while (it.hasNext()) {<a name="line.35647"></a>
<span class="sourceLineNo">35648</span> final double ix = it.aDouble;<a name="line.35648"></a>
<span class="sourceLineNo">35649</span> byte ox;<a name="line.35649"></a>
<span class="sourceLineNo">35650</span> if (ix &gt; pax)<a name="line.35650"></a>
<span class="sourceLineNo">35651</span> ox = (byte) toLong(pax);<a name="line.35651"></a>
<span class="sourceLineNo">35652</span> else<a name="line.35652"></a>
<span class="sourceLineNo">35653</span> ox = (byte) toLong(ix);<a name="line.35653"></a>
<span class="sourceLineNo">35654</span> for (int j = 0; j &lt; is; j++) {<a name="line.35654"></a>
<span class="sourceLineNo">35655</span> oai8data[it.oIndex + j] = ox;<a name="line.35655"></a>
<span class="sourceLineNo">35656</span> }<a name="line.35656"></a>
<span class="sourceLineNo">35657</span> }<a name="line.35657"></a>
<span class="sourceLineNo">35658</span> } else {<a name="line.35658"></a>
<span class="sourceLineNo">35659</span> while (it.hasNext()) {<a name="line.35659"></a>
<span class="sourceLineNo">35660</span> final long ix = it.aLong;<a name="line.35660"></a>
<span class="sourceLineNo">35661</span> byte ox;<a name="line.35661"></a>
<span class="sourceLineNo">35662</span> if (ix &gt; pax)<a name="line.35662"></a>
<span class="sourceLineNo">35663</span> ox = (byte) toLong(pax);<a name="line.35663"></a>
<span class="sourceLineNo">35664</span> else<a name="line.35664"></a>
<span class="sourceLineNo">35665</span> ox = (byte) toLong(ix);<a name="line.35665"></a>
<span class="sourceLineNo">35666</span> for (int j = 0; j &lt; is; j++) {<a name="line.35666"></a>
<span class="sourceLineNo">35667</span> oai8data[it.oIndex + j] = ox;<a name="line.35667"></a>
<span class="sourceLineNo">35668</span> }<a name="line.35668"></a>
<span class="sourceLineNo">35669</span> }<a name="line.35669"></a>
<span class="sourceLineNo">35670</span> }<a name="line.35670"></a>
<span class="sourceLineNo">35671</span> } else {<a name="line.35671"></a>
<span class="sourceLineNo">35672</span> if (it.isOutputDouble()) {<a name="line.35672"></a>
<span class="sourceLineNo">35673</span> while (it.hasNext()) {<a name="line.35673"></a>
<span class="sourceLineNo">35674</span> for (int j = 0; j &lt; is; j++) {<a name="line.35674"></a>
<span class="sourceLineNo">35675</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.35675"></a>
<span class="sourceLineNo">35676</span> byte ox;<a name="line.35676"></a>
<span class="sourceLineNo">35677</span> if (ix &gt; pax)<a name="line.35677"></a>
<span class="sourceLineNo">35678</span> ox = (byte) toLong(pax);<a name="line.35678"></a>
<span class="sourceLineNo">35679</span> else<a name="line.35679"></a>
<span class="sourceLineNo">35680</span> ox = (byte) toLong(ix);<a name="line.35680"></a>
<span class="sourceLineNo">35681</span> oai8data[it.oIndex + j] = ox;<a name="line.35681"></a>
<span class="sourceLineNo">35682</span> }<a name="line.35682"></a>
<span class="sourceLineNo">35683</span> }<a name="line.35683"></a>
<span class="sourceLineNo">35684</span> } else {<a name="line.35684"></a>
<span class="sourceLineNo">35685</span> while (it.hasNext()) {<a name="line.35685"></a>
<span class="sourceLineNo">35686</span> for (int j = 0; j &lt; is; j++) {<a name="line.35686"></a>
<span class="sourceLineNo">35687</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.35687"></a>
<span class="sourceLineNo">35688</span> byte ox;<a name="line.35688"></a>
<span class="sourceLineNo">35689</span> if (ix &gt; pax)<a name="line.35689"></a>
<span class="sourceLineNo">35690</span> ox = (byte) toLong(pax);<a name="line.35690"></a>
<span class="sourceLineNo">35691</span> else<a name="line.35691"></a>
<span class="sourceLineNo">35692</span> ox = (byte) toLong(ix);<a name="line.35692"></a>
<span class="sourceLineNo">35693</span> oai8data[it.oIndex + j] = ox;<a name="line.35693"></a>
<span class="sourceLineNo">35694</span> }<a name="line.35694"></a>
<span class="sourceLineNo">35695</span> }<a name="line.35695"></a>
<span class="sourceLineNo">35696</span> }<a name="line.35696"></a>
<span class="sourceLineNo">35697</span> }<a name="line.35697"></a>
<span class="sourceLineNo">35698</span> break;<a name="line.35698"></a>
<span class="sourceLineNo">35699</span> case Dataset.ARRAYINT16:<a name="line.35699"></a>
<span class="sourceLineNo">35700</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.35700"></a>
<span class="sourceLineNo">35701</span> if (is == 1) {<a name="line.35701"></a>
<span class="sourceLineNo">35702</span> if (it.isOutputDouble()) {<a name="line.35702"></a>
<span class="sourceLineNo">35703</span> while (it.hasNext()) {<a name="line.35703"></a>
<span class="sourceLineNo">35704</span> final double ix = it.aDouble;<a name="line.35704"></a>
<span class="sourceLineNo">35705</span> short ox;<a name="line.35705"></a>
<span class="sourceLineNo">35706</span> if (ix &gt; pax)<a name="line.35706"></a>
<span class="sourceLineNo">35707</span> ox = (short) toLong(pax);<a name="line.35707"></a>
<span class="sourceLineNo">35708</span> else<a name="line.35708"></a>
<span class="sourceLineNo">35709</span> ox = (short) toLong(ix);<a name="line.35709"></a>
<span class="sourceLineNo">35710</span> oai16data[it.oIndex] = ox;<a name="line.35710"></a>
<span class="sourceLineNo">35711</span> }<a name="line.35711"></a>
<span class="sourceLineNo">35712</span> } else {<a name="line.35712"></a>
<span class="sourceLineNo">35713</span> while (it.hasNext()) {<a name="line.35713"></a>
<span class="sourceLineNo">35714</span> final long ix = it.aLong;<a name="line.35714"></a>
<span class="sourceLineNo">35715</span> short ox;<a name="line.35715"></a>
<span class="sourceLineNo">35716</span> if (ix &gt; pax)<a name="line.35716"></a>
<span class="sourceLineNo">35717</span> ox = (short) toLong(pax);<a name="line.35717"></a>
<span class="sourceLineNo">35718</span> else<a name="line.35718"></a>
<span class="sourceLineNo">35719</span> ox = (short) toLong(ix);<a name="line.35719"></a>
<span class="sourceLineNo">35720</span> oai16data[it.oIndex] = ox;<a name="line.35720"></a>
<span class="sourceLineNo">35721</span> }<a name="line.35721"></a>
<span class="sourceLineNo">35722</span> }<a name="line.35722"></a>
<span class="sourceLineNo">35723</span> } else if (as == 1) {<a name="line.35723"></a>
<span class="sourceLineNo">35724</span> if (it.isOutputDouble()) {<a name="line.35724"></a>
<span class="sourceLineNo">35725</span> while (it.hasNext()) {<a name="line.35725"></a>
<span class="sourceLineNo">35726</span> final double ix = it.aDouble;<a name="line.35726"></a>
<span class="sourceLineNo">35727</span> short ox;<a name="line.35727"></a>
<span class="sourceLineNo">35728</span> if (ix &gt; pax)<a name="line.35728"></a>
<span class="sourceLineNo">35729</span> ox = (short) toLong(pax);<a name="line.35729"></a>
<span class="sourceLineNo">35730</span> else<a name="line.35730"></a>
<span class="sourceLineNo">35731</span> ox = (short) toLong(ix);<a name="line.35731"></a>
<span class="sourceLineNo">35732</span> for (int j = 0; j &lt; is; j++) {<a name="line.35732"></a>
<span class="sourceLineNo">35733</span> oai16data[it.oIndex + j] = ox;<a name="line.35733"></a>
<span class="sourceLineNo">35734</span> }<a name="line.35734"></a>
<span class="sourceLineNo">35735</span> }<a name="line.35735"></a>
<span class="sourceLineNo">35736</span> } else {<a name="line.35736"></a>
<span class="sourceLineNo">35737</span> while (it.hasNext()) {<a name="line.35737"></a>
<span class="sourceLineNo">35738</span> final long ix = it.aLong;<a name="line.35738"></a>
<span class="sourceLineNo">35739</span> short ox;<a name="line.35739"></a>
<span class="sourceLineNo">35740</span> if (ix &gt; pax)<a name="line.35740"></a>
<span class="sourceLineNo">35741</span> ox = (short) toLong(pax);<a name="line.35741"></a>
<span class="sourceLineNo">35742</span> else<a name="line.35742"></a>
<span class="sourceLineNo">35743</span> ox = (short) toLong(ix);<a name="line.35743"></a>
<span class="sourceLineNo">35744</span> for (int j = 0; j &lt; is; j++) {<a name="line.35744"></a>
<span class="sourceLineNo">35745</span> oai16data[it.oIndex + j] = ox;<a name="line.35745"></a>
<span class="sourceLineNo">35746</span> }<a name="line.35746"></a>
<span class="sourceLineNo">35747</span> }<a name="line.35747"></a>
<span class="sourceLineNo">35748</span> }<a name="line.35748"></a>
<span class="sourceLineNo">35749</span> } else {<a name="line.35749"></a>
<span class="sourceLineNo">35750</span> if (it.isOutputDouble()) {<a name="line.35750"></a>
<span class="sourceLineNo">35751</span> while (it.hasNext()) {<a name="line.35751"></a>
<span class="sourceLineNo">35752</span> for (int j = 0; j &lt; is; j++) {<a name="line.35752"></a>
<span class="sourceLineNo">35753</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.35753"></a>
<span class="sourceLineNo">35754</span> short ox;<a name="line.35754"></a>
<span class="sourceLineNo">35755</span> if (ix &gt; pax)<a name="line.35755"></a>
<span class="sourceLineNo">35756</span> ox = (short) toLong(pax);<a name="line.35756"></a>
<span class="sourceLineNo">35757</span> else<a name="line.35757"></a>
<span class="sourceLineNo">35758</span> ox = (short) toLong(ix);<a name="line.35758"></a>
<span class="sourceLineNo">35759</span> oai16data[it.oIndex + j] = ox;<a name="line.35759"></a>
<span class="sourceLineNo">35760</span> }<a name="line.35760"></a>
<span class="sourceLineNo">35761</span> }<a name="line.35761"></a>
<span class="sourceLineNo">35762</span> } else {<a name="line.35762"></a>
<span class="sourceLineNo">35763</span> while (it.hasNext()) {<a name="line.35763"></a>
<span class="sourceLineNo">35764</span> for (int j = 0; j &lt; is; j++) {<a name="line.35764"></a>
<span class="sourceLineNo">35765</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.35765"></a>
<span class="sourceLineNo">35766</span> short ox;<a name="line.35766"></a>
<span class="sourceLineNo">35767</span> if (ix &gt; pax)<a name="line.35767"></a>
<span class="sourceLineNo">35768</span> ox = (short) toLong(pax);<a name="line.35768"></a>
<span class="sourceLineNo">35769</span> else<a name="line.35769"></a>
<span class="sourceLineNo">35770</span> ox = (short) toLong(ix);<a name="line.35770"></a>
<span class="sourceLineNo">35771</span> oai16data[it.oIndex + j] = ox;<a name="line.35771"></a>
<span class="sourceLineNo">35772</span> }<a name="line.35772"></a>
<span class="sourceLineNo">35773</span> }<a name="line.35773"></a>
<span class="sourceLineNo">35774</span> }<a name="line.35774"></a>
<span class="sourceLineNo">35775</span> }<a name="line.35775"></a>
<span class="sourceLineNo">35776</span> break;<a name="line.35776"></a>
<span class="sourceLineNo">35777</span> case Dataset.ARRAYINT64:<a name="line.35777"></a>
<span class="sourceLineNo">35778</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.35778"></a>
<span class="sourceLineNo">35779</span> if (is == 1) {<a name="line.35779"></a>
<span class="sourceLineNo">35780</span> if (it.isOutputDouble()) {<a name="line.35780"></a>
<span class="sourceLineNo">35781</span> while (it.hasNext()) {<a name="line.35781"></a>
<span class="sourceLineNo">35782</span> final double ix = it.aDouble;<a name="line.35782"></a>
<span class="sourceLineNo">35783</span> long ox;<a name="line.35783"></a>
<span class="sourceLineNo">35784</span> if (ix &gt; pax)<a name="line.35784"></a>
<span class="sourceLineNo">35785</span> ox = toLong(pax);<a name="line.35785"></a>
<span class="sourceLineNo">35786</span> else<a name="line.35786"></a>
<span class="sourceLineNo">35787</span> ox = toLong(ix);<a name="line.35787"></a>
<span class="sourceLineNo">35788</span> oai64data[it.oIndex] = ox;<a name="line.35788"></a>
<span class="sourceLineNo">35789</span> }<a name="line.35789"></a>
<span class="sourceLineNo">35790</span> } else {<a name="line.35790"></a>
<span class="sourceLineNo">35791</span> while (it.hasNext()) {<a name="line.35791"></a>
<span class="sourceLineNo">35792</span> final long ix = it.aLong;<a name="line.35792"></a>
<span class="sourceLineNo">35793</span> long ox;<a name="line.35793"></a>
<span class="sourceLineNo">35794</span> if (ix &gt; pax)<a name="line.35794"></a>
<span class="sourceLineNo">35795</span> ox = toLong(pax);<a name="line.35795"></a>
<span class="sourceLineNo">35796</span> else<a name="line.35796"></a>
<span class="sourceLineNo">35797</span> ox = toLong(ix);<a name="line.35797"></a>
<span class="sourceLineNo">35798</span> oai64data[it.oIndex] = ox;<a name="line.35798"></a>
<span class="sourceLineNo">35799</span> }<a name="line.35799"></a>
<span class="sourceLineNo">35800</span> }<a name="line.35800"></a>
<span class="sourceLineNo">35801</span> } else if (as == 1) {<a name="line.35801"></a>
<span class="sourceLineNo">35802</span> if (it.isOutputDouble()) {<a name="line.35802"></a>
<span class="sourceLineNo">35803</span> while (it.hasNext()) {<a name="line.35803"></a>
<span class="sourceLineNo">35804</span> final double ix = it.aDouble;<a name="line.35804"></a>
<span class="sourceLineNo">35805</span> long ox;<a name="line.35805"></a>
<span class="sourceLineNo">35806</span> if (ix &gt; pax)<a name="line.35806"></a>
<span class="sourceLineNo">35807</span> ox = toLong(pax);<a name="line.35807"></a>
<span class="sourceLineNo">35808</span> else<a name="line.35808"></a>
<span class="sourceLineNo">35809</span> ox = toLong(ix);<a name="line.35809"></a>
<span class="sourceLineNo">35810</span> for (int j = 0; j &lt; is; j++) {<a name="line.35810"></a>
<span class="sourceLineNo">35811</span> oai64data[it.oIndex + j] = ox;<a name="line.35811"></a>
<span class="sourceLineNo">35812</span> }<a name="line.35812"></a>
<span class="sourceLineNo">35813</span> }<a name="line.35813"></a>
<span class="sourceLineNo">35814</span> } else {<a name="line.35814"></a>
<span class="sourceLineNo">35815</span> while (it.hasNext()) {<a name="line.35815"></a>
<span class="sourceLineNo">35816</span> final long ix = it.aLong;<a name="line.35816"></a>
<span class="sourceLineNo">35817</span> long ox;<a name="line.35817"></a>
<span class="sourceLineNo">35818</span> if (ix &gt; pax)<a name="line.35818"></a>
<span class="sourceLineNo">35819</span> ox = toLong(pax);<a name="line.35819"></a>
<span class="sourceLineNo">35820</span> else<a name="line.35820"></a>
<span class="sourceLineNo">35821</span> ox = toLong(ix);<a name="line.35821"></a>
<span class="sourceLineNo">35822</span> for (int j = 0; j &lt; is; j++) {<a name="line.35822"></a>
<span class="sourceLineNo">35823</span> oai64data[it.oIndex + j] = ox;<a name="line.35823"></a>
<span class="sourceLineNo">35824</span> }<a name="line.35824"></a>
<span class="sourceLineNo">35825</span> }<a name="line.35825"></a>
<span class="sourceLineNo">35826</span> }<a name="line.35826"></a>
<span class="sourceLineNo">35827</span> } else {<a name="line.35827"></a>
<span class="sourceLineNo">35828</span> if (it.isOutputDouble()) {<a name="line.35828"></a>
<span class="sourceLineNo">35829</span> while (it.hasNext()) {<a name="line.35829"></a>
<span class="sourceLineNo">35830</span> for (int j = 0; j &lt; is; j++) {<a name="line.35830"></a>
<span class="sourceLineNo">35831</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.35831"></a>
<span class="sourceLineNo">35832</span> long ox;<a name="line.35832"></a>
<span class="sourceLineNo">35833</span> if (ix &gt; pax)<a name="line.35833"></a>
<span class="sourceLineNo">35834</span> ox = toLong(pax);<a name="line.35834"></a>
<span class="sourceLineNo">35835</span> else<a name="line.35835"></a>
<span class="sourceLineNo">35836</span> ox = toLong(ix);<a name="line.35836"></a>
<span class="sourceLineNo">35837</span> oai64data[it.oIndex + j] = ox;<a name="line.35837"></a>
<span class="sourceLineNo">35838</span> }<a name="line.35838"></a>
<span class="sourceLineNo">35839</span> }<a name="line.35839"></a>
<span class="sourceLineNo">35840</span> } else {<a name="line.35840"></a>
<span class="sourceLineNo">35841</span> while (it.hasNext()) {<a name="line.35841"></a>
<span class="sourceLineNo">35842</span> for (int j = 0; j &lt; is; j++) {<a name="line.35842"></a>
<span class="sourceLineNo">35843</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.35843"></a>
<span class="sourceLineNo">35844</span> long ox;<a name="line.35844"></a>
<span class="sourceLineNo">35845</span> if (ix &gt; pax)<a name="line.35845"></a>
<span class="sourceLineNo">35846</span> ox = toLong(pax);<a name="line.35846"></a>
<span class="sourceLineNo">35847</span> else<a name="line.35847"></a>
<span class="sourceLineNo">35848</span> ox = toLong(ix);<a name="line.35848"></a>
<span class="sourceLineNo">35849</span> oai64data[it.oIndex + j] = ox;<a name="line.35849"></a>
<span class="sourceLineNo">35850</span> }<a name="line.35850"></a>
<span class="sourceLineNo">35851</span> }<a name="line.35851"></a>
<span class="sourceLineNo">35852</span> }<a name="line.35852"></a>
<span class="sourceLineNo">35853</span> }<a name="line.35853"></a>
<span class="sourceLineNo">35854</span> break;<a name="line.35854"></a>
<span class="sourceLineNo">35855</span> case Dataset.ARRAYINT32:<a name="line.35855"></a>
<span class="sourceLineNo">35856</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.35856"></a>
<span class="sourceLineNo">35857</span> if (is == 1) {<a name="line.35857"></a>
<span class="sourceLineNo">35858</span> if (it.isOutputDouble()) {<a name="line.35858"></a>
<span class="sourceLineNo">35859</span> while (it.hasNext()) {<a name="line.35859"></a>
<span class="sourceLineNo">35860</span> final double ix = it.aDouble;<a name="line.35860"></a>
<span class="sourceLineNo">35861</span> int ox;<a name="line.35861"></a>
<span class="sourceLineNo">35862</span> if (ix &gt; pax)<a name="line.35862"></a>
<span class="sourceLineNo">35863</span> ox = (int) toLong(pax);<a name="line.35863"></a>
<span class="sourceLineNo">35864</span> else<a name="line.35864"></a>
<span class="sourceLineNo">35865</span> ox = (int) toLong(ix);<a name="line.35865"></a>
<span class="sourceLineNo">35866</span> oai32data[it.oIndex] = ox;<a name="line.35866"></a>
<span class="sourceLineNo">35867</span> }<a name="line.35867"></a>
<span class="sourceLineNo">35868</span> } else {<a name="line.35868"></a>
<span class="sourceLineNo">35869</span> while (it.hasNext()) {<a name="line.35869"></a>
<span class="sourceLineNo">35870</span> final long ix = it.aLong;<a name="line.35870"></a>
<span class="sourceLineNo">35871</span> int ox;<a name="line.35871"></a>
<span class="sourceLineNo">35872</span> if (ix &gt; pax)<a name="line.35872"></a>
<span class="sourceLineNo">35873</span> ox = (int) toLong(pax);<a name="line.35873"></a>
<span class="sourceLineNo">35874</span> else<a name="line.35874"></a>
<span class="sourceLineNo">35875</span> ox = (int) toLong(ix);<a name="line.35875"></a>
<span class="sourceLineNo">35876</span> oai32data[it.oIndex] = ox;<a name="line.35876"></a>
<span class="sourceLineNo">35877</span> }<a name="line.35877"></a>
<span class="sourceLineNo">35878</span> }<a name="line.35878"></a>
<span class="sourceLineNo">35879</span> } else if (as == 1) {<a name="line.35879"></a>
<span class="sourceLineNo">35880</span> if (it.isOutputDouble()) {<a name="line.35880"></a>
<span class="sourceLineNo">35881</span> while (it.hasNext()) {<a name="line.35881"></a>
<span class="sourceLineNo">35882</span> final double ix = it.aDouble;<a name="line.35882"></a>
<span class="sourceLineNo">35883</span> int ox;<a name="line.35883"></a>
<span class="sourceLineNo">35884</span> if (ix &gt; pax)<a name="line.35884"></a>
<span class="sourceLineNo">35885</span> ox = (int) toLong(pax);<a name="line.35885"></a>
<span class="sourceLineNo">35886</span> else<a name="line.35886"></a>
<span class="sourceLineNo">35887</span> ox = (int) toLong(ix);<a name="line.35887"></a>
<span class="sourceLineNo">35888</span> for (int j = 0; j &lt; is; j++) {<a name="line.35888"></a>
<span class="sourceLineNo">35889</span> oai32data[it.oIndex + j] = ox;<a name="line.35889"></a>
<span class="sourceLineNo">35890</span> }<a name="line.35890"></a>
<span class="sourceLineNo">35891</span> }<a name="line.35891"></a>
<span class="sourceLineNo">35892</span> } else {<a name="line.35892"></a>
<span class="sourceLineNo">35893</span> while (it.hasNext()) {<a name="line.35893"></a>
<span class="sourceLineNo">35894</span> final long ix = it.aLong;<a name="line.35894"></a>
<span class="sourceLineNo">35895</span> int ox;<a name="line.35895"></a>
<span class="sourceLineNo">35896</span> if (ix &gt; pax)<a name="line.35896"></a>
<span class="sourceLineNo">35897</span> ox = (int) toLong(pax);<a name="line.35897"></a>
<span class="sourceLineNo">35898</span> else<a name="line.35898"></a>
<span class="sourceLineNo">35899</span> ox = (int) toLong(ix);<a name="line.35899"></a>
<span class="sourceLineNo">35900</span> for (int j = 0; j &lt; is; j++) {<a name="line.35900"></a>
<span class="sourceLineNo">35901</span> oai32data[it.oIndex + j] = ox;<a name="line.35901"></a>
<span class="sourceLineNo">35902</span> }<a name="line.35902"></a>
<span class="sourceLineNo">35903</span> }<a name="line.35903"></a>
<span class="sourceLineNo">35904</span> }<a name="line.35904"></a>
<span class="sourceLineNo">35905</span> } else {<a name="line.35905"></a>
<span class="sourceLineNo">35906</span> if (it.isOutputDouble()) {<a name="line.35906"></a>
<span class="sourceLineNo">35907</span> while (it.hasNext()) {<a name="line.35907"></a>
<span class="sourceLineNo">35908</span> for (int j = 0; j &lt; is; j++) {<a name="line.35908"></a>
<span class="sourceLineNo">35909</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.35909"></a>
<span class="sourceLineNo">35910</span> int ox;<a name="line.35910"></a>
<span class="sourceLineNo">35911</span> if (ix &gt; pax)<a name="line.35911"></a>
<span class="sourceLineNo">35912</span> ox = (int) toLong(pax);<a name="line.35912"></a>
<span class="sourceLineNo">35913</span> else<a name="line.35913"></a>
<span class="sourceLineNo">35914</span> ox = (int) toLong(ix);<a name="line.35914"></a>
<span class="sourceLineNo">35915</span> oai32data[it.oIndex + j] = ox;<a name="line.35915"></a>
<span class="sourceLineNo">35916</span> }<a name="line.35916"></a>
<span class="sourceLineNo">35917</span> }<a name="line.35917"></a>
<span class="sourceLineNo">35918</span> } else {<a name="line.35918"></a>
<span class="sourceLineNo">35919</span> while (it.hasNext()) {<a name="line.35919"></a>
<span class="sourceLineNo">35920</span> for (int j = 0; j &lt; is; j++) {<a name="line.35920"></a>
<span class="sourceLineNo">35921</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.35921"></a>
<span class="sourceLineNo">35922</span> int ox;<a name="line.35922"></a>
<span class="sourceLineNo">35923</span> if (ix &gt; pax)<a name="line.35923"></a>
<span class="sourceLineNo">35924</span> ox = (int) toLong(pax);<a name="line.35924"></a>
<span class="sourceLineNo">35925</span> else<a name="line.35925"></a>
<span class="sourceLineNo">35926</span> ox = (int) toLong(ix);<a name="line.35926"></a>
<span class="sourceLineNo">35927</span> oai32data[it.oIndex + j] = ox;<a name="line.35927"></a>
<span class="sourceLineNo">35928</span> }<a name="line.35928"></a>
<span class="sourceLineNo">35929</span> }<a name="line.35929"></a>
<span class="sourceLineNo">35930</span> }<a name="line.35930"></a>
<span class="sourceLineNo">35931</span> }<a name="line.35931"></a>
<span class="sourceLineNo">35932</span> break;<a name="line.35932"></a>
<span class="sourceLineNo">35933</span> case Dataset.FLOAT32:<a name="line.35933"></a>
<span class="sourceLineNo">35934</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.35934"></a>
<span class="sourceLineNo">35935</span> if (it.isOutputDouble()) {<a name="line.35935"></a>
<span class="sourceLineNo">35936</span> while (it.hasNext()) {<a name="line.35936"></a>
<span class="sourceLineNo">35937</span> final double ix = it.aDouble;<a name="line.35937"></a>
<span class="sourceLineNo">35938</span> float ox;<a name="line.35938"></a>
<span class="sourceLineNo">35939</span> if (ix &gt; pax)<a name="line.35939"></a>
<span class="sourceLineNo">35940</span> ox = (float) (pax);<a name="line.35940"></a>
<span class="sourceLineNo">35941</span> else<a name="line.35941"></a>
<span class="sourceLineNo">35942</span> ox = (float) (ix);<a name="line.35942"></a>
<span class="sourceLineNo">35943</span> of32data[it.oIndex] = ox;<a name="line.35943"></a>
<span class="sourceLineNo">35944</span> }<a name="line.35944"></a>
<span class="sourceLineNo">35945</span> } else {<a name="line.35945"></a>
<span class="sourceLineNo">35946</span> while (it.hasNext()) {<a name="line.35946"></a>
<span class="sourceLineNo">35947</span> final long ix = it.aLong;<a name="line.35947"></a>
<span class="sourceLineNo">35948</span> float ox;<a name="line.35948"></a>
<span class="sourceLineNo">35949</span> if (ix &gt; pax)<a name="line.35949"></a>
<span class="sourceLineNo">35950</span> ox = (float) (pax);<a name="line.35950"></a>
<span class="sourceLineNo">35951</span> else<a name="line.35951"></a>
<span class="sourceLineNo">35952</span> ox = (ix);<a name="line.35952"></a>
<span class="sourceLineNo">35953</span> of32data[it.oIndex] = ox;<a name="line.35953"></a>
<span class="sourceLineNo">35954</span> }<a name="line.35954"></a>
<span class="sourceLineNo">35955</span> }<a name="line.35955"></a>
<span class="sourceLineNo">35956</span> break;<a name="line.35956"></a>
<span class="sourceLineNo">35957</span> case Dataset.FLOAT64:<a name="line.35957"></a>
<span class="sourceLineNo">35958</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.35958"></a>
<span class="sourceLineNo">35959</span> if (it.isOutputDouble()) {<a name="line.35959"></a>
<span class="sourceLineNo">35960</span> while (it.hasNext()) {<a name="line.35960"></a>
<span class="sourceLineNo">35961</span> final double ix = it.aDouble;<a name="line.35961"></a>
<span class="sourceLineNo">35962</span> double ox;<a name="line.35962"></a>
<span class="sourceLineNo">35963</span> if (ix &gt; pax)<a name="line.35963"></a>
<span class="sourceLineNo">35964</span> ox = (pax);<a name="line.35964"></a>
<span class="sourceLineNo">35965</span> else<a name="line.35965"></a>
<span class="sourceLineNo">35966</span> ox = (ix);<a name="line.35966"></a>
<span class="sourceLineNo">35967</span> of64data[it.oIndex] = ox;<a name="line.35967"></a>
<span class="sourceLineNo">35968</span> }<a name="line.35968"></a>
<span class="sourceLineNo">35969</span> } else {<a name="line.35969"></a>
<span class="sourceLineNo">35970</span> while (it.hasNext()) {<a name="line.35970"></a>
<span class="sourceLineNo">35971</span> final long ix = it.aLong;<a name="line.35971"></a>
<span class="sourceLineNo">35972</span> double ox;<a name="line.35972"></a>
<span class="sourceLineNo">35973</span> if (ix &gt; pax)<a name="line.35973"></a>
<span class="sourceLineNo">35974</span> ox = (pax);<a name="line.35974"></a>
<span class="sourceLineNo">35975</span> else<a name="line.35975"></a>
<span class="sourceLineNo">35976</span> ox = (ix);<a name="line.35976"></a>
<span class="sourceLineNo">35977</span> of64data[it.oIndex] = ox;<a name="line.35977"></a>
<span class="sourceLineNo">35978</span> }<a name="line.35978"></a>
<span class="sourceLineNo">35979</span> }<a name="line.35979"></a>
<span class="sourceLineNo">35980</span> break;<a name="line.35980"></a>
<span class="sourceLineNo">35981</span> case Dataset.ARRAYFLOAT32:<a name="line.35981"></a>
<span class="sourceLineNo">35982</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.35982"></a>
<span class="sourceLineNo">35983</span> if (is == 1) {<a name="line.35983"></a>
<span class="sourceLineNo">35984</span> if (it.isOutputDouble()) {<a name="line.35984"></a>
<span class="sourceLineNo">35985</span> while (it.hasNext()) {<a name="line.35985"></a>
<span class="sourceLineNo">35986</span> final double ix = it.aDouble;<a name="line.35986"></a>
<span class="sourceLineNo">35987</span> float ox;<a name="line.35987"></a>
<span class="sourceLineNo">35988</span> if (ix &gt; pax)<a name="line.35988"></a>
<span class="sourceLineNo">35989</span> ox = (float) (pax);<a name="line.35989"></a>
<span class="sourceLineNo">35990</span> else<a name="line.35990"></a>
<span class="sourceLineNo">35991</span> ox = (float) (ix);<a name="line.35991"></a>
<span class="sourceLineNo">35992</span> oaf32data[it.oIndex] = ox;<a name="line.35992"></a>
<span class="sourceLineNo">35993</span> }<a name="line.35993"></a>
<span class="sourceLineNo">35994</span> } else {<a name="line.35994"></a>
<span class="sourceLineNo">35995</span> while (it.hasNext()) {<a name="line.35995"></a>
<span class="sourceLineNo">35996</span> final long ix = it.aLong;<a name="line.35996"></a>
<span class="sourceLineNo">35997</span> float ox;<a name="line.35997"></a>
<span class="sourceLineNo">35998</span> if (ix &gt; pax)<a name="line.35998"></a>
<span class="sourceLineNo">35999</span> ox = (float) (pax);<a name="line.35999"></a>
<span class="sourceLineNo">36000</span> else<a name="line.36000"></a>
<span class="sourceLineNo">36001</span> ox = (ix);<a name="line.36001"></a>
<span class="sourceLineNo">36002</span> oaf32data[it.oIndex] = ox;<a name="line.36002"></a>
<span class="sourceLineNo">36003</span> }<a name="line.36003"></a>
<span class="sourceLineNo">36004</span> }<a name="line.36004"></a>
<span class="sourceLineNo">36005</span> } else if (as == 1) {<a name="line.36005"></a>
<span class="sourceLineNo">36006</span> if (it.isOutputDouble()) {<a name="line.36006"></a>
<span class="sourceLineNo">36007</span> while (it.hasNext()) {<a name="line.36007"></a>
<span class="sourceLineNo">36008</span> final double ix = it.aDouble;<a name="line.36008"></a>
<span class="sourceLineNo">36009</span> float ox;<a name="line.36009"></a>
<span class="sourceLineNo">36010</span> if (ix &gt; pax)<a name="line.36010"></a>
<span class="sourceLineNo">36011</span> ox = (float) (pax);<a name="line.36011"></a>
<span class="sourceLineNo">36012</span> else<a name="line.36012"></a>
<span class="sourceLineNo">36013</span> ox = (float) (ix);<a name="line.36013"></a>
<span class="sourceLineNo">36014</span> for (int j = 0; j &lt; is; j++) {<a name="line.36014"></a>
<span class="sourceLineNo">36015</span> oaf32data[it.oIndex + j] = ox;<a name="line.36015"></a>
<span class="sourceLineNo">36016</span> }<a name="line.36016"></a>
<span class="sourceLineNo">36017</span> }<a name="line.36017"></a>
<span class="sourceLineNo">36018</span> } else {<a name="line.36018"></a>
<span class="sourceLineNo">36019</span> while (it.hasNext()) {<a name="line.36019"></a>
<span class="sourceLineNo">36020</span> final long ix = it.aLong;<a name="line.36020"></a>
<span class="sourceLineNo">36021</span> float ox;<a name="line.36021"></a>
<span class="sourceLineNo">36022</span> if (ix &gt; pax)<a name="line.36022"></a>
<span class="sourceLineNo">36023</span> ox = (float) (pax);<a name="line.36023"></a>
<span class="sourceLineNo">36024</span> else<a name="line.36024"></a>
<span class="sourceLineNo">36025</span> ox = (ix);<a name="line.36025"></a>
<span class="sourceLineNo">36026</span> for (int j = 0; j &lt; is; j++) {<a name="line.36026"></a>
<span class="sourceLineNo">36027</span> oaf32data[it.oIndex + j] = ox;<a name="line.36027"></a>
<span class="sourceLineNo">36028</span> }<a name="line.36028"></a>
<span class="sourceLineNo">36029</span> }<a name="line.36029"></a>
<span class="sourceLineNo">36030</span> }<a name="line.36030"></a>
<span class="sourceLineNo">36031</span> } else {<a name="line.36031"></a>
<span class="sourceLineNo">36032</span> if (it.isOutputDouble()) {<a name="line.36032"></a>
<span class="sourceLineNo">36033</span> while (it.hasNext()) {<a name="line.36033"></a>
<span class="sourceLineNo">36034</span> for (int j = 0; j &lt; is; j++) {<a name="line.36034"></a>
<span class="sourceLineNo">36035</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.36035"></a>
<span class="sourceLineNo">36036</span> float ox;<a name="line.36036"></a>
<span class="sourceLineNo">36037</span> if (ix &gt; pax)<a name="line.36037"></a>
<span class="sourceLineNo">36038</span> ox = (float) (pax);<a name="line.36038"></a>
<span class="sourceLineNo">36039</span> else<a name="line.36039"></a>
<span class="sourceLineNo">36040</span> ox = (float) (ix);<a name="line.36040"></a>
<span class="sourceLineNo">36041</span> oaf32data[it.oIndex + j] = ox;<a name="line.36041"></a>
<span class="sourceLineNo">36042</span> }<a name="line.36042"></a>
<span class="sourceLineNo">36043</span> }<a name="line.36043"></a>
<span class="sourceLineNo">36044</span> } else {<a name="line.36044"></a>
<span class="sourceLineNo">36045</span> while (it.hasNext()) {<a name="line.36045"></a>
<span class="sourceLineNo">36046</span> for (int j = 0; j &lt; is; j++) {<a name="line.36046"></a>
<span class="sourceLineNo">36047</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.36047"></a>
<span class="sourceLineNo">36048</span> float ox;<a name="line.36048"></a>
<span class="sourceLineNo">36049</span> if (ix &gt; pax)<a name="line.36049"></a>
<span class="sourceLineNo">36050</span> ox = (float) (pax);<a name="line.36050"></a>
<span class="sourceLineNo">36051</span> else<a name="line.36051"></a>
<span class="sourceLineNo">36052</span> ox = (ix);<a name="line.36052"></a>
<span class="sourceLineNo">36053</span> oaf32data[it.oIndex + j] = ox;<a name="line.36053"></a>
<span class="sourceLineNo">36054</span> }<a name="line.36054"></a>
<span class="sourceLineNo">36055</span> }<a name="line.36055"></a>
<span class="sourceLineNo">36056</span> }<a name="line.36056"></a>
<span class="sourceLineNo">36057</span> }<a name="line.36057"></a>
<span class="sourceLineNo">36058</span> break;<a name="line.36058"></a>
<span class="sourceLineNo">36059</span> case Dataset.ARRAYFLOAT64:<a name="line.36059"></a>
<span class="sourceLineNo">36060</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.36060"></a>
<span class="sourceLineNo">36061</span> if (is == 1) {<a name="line.36061"></a>
<span class="sourceLineNo">36062</span> if (it.isOutputDouble()) {<a name="line.36062"></a>
<span class="sourceLineNo">36063</span> while (it.hasNext()) {<a name="line.36063"></a>
<span class="sourceLineNo">36064</span> final double ix = it.aDouble;<a name="line.36064"></a>
<span class="sourceLineNo">36065</span> double ox;<a name="line.36065"></a>
<span class="sourceLineNo">36066</span> if (ix &gt; pax)<a name="line.36066"></a>
<span class="sourceLineNo">36067</span> ox = (pax);<a name="line.36067"></a>
<span class="sourceLineNo">36068</span> else<a name="line.36068"></a>
<span class="sourceLineNo">36069</span> ox = (ix);<a name="line.36069"></a>
<span class="sourceLineNo">36070</span> oaf64data[it.oIndex] = ox;<a name="line.36070"></a>
<span class="sourceLineNo">36071</span> }<a name="line.36071"></a>
<span class="sourceLineNo">36072</span> } else {<a name="line.36072"></a>
<span class="sourceLineNo">36073</span> while (it.hasNext()) {<a name="line.36073"></a>
<span class="sourceLineNo">36074</span> final long ix = it.aLong;<a name="line.36074"></a>
<span class="sourceLineNo">36075</span> double ox;<a name="line.36075"></a>
<span class="sourceLineNo">36076</span> if (ix &gt; pax)<a name="line.36076"></a>
<span class="sourceLineNo">36077</span> ox = (pax);<a name="line.36077"></a>
<span class="sourceLineNo">36078</span> else<a name="line.36078"></a>
<span class="sourceLineNo">36079</span> ox = (ix);<a name="line.36079"></a>
<span class="sourceLineNo">36080</span> oaf64data[it.oIndex] = ox;<a name="line.36080"></a>
<span class="sourceLineNo">36081</span> }<a name="line.36081"></a>
<span class="sourceLineNo">36082</span> }<a name="line.36082"></a>
<span class="sourceLineNo">36083</span> } else if (as == 1) {<a name="line.36083"></a>
<span class="sourceLineNo">36084</span> if (it.isOutputDouble()) {<a name="line.36084"></a>
<span class="sourceLineNo">36085</span> while (it.hasNext()) {<a name="line.36085"></a>
<span class="sourceLineNo">36086</span> final double ix = it.aDouble;<a name="line.36086"></a>
<span class="sourceLineNo">36087</span> double ox;<a name="line.36087"></a>
<span class="sourceLineNo">36088</span> if (ix &gt; pax)<a name="line.36088"></a>
<span class="sourceLineNo">36089</span> ox = (pax);<a name="line.36089"></a>
<span class="sourceLineNo">36090</span> else<a name="line.36090"></a>
<span class="sourceLineNo">36091</span> ox = (ix);<a name="line.36091"></a>
<span class="sourceLineNo">36092</span> for (int j = 0; j &lt; is; j++) {<a name="line.36092"></a>
<span class="sourceLineNo">36093</span> oaf64data[it.oIndex + j] = ox;<a name="line.36093"></a>
<span class="sourceLineNo">36094</span> }<a name="line.36094"></a>
<span class="sourceLineNo">36095</span> }<a name="line.36095"></a>
<span class="sourceLineNo">36096</span> } else {<a name="line.36096"></a>
<span class="sourceLineNo">36097</span> while (it.hasNext()) {<a name="line.36097"></a>
<span class="sourceLineNo">36098</span> final long ix = it.aLong;<a name="line.36098"></a>
<span class="sourceLineNo">36099</span> double ox;<a name="line.36099"></a>
<span class="sourceLineNo">36100</span> if (ix &gt; pax)<a name="line.36100"></a>
<span class="sourceLineNo">36101</span> ox = (pax);<a name="line.36101"></a>
<span class="sourceLineNo">36102</span> else<a name="line.36102"></a>
<span class="sourceLineNo">36103</span> ox = (ix);<a name="line.36103"></a>
<span class="sourceLineNo">36104</span> for (int j = 0; j &lt; is; j++) {<a name="line.36104"></a>
<span class="sourceLineNo">36105</span> oaf64data[it.oIndex + j] = ox;<a name="line.36105"></a>
<span class="sourceLineNo">36106</span> }<a name="line.36106"></a>
<span class="sourceLineNo">36107</span> }<a name="line.36107"></a>
<span class="sourceLineNo">36108</span> }<a name="line.36108"></a>
<span class="sourceLineNo">36109</span> } else {<a name="line.36109"></a>
<span class="sourceLineNo">36110</span> if (it.isOutputDouble()) {<a name="line.36110"></a>
<span class="sourceLineNo">36111</span> while (it.hasNext()) {<a name="line.36111"></a>
<span class="sourceLineNo">36112</span> for (int j = 0; j &lt; is; j++) {<a name="line.36112"></a>
<span class="sourceLineNo">36113</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.36113"></a>
<span class="sourceLineNo">36114</span> double ox;<a name="line.36114"></a>
<span class="sourceLineNo">36115</span> if (ix &gt; pax)<a name="line.36115"></a>
<span class="sourceLineNo">36116</span> ox = (pax);<a name="line.36116"></a>
<span class="sourceLineNo">36117</span> else<a name="line.36117"></a>
<span class="sourceLineNo">36118</span> ox = (ix);<a name="line.36118"></a>
<span class="sourceLineNo">36119</span> oaf64data[it.oIndex + j] = ox;<a name="line.36119"></a>
<span class="sourceLineNo">36120</span> }<a name="line.36120"></a>
<span class="sourceLineNo">36121</span> }<a name="line.36121"></a>
<span class="sourceLineNo">36122</span> } else {<a name="line.36122"></a>
<span class="sourceLineNo">36123</span> while (it.hasNext()) {<a name="line.36123"></a>
<span class="sourceLineNo">36124</span> for (int j = 0; j &lt; is; j++) {<a name="line.36124"></a>
<span class="sourceLineNo">36125</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.36125"></a>
<span class="sourceLineNo">36126</span> double ox;<a name="line.36126"></a>
<span class="sourceLineNo">36127</span> if (ix &gt; pax)<a name="line.36127"></a>
<span class="sourceLineNo">36128</span> ox = (pax);<a name="line.36128"></a>
<span class="sourceLineNo">36129</span> else<a name="line.36129"></a>
<span class="sourceLineNo">36130</span> ox = (ix);<a name="line.36130"></a>
<span class="sourceLineNo">36131</span> oaf64data[it.oIndex + j] = ox;<a name="line.36131"></a>
<span class="sourceLineNo">36132</span> }<a name="line.36132"></a>
<span class="sourceLineNo">36133</span> }<a name="line.36133"></a>
<span class="sourceLineNo">36134</span> }<a name="line.36134"></a>
<span class="sourceLineNo">36135</span> }<a name="line.36135"></a>
<span class="sourceLineNo">36136</span> break;<a name="line.36136"></a>
<span class="sourceLineNo">36137</span> default:<a name="line.36137"></a>
<span class="sourceLineNo">36138</span> throw new IllegalArgumentException("upperClip supports integer, compound integer, real, compound real datasets only");<a name="line.36138"></a>
<span class="sourceLineNo">36139</span> }<a name="line.36139"></a>
<span class="sourceLineNo">36140</span><a name="line.36140"></a>
<span class="sourceLineNo">36141</span> addFunctionName(result, "upperClip");<a name="line.36141"></a>
<span class="sourceLineNo">36142</span> return result;<a name="line.36142"></a>
<span class="sourceLineNo">36143</span> }<a name="line.36143"></a>
<span class="sourceLineNo">36144</span><a name="line.36144"></a>
<span class="sourceLineNo">36145</span> /**<a name="line.36145"></a>
<span class="sourceLineNo">36146</span> * clip - clip elements to limits<a name="line.36146"></a>
<span class="sourceLineNo">36147</span> * @param a<a name="line.36147"></a>
<span class="sourceLineNo">36148</span> * @param pa<a name="line.36148"></a>
<span class="sourceLineNo">36149</span> * @param pb<a name="line.36149"></a>
<span class="sourceLineNo">36150</span> * @return dataset<a name="line.36150"></a>
<span class="sourceLineNo">36151</span> */<a name="line.36151"></a>
<span class="sourceLineNo">36152</span> public static Dataset clip(final Object a, final Object pa, final Object pb) {<a name="line.36152"></a>
<span class="sourceLineNo">36153</span> return clip(a, null, pa, pb);<a name="line.36153"></a>
<span class="sourceLineNo">36154</span> }<a name="line.36154"></a>
<span class="sourceLineNo">36155</span><a name="line.36155"></a>
<span class="sourceLineNo">36156</span> /**<a name="line.36156"></a>
<span class="sourceLineNo">36157</span> * clip - clip elements to limits<a name="line.36157"></a>
<span class="sourceLineNo">36158</span> * @param a<a name="line.36158"></a>
<span class="sourceLineNo">36159</span> * @param o output can be null - in which case, a new dataset is created<a name="line.36159"></a>
<span class="sourceLineNo">36160</span> * @param pa<a name="line.36160"></a>
<span class="sourceLineNo">36161</span> * @param pb<a name="line.36161"></a>
<span class="sourceLineNo">36162</span> * @return dataset<a name="line.36162"></a>
<span class="sourceLineNo">36163</span> */<a name="line.36163"></a>
<span class="sourceLineNo">36164</span> public static Dataset clip(final Object a, final Dataset o, final Object pa, final Object pb) {<a name="line.36164"></a>
<span class="sourceLineNo">36165</span> Dataset da = a instanceof Dataset ? (Dataset) a : DatasetFactory.createFromObject(a);<a name="line.36165"></a>
<span class="sourceLineNo">36166</span> SingleInputBroadcastIterator it = new SingleInputBroadcastIterator(da, o, true);<a name="line.36166"></a>
<span class="sourceLineNo">36167</span> final Dataset result = it.getOutput();<a name="line.36167"></a>
<span class="sourceLineNo">36168</span> if (!result.isComplex()) {<a name="line.36168"></a>
<span class="sourceLineNo">36169</span> if (da.isComplex()) {<a name="line.36169"></a>
<span class="sourceLineNo">36170</span> da = da.getRealView();<a name="line.36170"></a>
<span class="sourceLineNo">36171</span> it = new SingleInputBroadcastIterator(da, result, true);<a name="line.36171"></a>
<span class="sourceLineNo">36172</span> }<a name="line.36172"></a>
<span class="sourceLineNo">36173</span> }<a name="line.36173"></a>
<span class="sourceLineNo">36174</span> final int is = result.getElementsPerItem();<a name="line.36174"></a>
<span class="sourceLineNo">36175</span> final int as = da.getElementsPerItem();<a name="line.36175"></a>
<span class="sourceLineNo">36176</span> final int dt = result.getDType();<a name="line.36176"></a>
<span class="sourceLineNo">36177</span> final double pax = DTypeUtils.toReal(pa);<a name="line.36177"></a>
<span class="sourceLineNo">36178</span> final double pbx = DTypeUtils.toReal(pb);<a name="line.36178"></a>
<span class="sourceLineNo">36179</span><a name="line.36179"></a>
<span class="sourceLineNo">36180</span> switch(dt) {<a name="line.36180"></a>
<span class="sourceLineNo">36181</span> case Dataset.INT8:<a name="line.36181"></a>
<span class="sourceLineNo">36182</span> final byte[] oi8data = ((ByteDataset) result).getData();<a name="line.36182"></a>
<span class="sourceLineNo">36183</span> if (it.isOutputDouble()) {<a name="line.36183"></a>
<span class="sourceLineNo">36184</span> while (it.hasNext()) {<a name="line.36184"></a>
<span class="sourceLineNo">36185</span> final double ix = it.aDouble;<a name="line.36185"></a>
<span class="sourceLineNo">36186</span> byte ox;<a name="line.36186"></a>
<span class="sourceLineNo">36187</span> if (ix &lt; pax)<a name="line.36187"></a>
<span class="sourceLineNo">36188</span> ox = (byte) toLong(pax);<a name="line.36188"></a>
<span class="sourceLineNo">36189</span> else if (ix &gt; pbx)<a name="line.36189"></a>
<span class="sourceLineNo">36190</span> ox = (byte) toLong(pbx);<a name="line.36190"></a>
<span class="sourceLineNo">36191</span> else<a name="line.36191"></a>
<span class="sourceLineNo">36192</span> ox = (byte) toLong(ix);<a name="line.36192"></a>
<span class="sourceLineNo">36193</span> oi8data[it.oIndex] = ox;<a name="line.36193"></a>
<span class="sourceLineNo">36194</span> }<a name="line.36194"></a>
<span class="sourceLineNo">36195</span> } else {<a name="line.36195"></a>
<span class="sourceLineNo">36196</span> while (it.hasNext()) {<a name="line.36196"></a>
<span class="sourceLineNo">36197</span> final long ix = it.aLong;<a name="line.36197"></a>
<span class="sourceLineNo">36198</span> byte ox;<a name="line.36198"></a>
<span class="sourceLineNo">36199</span> if (ix &lt; pax)<a name="line.36199"></a>
<span class="sourceLineNo">36200</span> ox = (byte) toLong(pax);<a name="line.36200"></a>
<span class="sourceLineNo">36201</span> else if (ix &gt; pbx)<a name="line.36201"></a>
<span class="sourceLineNo">36202</span> ox = (byte) toLong(pbx);<a name="line.36202"></a>
<span class="sourceLineNo">36203</span> else<a name="line.36203"></a>
<span class="sourceLineNo">36204</span> ox = (byte) toLong(ix);<a name="line.36204"></a>
<span class="sourceLineNo">36205</span> oi8data[it.oIndex] = ox;<a name="line.36205"></a>
<span class="sourceLineNo">36206</span> }<a name="line.36206"></a>
<span class="sourceLineNo">36207</span> }<a name="line.36207"></a>
<span class="sourceLineNo">36208</span> break;<a name="line.36208"></a>
<span class="sourceLineNo">36209</span> case Dataset.INT16:<a name="line.36209"></a>
<span class="sourceLineNo">36210</span> final short[] oi16data = ((ShortDataset) result).getData();<a name="line.36210"></a>
<span class="sourceLineNo">36211</span> if (it.isOutputDouble()) {<a name="line.36211"></a>
<span class="sourceLineNo">36212</span> while (it.hasNext()) {<a name="line.36212"></a>
<span class="sourceLineNo">36213</span> final double ix = it.aDouble;<a name="line.36213"></a>
<span class="sourceLineNo">36214</span> short ox;<a name="line.36214"></a>
<span class="sourceLineNo">36215</span> if (ix &lt; pax)<a name="line.36215"></a>
<span class="sourceLineNo">36216</span> ox = (short) toLong(pax);<a name="line.36216"></a>
<span class="sourceLineNo">36217</span> else if (ix &gt; pbx)<a name="line.36217"></a>
<span class="sourceLineNo">36218</span> ox = (short) toLong(pbx);<a name="line.36218"></a>
<span class="sourceLineNo">36219</span> else<a name="line.36219"></a>
<span class="sourceLineNo">36220</span> ox = (short) toLong(ix);<a name="line.36220"></a>
<span class="sourceLineNo">36221</span> oi16data[it.oIndex] = ox;<a name="line.36221"></a>
<span class="sourceLineNo">36222</span> }<a name="line.36222"></a>
<span class="sourceLineNo">36223</span> } else {<a name="line.36223"></a>
<span class="sourceLineNo">36224</span> while (it.hasNext()) {<a name="line.36224"></a>
<span class="sourceLineNo">36225</span> final long ix = it.aLong;<a name="line.36225"></a>
<span class="sourceLineNo">36226</span> short ox;<a name="line.36226"></a>
<span class="sourceLineNo">36227</span> if (ix &lt; pax)<a name="line.36227"></a>
<span class="sourceLineNo">36228</span> ox = (short) toLong(pax);<a name="line.36228"></a>
<span class="sourceLineNo">36229</span> else if (ix &gt; pbx)<a name="line.36229"></a>
<span class="sourceLineNo">36230</span> ox = (short) toLong(pbx);<a name="line.36230"></a>
<span class="sourceLineNo">36231</span> else<a name="line.36231"></a>
<span class="sourceLineNo">36232</span> ox = (short) toLong(ix);<a name="line.36232"></a>
<span class="sourceLineNo">36233</span> oi16data[it.oIndex] = ox;<a name="line.36233"></a>
<span class="sourceLineNo">36234</span> }<a name="line.36234"></a>
<span class="sourceLineNo">36235</span> }<a name="line.36235"></a>
<span class="sourceLineNo">36236</span> break;<a name="line.36236"></a>
<span class="sourceLineNo">36237</span> case Dataset.INT64:<a name="line.36237"></a>
<span class="sourceLineNo">36238</span> final long[] oi64data = ((LongDataset) result).getData();<a name="line.36238"></a>
<span class="sourceLineNo">36239</span> if (it.isOutputDouble()) {<a name="line.36239"></a>
<span class="sourceLineNo">36240</span> while (it.hasNext()) {<a name="line.36240"></a>
<span class="sourceLineNo">36241</span> final double ix = it.aDouble;<a name="line.36241"></a>
<span class="sourceLineNo">36242</span> long ox;<a name="line.36242"></a>
<span class="sourceLineNo">36243</span> if (ix &lt; pax)<a name="line.36243"></a>
<span class="sourceLineNo">36244</span> ox = toLong(pax);<a name="line.36244"></a>
<span class="sourceLineNo">36245</span> else if (ix &gt; pbx)<a name="line.36245"></a>
<span class="sourceLineNo">36246</span> ox = toLong(pbx);<a name="line.36246"></a>
<span class="sourceLineNo">36247</span> else<a name="line.36247"></a>
<span class="sourceLineNo">36248</span> ox = toLong(ix);<a name="line.36248"></a>
<span class="sourceLineNo">36249</span> oi64data[it.oIndex] = ox;<a name="line.36249"></a>
<span class="sourceLineNo">36250</span> }<a name="line.36250"></a>
<span class="sourceLineNo">36251</span> } else {<a name="line.36251"></a>
<span class="sourceLineNo">36252</span> while (it.hasNext()) {<a name="line.36252"></a>
<span class="sourceLineNo">36253</span> final long ix = it.aLong;<a name="line.36253"></a>
<span class="sourceLineNo">36254</span> long ox;<a name="line.36254"></a>
<span class="sourceLineNo">36255</span> if (ix &lt; pax)<a name="line.36255"></a>
<span class="sourceLineNo">36256</span> ox = toLong(pax);<a name="line.36256"></a>
<span class="sourceLineNo">36257</span> else if (ix &gt; pbx)<a name="line.36257"></a>
<span class="sourceLineNo">36258</span> ox = toLong(pbx);<a name="line.36258"></a>
<span class="sourceLineNo">36259</span> else<a name="line.36259"></a>
<span class="sourceLineNo">36260</span> ox = toLong(ix);<a name="line.36260"></a>
<span class="sourceLineNo">36261</span> oi64data[it.oIndex] = ox;<a name="line.36261"></a>
<span class="sourceLineNo">36262</span> }<a name="line.36262"></a>
<span class="sourceLineNo">36263</span> }<a name="line.36263"></a>
<span class="sourceLineNo">36264</span> break;<a name="line.36264"></a>
<span class="sourceLineNo">36265</span> case Dataset.INT32:<a name="line.36265"></a>
<span class="sourceLineNo">36266</span> final int[] oi32data = ((IntegerDataset) result).getData();<a name="line.36266"></a>
<span class="sourceLineNo">36267</span> if (it.isOutputDouble()) {<a name="line.36267"></a>
<span class="sourceLineNo">36268</span> while (it.hasNext()) {<a name="line.36268"></a>
<span class="sourceLineNo">36269</span> final double ix = it.aDouble;<a name="line.36269"></a>
<span class="sourceLineNo">36270</span> int ox;<a name="line.36270"></a>
<span class="sourceLineNo">36271</span> if (ix &lt; pax)<a name="line.36271"></a>
<span class="sourceLineNo">36272</span> ox = (int) toLong(pax);<a name="line.36272"></a>
<span class="sourceLineNo">36273</span> else if (ix &gt; pbx)<a name="line.36273"></a>
<span class="sourceLineNo">36274</span> ox = (int) toLong(pbx);<a name="line.36274"></a>
<span class="sourceLineNo">36275</span> else<a name="line.36275"></a>
<span class="sourceLineNo">36276</span> ox = (int) toLong(ix);<a name="line.36276"></a>
<span class="sourceLineNo">36277</span> oi32data[it.oIndex] = ox;<a name="line.36277"></a>
<span class="sourceLineNo">36278</span> }<a name="line.36278"></a>
<span class="sourceLineNo">36279</span> } else {<a name="line.36279"></a>
<span class="sourceLineNo">36280</span> while (it.hasNext()) {<a name="line.36280"></a>
<span class="sourceLineNo">36281</span> final long ix = it.aLong;<a name="line.36281"></a>
<span class="sourceLineNo">36282</span> int ox;<a name="line.36282"></a>
<span class="sourceLineNo">36283</span> if (ix &lt; pax)<a name="line.36283"></a>
<span class="sourceLineNo">36284</span> ox = (int) toLong(pax);<a name="line.36284"></a>
<span class="sourceLineNo">36285</span> else if (ix &gt; pbx)<a name="line.36285"></a>
<span class="sourceLineNo">36286</span> ox = (int) toLong(pbx);<a name="line.36286"></a>
<span class="sourceLineNo">36287</span> else<a name="line.36287"></a>
<span class="sourceLineNo">36288</span> ox = (int) toLong(ix);<a name="line.36288"></a>
<span class="sourceLineNo">36289</span> oi32data[it.oIndex] = ox;<a name="line.36289"></a>
<span class="sourceLineNo">36290</span> }<a name="line.36290"></a>
<span class="sourceLineNo">36291</span> }<a name="line.36291"></a>
<span class="sourceLineNo">36292</span> break;<a name="line.36292"></a>
<span class="sourceLineNo">36293</span> case Dataset.ARRAYINT8:<a name="line.36293"></a>
<span class="sourceLineNo">36294</span> final byte[] oai8data = ((CompoundByteDataset) result).getData();<a name="line.36294"></a>
<span class="sourceLineNo">36295</span> if (is == 1) {<a name="line.36295"></a>
<span class="sourceLineNo">36296</span> if (it.isOutputDouble()) {<a name="line.36296"></a>
<span class="sourceLineNo">36297</span> while (it.hasNext()) {<a name="line.36297"></a>
<span class="sourceLineNo">36298</span> final double ix = it.aDouble;<a name="line.36298"></a>
<span class="sourceLineNo">36299</span> byte ox;<a name="line.36299"></a>
<span class="sourceLineNo">36300</span> if (ix &lt; pax)<a name="line.36300"></a>
<span class="sourceLineNo">36301</span> ox = (byte) toLong(pax);<a name="line.36301"></a>
<span class="sourceLineNo">36302</span> else if (ix &gt; pbx)<a name="line.36302"></a>
<span class="sourceLineNo">36303</span> ox = (byte) toLong(pbx);<a name="line.36303"></a>
<span class="sourceLineNo">36304</span> else<a name="line.36304"></a>
<span class="sourceLineNo">36305</span> ox = (byte) toLong(ix);<a name="line.36305"></a>
<span class="sourceLineNo">36306</span> oai8data[it.oIndex] = ox;<a name="line.36306"></a>
<span class="sourceLineNo">36307</span> }<a name="line.36307"></a>
<span class="sourceLineNo">36308</span> } else {<a name="line.36308"></a>
<span class="sourceLineNo">36309</span> while (it.hasNext()) {<a name="line.36309"></a>
<span class="sourceLineNo">36310</span> final long ix = it.aLong;<a name="line.36310"></a>
<span class="sourceLineNo">36311</span> byte ox;<a name="line.36311"></a>
<span class="sourceLineNo">36312</span> if (ix &lt; pax)<a name="line.36312"></a>
<span class="sourceLineNo">36313</span> ox = (byte) toLong(pax);<a name="line.36313"></a>
<span class="sourceLineNo">36314</span> else if (ix &gt; pbx)<a name="line.36314"></a>
<span class="sourceLineNo">36315</span> ox = (byte) toLong(pbx);<a name="line.36315"></a>
<span class="sourceLineNo">36316</span> else<a name="line.36316"></a>
<span class="sourceLineNo">36317</span> ox = (byte) toLong(ix);<a name="line.36317"></a>
<span class="sourceLineNo">36318</span> oai8data[it.oIndex] = ox;<a name="line.36318"></a>
<span class="sourceLineNo">36319</span> }<a name="line.36319"></a>
<span class="sourceLineNo">36320</span> }<a name="line.36320"></a>
<span class="sourceLineNo">36321</span> } else if (as == 1) {<a name="line.36321"></a>
<span class="sourceLineNo">36322</span> if (it.isOutputDouble()) {<a name="line.36322"></a>
<span class="sourceLineNo">36323</span> while (it.hasNext()) {<a name="line.36323"></a>
<span class="sourceLineNo">36324</span> final double ix = it.aDouble;<a name="line.36324"></a>
<span class="sourceLineNo">36325</span> byte ox;<a name="line.36325"></a>
<span class="sourceLineNo">36326</span> if (ix &lt; pax)<a name="line.36326"></a>
<span class="sourceLineNo">36327</span> ox = (byte) toLong(pax);<a name="line.36327"></a>
<span class="sourceLineNo">36328</span> else if (ix &gt; pbx)<a name="line.36328"></a>
<span class="sourceLineNo">36329</span> ox = (byte) toLong(pbx);<a name="line.36329"></a>
<span class="sourceLineNo">36330</span> else<a name="line.36330"></a>
<span class="sourceLineNo">36331</span> ox = (byte) toLong(ix);<a name="line.36331"></a>
<span class="sourceLineNo">36332</span> for (int j = 0; j &lt; is; j++) {<a name="line.36332"></a>
<span class="sourceLineNo">36333</span> oai8data[it.oIndex + j] = ox;<a name="line.36333"></a>
<span class="sourceLineNo">36334</span> }<a name="line.36334"></a>
<span class="sourceLineNo">36335</span> }<a name="line.36335"></a>
<span class="sourceLineNo">36336</span> } else {<a name="line.36336"></a>
<span class="sourceLineNo">36337</span> while (it.hasNext()) {<a name="line.36337"></a>
<span class="sourceLineNo">36338</span> final long ix = it.aLong;<a name="line.36338"></a>
<span class="sourceLineNo">36339</span> byte ox;<a name="line.36339"></a>
<span class="sourceLineNo">36340</span> if (ix &lt; pax)<a name="line.36340"></a>
<span class="sourceLineNo">36341</span> ox = (byte) toLong(pax);<a name="line.36341"></a>
<span class="sourceLineNo">36342</span> else if (ix &gt; pbx)<a name="line.36342"></a>
<span class="sourceLineNo">36343</span> ox = (byte) toLong(pbx);<a name="line.36343"></a>
<span class="sourceLineNo">36344</span> else<a name="line.36344"></a>
<span class="sourceLineNo">36345</span> ox = (byte) toLong(ix);<a name="line.36345"></a>
<span class="sourceLineNo">36346</span> for (int j = 0; j &lt; is; j++) {<a name="line.36346"></a>
<span class="sourceLineNo">36347</span> oai8data[it.oIndex + j] = ox;<a name="line.36347"></a>
<span class="sourceLineNo">36348</span> }<a name="line.36348"></a>
<span class="sourceLineNo">36349</span> }<a name="line.36349"></a>
<span class="sourceLineNo">36350</span> }<a name="line.36350"></a>
<span class="sourceLineNo">36351</span> } else {<a name="line.36351"></a>
<span class="sourceLineNo">36352</span> if (it.isOutputDouble()) {<a name="line.36352"></a>
<span class="sourceLineNo">36353</span> while (it.hasNext()) {<a name="line.36353"></a>
<span class="sourceLineNo">36354</span> for (int j = 0; j &lt; is; j++) {<a name="line.36354"></a>
<span class="sourceLineNo">36355</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.36355"></a>
<span class="sourceLineNo">36356</span> byte ox;<a name="line.36356"></a>
<span class="sourceLineNo">36357</span> if (ix &lt; pax)<a name="line.36357"></a>
<span class="sourceLineNo">36358</span> ox = (byte) toLong(pax);<a name="line.36358"></a>
<span class="sourceLineNo">36359</span> else if (ix &gt; pbx)<a name="line.36359"></a>
<span class="sourceLineNo">36360</span> ox = (byte) toLong(pbx);<a name="line.36360"></a>
<span class="sourceLineNo">36361</span> else<a name="line.36361"></a>
<span class="sourceLineNo">36362</span> ox = (byte) toLong(ix);<a name="line.36362"></a>
<span class="sourceLineNo">36363</span> oai8data[it.oIndex + j] = ox;<a name="line.36363"></a>
<span class="sourceLineNo">36364</span> }<a name="line.36364"></a>
<span class="sourceLineNo">36365</span> }<a name="line.36365"></a>
<span class="sourceLineNo">36366</span> } else {<a name="line.36366"></a>
<span class="sourceLineNo">36367</span> while (it.hasNext()) {<a name="line.36367"></a>
<span class="sourceLineNo">36368</span> for (int j = 0; j &lt; is; j++) {<a name="line.36368"></a>
<span class="sourceLineNo">36369</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.36369"></a>
<span class="sourceLineNo">36370</span> byte ox;<a name="line.36370"></a>
<span class="sourceLineNo">36371</span> if (ix &lt; pax)<a name="line.36371"></a>
<span class="sourceLineNo">36372</span> ox = (byte) toLong(pax);<a name="line.36372"></a>
<span class="sourceLineNo">36373</span> else if (ix &gt; pbx)<a name="line.36373"></a>
<span class="sourceLineNo">36374</span> ox = (byte) toLong(pbx);<a name="line.36374"></a>
<span class="sourceLineNo">36375</span> else<a name="line.36375"></a>
<span class="sourceLineNo">36376</span> ox = (byte) toLong(ix);<a name="line.36376"></a>
<span class="sourceLineNo">36377</span> oai8data[it.oIndex + j] = ox;<a name="line.36377"></a>
<span class="sourceLineNo">36378</span> }<a name="line.36378"></a>
<span class="sourceLineNo">36379</span> }<a name="line.36379"></a>
<span class="sourceLineNo">36380</span> }<a name="line.36380"></a>
<span class="sourceLineNo">36381</span> }<a name="line.36381"></a>
<span class="sourceLineNo">36382</span> break;<a name="line.36382"></a>
<span class="sourceLineNo">36383</span> case Dataset.ARRAYINT16:<a name="line.36383"></a>
<span class="sourceLineNo">36384</span> final short[] oai16data = ((CompoundShortDataset) result).getData();<a name="line.36384"></a>
<span class="sourceLineNo">36385</span> if (is == 1) {<a name="line.36385"></a>
<span class="sourceLineNo">36386</span> if (it.isOutputDouble()) {<a name="line.36386"></a>
<span class="sourceLineNo">36387</span> while (it.hasNext()) {<a name="line.36387"></a>
<span class="sourceLineNo">36388</span> final double ix = it.aDouble;<a name="line.36388"></a>
<span class="sourceLineNo">36389</span> short ox;<a name="line.36389"></a>
<span class="sourceLineNo">36390</span> if (ix &lt; pax)<a name="line.36390"></a>
<span class="sourceLineNo">36391</span> ox = (short) toLong(pax);<a name="line.36391"></a>
<span class="sourceLineNo">36392</span> else if (ix &gt; pbx)<a name="line.36392"></a>
<span class="sourceLineNo">36393</span> ox = (short) toLong(pbx);<a name="line.36393"></a>
<span class="sourceLineNo">36394</span> else<a name="line.36394"></a>
<span class="sourceLineNo">36395</span> ox = (short) toLong(ix);<a name="line.36395"></a>
<span class="sourceLineNo">36396</span> oai16data[it.oIndex] = ox;<a name="line.36396"></a>
<span class="sourceLineNo">36397</span> }<a name="line.36397"></a>
<span class="sourceLineNo">36398</span> } else {<a name="line.36398"></a>
<span class="sourceLineNo">36399</span> while (it.hasNext()) {<a name="line.36399"></a>
<span class="sourceLineNo">36400</span> final long ix = it.aLong;<a name="line.36400"></a>
<span class="sourceLineNo">36401</span> short ox;<a name="line.36401"></a>
<span class="sourceLineNo">36402</span> if (ix &lt; pax)<a name="line.36402"></a>
<span class="sourceLineNo">36403</span> ox = (short) toLong(pax);<a name="line.36403"></a>
<span class="sourceLineNo">36404</span> else if (ix &gt; pbx)<a name="line.36404"></a>
<span class="sourceLineNo">36405</span> ox = (short) toLong(pbx);<a name="line.36405"></a>
<span class="sourceLineNo">36406</span> else<a name="line.36406"></a>
<span class="sourceLineNo">36407</span> ox = (short) toLong(ix);<a name="line.36407"></a>
<span class="sourceLineNo">36408</span> oai16data[it.oIndex] = ox;<a name="line.36408"></a>
<span class="sourceLineNo">36409</span> }<a name="line.36409"></a>
<span class="sourceLineNo">36410</span> }<a name="line.36410"></a>
<span class="sourceLineNo">36411</span> } else if (as == 1) {<a name="line.36411"></a>
<span class="sourceLineNo">36412</span> if (it.isOutputDouble()) {<a name="line.36412"></a>
<span class="sourceLineNo">36413</span> while (it.hasNext()) {<a name="line.36413"></a>
<span class="sourceLineNo">36414</span> final double ix = it.aDouble;<a name="line.36414"></a>
<span class="sourceLineNo">36415</span> short ox;<a name="line.36415"></a>
<span class="sourceLineNo">36416</span> if (ix &lt; pax)<a name="line.36416"></a>
<span class="sourceLineNo">36417</span> ox = (short) toLong(pax);<a name="line.36417"></a>
<span class="sourceLineNo">36418</span> else if (ix &gt; pbx)<a name="line.36418"></a>
<span class="sourceLineNo">36419</span> ox = (short) toLong(pbx);<a name="line.36419"></a>
<span class="sourceLineNo">36420</span> else<a name="line.36420"></a>
<span class="sourceLineNo">36421</span> ox = (short) toLong(ix);<a name="line.36421"></a>
<span class="sourceLineNo">36422</span> for (int j = 0; j &lt; is; j++) {<a name="line.36422"></a>
<span class="sourceLineNo">36423</span> oai16data[it.oIndex + j] = ox;<a name="line.36423"></a>
<span class="sourceLineNo">36424</span> }<a name="line.36424"></a>
<span class="sourceLineNo">36425</span> }<a name="line.36425"></a>
<span class="sourceLineNo">36426</span> } else {<a name="line.36426"></a>
<span class="sourceLineNo">36427</span> while (it.hasNext()) {<a name="line.36427"></a>
<span class="sourceLineNo">36428</span> final long ix = it.aLong;<a name="line.36428"></a>
<span class="sourceLineNo">36429</span> short ox;<a name="line.36429"></a>
<span class="sourceLineNo">36430</span> if (ix &lt; pax)<a name="line.36430"></a>
<span class="sourceLineNo">36431</span> ox = (short) toLong(pax);<a name="line.36431"></a>
<span class="sourceLineNo">36432</span> else if (ix &gt; pbx)<a name="line.36432"></a>
<span class="sourceLineNo">36433</span> ox = (short) toLong(pbx);<a name="line.36433"></a>
<span class="sourceLineNo">36434</span> else<a name="line.36434"></a>
<span class="sourceLineNo">36435</span> ox = (short) toLong(ix);<a name="line.36435"></a>
<span class="sourceLineNo">36436</span> for (int j = 0; j &lt; is; j++) {<a name="line.36436"></a>
<span class="sourceLineNo">36437</span> oai16data[it.oIndex + j] = ox;<a name="line.36437"></a>
<span class="sourceLineNo">36438</span> }<a name="line.36438"></a>
<span class="sourceLineNo">36439</span> }<a name="line.36439"></a>
<span class="sourceLineNo">36440</span> }<a name="line.36440"></a>
<span class="sourceLineNo">36441</span> } else {<a name="line.36441"></a>
<span class="sourceLineNo">36442</span> if (it.isOutputDouble()) {<a name="line.36442"></a>
<span class="sourceLineNo">36443</span> while (it.hasNext()) {<a name="line.36443"></a>
<span class="sourceLineNo">36444</span> for (int j = 0; j &lt; is; j++) {<a name="line.36444"></a>
<span class="sourceLineNo">36445</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.36445"></a>
<span class="sourceLineNo">36446</span> short ox;<a name="line.36446"></a>
<span class="sourceLineNo">36447</span> if (ix &lt; pax)<a name="line.36447"></a>
<span class="sourceLineNo">36448</span> ox = (short) toLong(pax);<a name="line.36448"></a>
<span class="sourceLineNo">36449</span> else if (ix &gt; pbx)<a name="line.36449"></a>
<span class="sourceLineNo">36450</span> ox = (short) toLong(pbx);<a name="line.36450"></a>
<span class="sourceLineNo">36451</span> else<a name="line.36451"></a>
<span class="sourceLineNo">36452</span> ox = (short) toLong(ix);<a name="line.36452"></a>
<span class="sourceLineNo">36453</span> oai16data[it.oIndex + j] = ox;<a name="line.36453"></a>
<span class="sourceLineNo">36454</span> }<a name="line.36454"></a>
<span class="sourceLineNo">36455</span> }<a name="line.36455"></a>
<span class="sourceLineNo">36456</span> } else {<a name="line.36456"></a>
<span class="sourceLineNo">36457</span> while (it.hasNext()) {<a name="line.36457"></a>
<span class="sourceLineNo">36458</span> for (int j = 0; j &lt; is; j++) {<a name="line.36458"></a>
<span class="sourceLineNo">36459</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.36459"></a>
<span class="sourceLineNo">36460</span> short ox;<a name="line.36460"></a>
<span class="sourceLineNo">36461</span> if (ix &lt; pax)<a name="line.36461"></a>
<span class="sourceLineNo">36462</span> ox = (short) toLong(pax);<a name="line.36462"></a>
<span class="sourceLineNo">36463</span> else if (ix &gt; pbx)<a name="line.36463"></a>
<span class="sourceLineNo">36464</span> ox = (short) toLong(pbx);<a name="line.36464"></a>
<span class="sourceLineNo">36465</span> else<a name="line.36465"></a>
<span class="sourceLineNo">36466</span> ox = (short) toLong(ix);<a name="line.36466"></a>
<span class="sourceLineNo">36467</span> oai16data[it.oIndex + j] = ox;<a name="line.36467"></a>
<span class="sourceLineNo">36468</span> }<a name="line.36468"></a>
<span class="sourceLineNo">36469</span> }<a name="line.36469"></a>
<span class="sourceLineNo">36470</span> }<a name="line.36470"></a>
<span class="sourceLineNo">36471</span> }<a name="line.36471"></a>
<span class="sourceLineNo">36472</span> break;<a name="line.36472"></a>
<span class="sourceLineNo">36473</span> case Dataset.ARRAYINT64:<a name="line.36473"></a>
<span class="sourceLineNo">36474</span> final long[] oai64data = ((CompoundLongDataset) result).getData();<a name="line.36474"></a>
<span class="sourceLineNo">36475</span> if (is == 1) {<a name="line.36475"></a>
<span class="sourceLineNo">36476</span> if (it.isOutputDouble()) {<a name="line.36476"></a>
<span class="sourceLineNo">36477</span> while (it.hasNext()) {<a name="line.36477"></a>
<span class="sourceLineNo">36478</span> final double ix = it.aDouble;<a name="line.36478"></a>
<span class="sourceLineNo">36479</span> long ox;<a name="line.36479"></a>
<span class="sourceLineNo">36480</span> if (ix &lt; pax)<a name="line.36480"></a>
<span class="sourceLineNo">36481</span> ox = toLong(pax);<a name="line.36481"></a>
<span class="sourceLineNo">36482</span> else if (ix &gt; pbx)<a name="line.36482"></a>
<span class="sourceLineNo">36483</span> ox = toLong(pbx);<a name="line.36483"></a>
<span class="sourceLineNo">36484</span> else<a name="line.36484"></a>
<span class="sourceLineNo">36485</span> ox = toLong(ix);<a name="line.36485"></a>
<span class="sourceLineNo">36486</span> oai64data[it.oIndex] = ox;<a name="line.36486"></a>
<span class="sourceLineNo">36487</span> }<a name="line.36487"></a>
<span class="sourceLineNo">36488</span> } else {<a name="line.36488"></a>
<span class="sourceLineNo">36489</span> while (it.hasNext()) {<a name="line.36489"></a>
<span class="sourceLineNo">36490</span> final long ix = it.aLong;<a name="line.36490"></a>
<span class="sourceLineNo">36491</span> long ox;<a name="line.36491"></a>
<span class="sourceLineNo">36492</span> if (ix &lt; pax)<a name="line.36492"></a>
<span class="sourceLineNo">36493</span> ox = toLong(pax);<a name="line.36493"></a>
<span class="sourceLineNo">36494</span> else if (ix &gt; pbx)<a name="line.36494"></a>
<span class="sourceLineNo">36495</span> ox = toLong(pbx);<a name="line.36495"></a>
<span class="sourceLineNo">36496</span> else<a name="line.36496"></a>
<span class="sourceLineNo">36497</span> ox = toLong(ix);<a name="line.36497"></a>
<span class="sourceLineNo">36498</span> oai64data[it.oIndex] = ox;<a name="line.36498"></a>
<span class="sourceLineNo">36499</span> }<a name="line.36499"></a>
<span class="sourceLineNo">36500</span> }<a name="line.36500"></a>
<span class="sourceLineNo">36501</span> } else if (as == 1) {<a name="line.36501"></a>
<span class="sourceLineNo">36502</span> if (it.isOutputDouble()) {<a name="line.36502"></a>
<span class="sourceLineNo">36503</span> while (it.hasNext()) {<a name="line.36503"></a>
<span class="sourceLineNo">36504</span> final double ix = it.aDouble;<a name="line.36504"></a>
<span class="sourceLineNo">36505</span> long ox;<a name="line.36505"></a>
<span class="sourceLineNo">36506</span> if (ix &lt; pax)<a name="line.36506"></a>
<span class="sourceLineNo">36507</span> ox = toLong(pax);<a name="line.36507"></a>
<span class="sourceLineNo">36508</span> else if (ix &gt; pbx)<a name="line.36508"></a>
<span class="sourceLineNo">36509</span> ox = toLong(pbx);<a name="line.36509"></a>
<span class="sourceLineNo">36510</span> else<a name="line.36510"></a>
<span class="sourceLineNo">36511</span> ox = toLong(ix);<a name="line.36511"></a>
<span class="sourceLineNo">36512</span> for (int j = 0; j &lt; is; j++) {<a name="line.36512"></a>
<span class="sourceLineNo">36513</span> oai64data[it.oIndex + j] = ox;<a name="line.36513"></a>
<span class="sourceLineNo">36514</span> }<a name="line.36514"></a>
<span class="sourceLineNo">36515</span> }<a name="line.36515"></a>
<span class="sourceLineNo">36516</span> } else {<a name="line.36516"></a>
<span class="sourceLineNo">36517</span> while (it.hasNext()) {<a name="line.36517"></a>
<span class="sourceLineNo">36518</span> final long ix = it.aLong;<a name="line.36518"></a>
<span class="sourceLineNo">36519</span> long ox;<a name="line.36519"></a>
<span class="sourceLineNo">36520</span> if (ix &lt; pax)<a name="line.36520"></a>
<span class="sourceLineNo">36521</span> ox = toLong(pax);<a name="line.36521"></a>
<span class="sourceLineNo">36522</span> else if (ix &gt; pbx)<a name="line.36522"></a>
<span class="sourceLineNo">36523</span> ox = toLong(pbx);<a name="line.36523"></a>
<span class="sourceLineNo">36524</span> else<a name="line.36524"></a>
<span class="sourceLineNo">36525</span> ox = toLong(ix);<a name="line.36525"></a>
<span class="sourceLineNo">36526</span> for (int j = 0; j &lt; is; j++) {<a name="line.36526"></a>
<span class="sourceLineNo">36527</span> oai64data[it.oIndex + j] = ox;<a name="line.36527"></a>
<span class="sourceLineNo">36528</span> }<a name="line.36528"></a>
<span class="sourceLineNo">36529</span> }<a name="line.36529"></a>
<span class="sourceLineNo">36530</span> }<a name="line.36530"></a>
<span class="sourceLineNo">36531</span> } else {<a name="line.36531"></a>
<span class="sourceLineNo">36532</span> if (it.isOutputDouble()) {<a name="line.36532"></a>
<span class="sourceLineNo">36533</span> while (it.hasNext()) {<a name="line.36533"></a>
<span class="sourceLineNo">36534</span> for (int j = 0; j &lt; is; j++) {<a name="line.36534"></a>
<span class="sourceLineNo">36535</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.36535"></a>
<span class="sourceLineNo">36536</span> long ox;<a name="line.36536"></a>
<span class="sourceLineNo">36537</span> if (ix &lt; pax)<a name="line.36537"></a>
<span class="sourceLineNo">36538</span> ox = toLong(pax);<a name="line.36538"></a>
<span class="sourceLineNo">36539</span> else if (ix &gt; pbx)<a name="line.36539"></a>
<span class="sourceLineNo">36540</span> ox = toLong(pbx);<a name="line.36540"></a>
<span class="sourceLineNo">36541</span> else<a name="line.36541"></a>
<span class="sourceLineNo">36542</span> ox = toLong(ix);<a name="line.36542"></a>
<span class="sourceLineNo">36543</span> oai64data[it.oIndex + j] = ox;<a name="line.36543"></a>
<span class="sourceLineNo">36544</span> }<a name="line.36544"></a>
<span class="sourceLineNo">36545</span> }<a name="line.36545"></a>
<span class="sourceLineNo">36546</span> } else {<a name="line.36546"></a>
<span class="sourceLineNo">36547</span> while (it.hasNext()) {<a name="line.36547"></a>
<span class="sourceLineNo">36548</span> for (int j = 0; j &lt; is; j++) {<a name="line.36548"></a>
<span class="sourceLineNo">36549</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.36549"></a>
<span class="sourceLineNo">36550</span> long ox;<a name="line.36550"></a>
<span class="sourceLineNo">36551</span> if (ix &lt; pax)<a name="line.36551"></a>
<span class="sourceLineNo">36552</span> ox = toLong(pax);<a name="line.36552"></a>
<span class="sourceLineNo">36553</span> else if (ix &gt; pbx)<a name="line.36553"></a>
<span class="sourceLineNo">36554</span> ox = toLong(pbx);<a name="line.36554"></a>
<span class="sourceLineNo">36555</span> else<a name="line.36555"></a>
<span class="sourceLineNo">36556</span> ox = toLong(ix);<a name="line.36556"></a>
<span class="sourceLineNo">36557</span> oai64data[it.oIndex + j] = ox;<a name="line.36557"></a>
<span class="sourceLineNo">36558</span> }<a name="line.36558"></a>
<span class="sourceLineNo">36559</span> }<a name="line.36559"></a>
<span class="sourceLineNo">36560</span> }<a name="line.36560"></a>
<span class="sourceLineNo">36561</span> }<a name="line.36561"></a>
<span class="sourceLineNo">36562</span> break;<a name="line.36562"></a>
<span class="sourceLineNo">36563</span> case Dataset.ARRAYINT32:<a name="line.36563"></a>
<span class="sourceLineNo">36564</span> final int[] oai32data = ((CompoundIntegerDataset) result).getData();<a name="line.36564"></a>
<span class="sourceLineNo">36565</span> if (is == 1) {<a name="line.36565"></a>
<span class="sourceLineNo">36566</span> if (it.isOutputDouble()) {<a name="line.36566"></a>
<span class="sourceLineNo">36567</span> while (it.hasNext()) {<a name="line.36567"></a>
<span class="sourceLineNo">36568</span> final double ix = it.aDouble;<a name="line.36568"></a>
<span class="sourceLineNo">36569</span> int ox;<a name="line.36569"></a>
<span class="sourceLineNo">36570</span> if (ix &lt; pax)<a name="line.36570"></a>
<span class="sourceLineNo">36571</span> ox = (int) toLong(pax);<a name="line.36571"></a>
<span class="sourceLineNo">36572</span> else if (ix &gt; pbx)<a name="line.36572"></a>
<span class="sourceLineNo">36573</span> ox = (int) toLong(pbx);<a name="line.36573"></a>
<span class="sourceLineNo">36574</span> else<a name="line.36574"></a>
<span class="sourceLineNo">36575</span> ox = (int) toLong(ix);<a name="line.36575"></a>
<span class="sourceLineNo">36576</span> oai32data[it.oIndex] = ox;<a name="line.36576"></a>
<span class="sourceLineNo">36577</span> }<a name="line.36577"></a>
<span class="sourceLineNo">36578</span> } else {<a name="line.36578"></a>
<span class="sourceLineNo">36579</span> while (it.hasNext()) {<a name="line.36579"></a>
<span class="sourceLineNo">36580</span> final long ix = it.aLong;<a name="line.36580"></a>
<span class="sourceLineNo">36581</span> int ox;<a name="line.36581"></a>
<span class="sourceLineNo">36582</span> if (ix &lt; pax)<a name="line.36582"></a>
<span class="sourceLineNo">36583</span> ox = (int) toLong(pax);<a name="line.36583"></a>
<span class="sourceLineNo">36584</span> else if (ix &gt; pbx)<a name="line.36584"></a>
<span class="sourceLineNo">36585</span> ox = (int) toLong(pbx);<a name="line.36585"></a>
<span class="sourceLineNo">36586</span> else<a name="line.36586"></a>
<span class="sourceLineNo">36587</span> ox = (int) toLong(ix);<a name="line.36587"></a>
<span class="sourceLineNo">36588</span> oai32data[it.oIndex] = ox;<a name="line.36588"></a>
<span class="sourceLineNo">36589</span> }<a name="line.36589"></a>
<span class="sourceLineNo">36590</span> }<a name="line.36590"></a>
<span class="sourceLineNo">36591</span> } else if (as == 1) {<a name="line.36591"></a>
<span class="sourceLineNo">36592</span> if (it.isOutputDouble()) {<a name="line.36592"></a>
<span class="sourceLineNo">36593</span> while (it.hasNext()) {<a name="line.36593"></a>
<span class="sourceLineNo">36594</span> final double ix = it.aDouble;<a name="line.36594"></a>
<span class="sourceLineNo">36595</span> int ox;<a name="line.36595"></a>
<span class="sourceLineNo">36596</span> if (ix &lt; pax)<a name="line.36596"></a>
<span class="sourceLineNo">36597</span> ox = (int) toLong(pax);<a name="line.36597"></a>
<span class="sourceLineNo">36598</span> else if (ix &gt; pbx)<a name="line.36598"></a>
<span class="sourceLineNo">36599</span> ox = (int) toLong(pbx);<a name="line.36599"></a>
<span class="sourceLineNo">36600</span> else<a name="line.36600"></a>
<span class="sourceLineNo">36601</span> ox = (int) toLong(ix);<a name="line.36601"></a>
<span class="sourceLineNo">36602</span> for (int j = 0; j &lt; is; j++) {<a name="line.36602"></a>
<span class="sourceLineNo">36603</span> oai32data[it.oIndex + j] = ox;<a name="line.36603"></a>
<span class="sourceLineNo">36604</span> }<a name="line.36604"></a>
<span class="sourceLineNo">36605</span> }<a name="line.36605"></a>
<span class="sourceLineNo">36606</span> } else {<a name="line.36606"></a>
<span class="sourceLineNo">36607</span> while (it.hasNext()) {<a name="line.36607"></a>
<span class="sourceLineNo">36608</span> final long ix = it.aLong;<a name="line.36608"></a>
<span class="sourceLineNo">36609</span> int ox;<a name="line.36609"></a>
<span class="sourceLineNo">36610</span> if (ix &lt; pax)<a name="line.36610"></a>
<span class="sourceLineNo">36611</span> ox = (int) toLong(pax);<a name="line.36611"></a>
<span class="sourceLineNo">36612</span> else if (ix &gt; pbx)<a name="line.36612"></a>
<span class="sourceLineNo">36613</span> ox = (int) toLong(pbx);<a name="line.36613"></a>
<span class="sourceLineNo">36614</span> else<a name="line.36614"></a>
<span class="sourceLineNo">36615</span> ox = (int) toLong(ix);<a name="line.36615"></a>
<span class="sourceLineNo">36616</span> for (int j = 0; j &lt; is; j++) {<a name="line.36616"></a>
<span class="sourceLineNo">36617</span> oai32data[it.oIndex + j] = ox;<a name="line.36617"></a>
<span class="sourceLineNo">36618</span> }<a name="line.36618"></a>
<span class="sourceLineNo">36619</span> }<a name="line.36619"></a>
<span class="sourceLineNo">36620</span> }<a name="line.36620"></a>
<span class="sourceLineNo">36621</span> } else {<a name="line.36621"></a>
<span class="sourceLineNo">36622</span> if (it.isOutputDouble()) {<a name="line.36622"></a>
<span class="sourceLineNo">36623</span> while (it.hasNext()) {<a name="line.36623"></a>
<span class="sourceLineNo">36624</span> for (int j = 0; j &lt; is; j++) {<a name="line.36624"></a>
<span class="sourceLineNo">36625</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.36625"></a>
<span class="sourceLineNo">36626</span> int ox;<a name="line.36626"></a>
<span class="sourceLineNo">36627</span> if (ix &lt; pax)<a name="line.36627"></a>
<span class="sourceLineNo">36628</span> ox = (int) toLong(pax);<a name="line.36628"></a>
<span class="sourceLineNo">36629</span> else if (ix &gt; pbx)<a name="line.36629"></a>
<span class="sourceLineNo">36630</span> ox = (int) toLong(pbx);<a name="line.36630"></a>
<span class="sourceLineNo">36631</span> else<a name="line.36631"></a>
<span class="sourceLineNo">36632</span> ox = (int) toLong(ix);<a name="line.36632"></a>
<span class="sourceLineNo">36633</span> oai32data[it.oIndex + j] = ox;<a name="line.36633"></a>
<span class="sourceLineNo">36634</span> }<a name="line.36634"></a>
<span class="sourceLineNo">36635</span> }<a name="line.36635"></a>
<span class="sourceLineNo">36636</span> } else {<a name="line.36636"></a>
<span class="sourceLineNo">36637</span> while (it.hasNext()) {<a name="line.36637"></a>
<span class="sourceLineNo">36638</span> for (int j = 0; j &lt; is; j++) {<a name="line.36638"></a>
<span class="sourceLineNo">36639</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.36639"></a>
<span class="sourceLineNo">36640</span> int ox;<a name="line.36640"></a>
<span class="sourceLineNo">36641</span> if (ix &lt; pax)<a name="line.36641"></a>
<span class="sourceLineNo">36642</span> ox = (int) toLong(pax);<a name="line.36642"></a>
<span class="sourceLineNo">36643</span> else if (ix &gt; pbx)<a name="line.36643"></a>
<span class="sourceLineNo">36644</span> ox = (int) toLong(pbx);<a name="line.36644"></a>
<span class="sourceLineNo">36645</span> else<a name="line.36645"></a>
<span class="sourceLineNo">36646</span> ox = (int) toLong(ix);<a name="line.36646"></a>
<span class="sourceLineNo">36647</span> oai32data[it.oIndex + j] = ox;<a name="line.36647"></a>
<span class="sourceLineNo">36648</span> }<a name="line.36648"></a>
<span class="sourceLineNo">36649</span> }<a name="line.36649"></a>
<span class="sourceLineNo">36650</span> }<a name="line.36650"></a>
<span class="sourceLineNo">36651</span> }<a name="line.36651"></a>
<span class="sourceLineNo">36652</span> break;<a name="line.36652"></a>
<span class="sourceLineNo">36653</span> case Dataset.FLOAT32:<a name="line.36653"></a>
<span class="sourceLineNo">36654</span> final float[] of32data = ((FloatDataset) result).getData();<a name="line.36654"></a>
<span class="sourceLineNo">36655</span> if (it.isOutputDouble()) {<a name="line.36655"></a>
<span class="sourceLineNo">36656</span> while (it.hasNext()) {<a name="line.36656"></a>
<span class="sourceLineNo">36657</span> final double ix = it.aDouble;<a name="line.36657"></a>
<span class="sourceLineNo">36658</span> float ox;<a name="line.36658"></a>
<span class="sourceLineNo">36659</span> if (Double.isNaN(ix))<a name="line.36659"></a>
<span class="sourceLineNo">36660</span> ox = (float) ((pax+pbx)/2.);<a name="line.36660"></a>
<span class="sourceLineNo">36661</span> else if (ix &lt; pax)<a name="line.36661"></a>
<span class="sourceLineNo">36662</span> ox = (float) (pax);<a name="line.36662"></a>
<span class="sourceLineNo">36663</span> else if (ix &gt; pbx)<a name="line.36663"></a>
<span class="sourceLineNo">36664</span> ox = (float) (pbx);<a name="line.36664"></a>
<span class="sourceLineNo">36665</span> else<a name="line.36665"></a>
<span class="sourceLineNo">36666</span> ox = (float) (ix);<a name="line.36666"></a>
<span class="sourceLineNo">36667</span> of32data[it.oIndex] = ox;<a name="line.36667"></a>
<span class="sourceLineNo">36668</span> }<a name="line.36668"></a>
<span class="sourceLineNo">36669</span> } else {<a name="line.36669"></a>
<span class="sourceLineNo">36670</span> while (it.hasNext()) {<a name="line.36670"></a>
<span class="sourceLineNo">36671</span> final long ix = it.aLong;<a name="line.36671"></a>
<span class="sourceLineNo">36672</span> float ox;<a name="line.36672"></a>
<span class="sourceLineNo">36673</span> if (Double.isNaN(ix))<a name="line.36673"></a>
<span class="sourceLineNo">36674</span> ox = (float) ((pax+pbx)/2.);<a name="line.36674"></a>
<span class="sourceLineNo">36675</span> else if (ix &lt; pax)<a name="line.36675"></a>
<span class="sourceLineNo">36676</span> ox = (float) (pax);<a name="line.36676"></a>
<span class="sourceLineNo">36677</span> else if (ix &gt; pbx)<a name="line.36677"></a>
<span class="sourceLineNo">36678</span> ox = (float) (pbx);<a name="line.36678"></a>
<span class="sourceLineNo">36679</span> else<a name="line.36679"></a>
<span class="sourceLineNo">36680</span> ox = (ix);<a name="line.36680"></a>
<span class="sourceLineNo">36681</span> of32data[it.oIndex] = ox;<a name="line.36681"></a>
<span class="sourceLineNo">36682</span> }<a name="line.36682"></a>
<span class="sourceLineNo">36683</span> }<a name="line.36683"></a>
<span class="sourceLineNo">36684</span> break;<a name="line.36684"></a>
<span class="sourceLineNo">36685</span> case Dataset.FLOAT64:<a name="line.36685"></a>
<span class="sourceLineNo">36686</span> final double[] of64data = ((DoubleDataset) result).getData();<a name="line.36686"></a>
<span class="sourceLineNo">36687</span> if (it.isOutputDouble()) {<a name="line.36687"></a>
<span class="sourceLineNo">36688</span> while (it.hasNext()) {<a name="line.36688"></a>
<span class="sourceLineNo">36689</span> final double ix = it.aDouble;<a name="line.36689"></a>
<span class="sourceLineNo">36690</span> double ox;<a name="line.36690"></a>
<span class="sourceLineNo">36691</span> if (Double.isNaN(ix))<a name="line.36691"></a>
<span class="sourceLineNo">36692</span> ox = ((pax+pbx)/2.);<a name="line.36692"></a>
<span class="sourceLineNo">36693</span> else if (ix &lt; pax)<a name="line.36693"></a>
<span class="sourceLineNo">36694</span> ox = (pax);<a name="line.36694"></a>
<span class="sourceLineNo">36695</span> else if (ix &gt; pbx)<a name="line.36695"></a>
<span class="sourceLineNo">36696</span> ox = (pbx);<a name="line.36696"></a>
<span class="sourceLineNo">36697</span> else<a name="line.36697"></a>
<span class="sourceLineNo">36698</span> ox = (ix);<a name="line.36698"></a>
<span class="sourceLineNo">36699</span> of64data[it.oIndex] = ox;<a name="line.36699"></a>
<span class="sourceLineNo">36700</span> }<a name="line.36700"></a>
<span class="sourceLineNo">36701</span> } else {<a name="line.36701"></a>
<span class="sourceLineNo">36702</span> while (it.hasNext()) {<a name="line.36702"></a>
<span class="sourceLineNo">36703</span> final long ix = it.aLong;<a name="line.36703"></a>
<span class="sourceLineNo">36704</span> double ox;<a name="line.36704"></a>
<span class="sourceLineNo">36705</span> if (Double.isNaN(ix))<a name="line.36705"></a>
<span class="sourceLineNo">36706</span> ox = ((pax+pbx)/2.);<a name="line.36706"></a>
<span class="sourceLineNo">36707</span> else if (ix &lt; pax)<a name="line.36707"></a>
<span class="sourceLineNo">36708</span> ox = (pax);<a name="line.36708"></a>
<span class="sourceLineNo">36709</span> else if (ix &gt; pbx)<a name="line.36709"></a>
<span class="sourceLineNo">36710</span> ox = (pbx);<a name="line.36710"></a>
<span class="sourceLineNo">36711</span> else<a name="line.36711"></a>
<span class="sourceLineNo">36712</span> ox = (ix);<a name="line.36712"></a>
<span class="sourceLineNo">36713</span> of64data[it.oIndex] = ox;<a name="line.36713"></a>
<span class="sourceLineNo">36714</span> }<a name="line.36714"></a>
<span class="sourceLineNo">36715</span> }<a name="line.36715"></a>
<span class="sourceLineNo">36716</span> break;<a name="line.36716"></a>
<span class="sourceLineNo">36717</span> case Dataset.ARRAYFLOAT32:<a name="line.36717"></a>
<span class="sourceLineNo">36718</span> final float[] oaf32data = ((CompoundFloatDataset) result).getData();<a name="line.36718"></a>
<span class="sourceLineNo">36719</span> if (is == 1) {<a name="line.36719"></a>
<span class="sourceLineNo">36720</span> if (it.isOutputDouble()) {<a name="line.36720"></a>
<span class="sourceLineNo">36721</span> while (it.hasNext()) {<a name="line.36721"></a>
<span class="sourceLineNo">36722</span> final double ix = it.aDouble;<a name="line.36722"></a>
<span class="sourceLineNo">36723</span> float ox;<a name="line.36723"></a>
<span class="sourceLineNo">36724</span> if (Double.isNaN(ix))<a name="line.36724"></a>
<span class="sourceLineNo">36725</span> ox = (float) ((pax+pbx)/2.);<a name="line.36725"></a>
<span class="sourceLineNo">36726</span> else if (ix &lt; pax)<a name="line.36726"></a>
<span class="sourceLineNo">36727</span> ox = (float) (pax);<a name="line.36727"></a>
<span class="sourceLineNo">36728</span> else if (ix &gt; pbx)<a name="line.36728"></a>
<span class="sourceLineNo">36729</span> ox = (float) (pbx);<a name="line.36729"></a>
<span class="sourceLineNo">36730</span> else<a name="line.36730"></a>
<span class="sourceLineNo">36731</span> ox = (float) (ix);<a name="line.36731"></a>
<span class="sourceLineNo">36732</span> oaf32data[it.oIndex] = ox;<a name="line.36732"></a>
<span class="sourceLineNo">36733</span> }<a name="line.36733"></a>
<span class="sourceLineNo">36734</span> } else {<a name="line.36734"></a>
<span class="sourceLineNo">36735</span> while (it.hasNext()) {<a name="line.36735"></a>
<span class="sourceLineNo">36736</span> final long ix = it.aLong;<a name="line.36736"></a>
<span class="sourceLineNo">36737</span> float ox;<a name="line.36737"></a>
<span class="sourceLineNo">36738</span> if (Double.isNaN(ix))<a name="line.36738"></a>
<span class="sourceLineNo">36739</span> ox = (float) ((pax+pbx)/2.);<a name="line.36739"></a>
<span class="sourceLineNo">36740</span> else if (ix &lt; pax)<a name="line.36740"></a>
<span class="sourceLineNo">36741</span> ox = (float) (pax);<a name="line.36741"></a>
<span class="sourceLineNo">36742</span> else if (ix &gt; pbx)<a name="line.36742"></a>
<span class="sourceLineNo">36743</span> ox = (float) (pbx);<a name="line.36743"></a>
<span class="sourceLineNo">36744</span> else<a name="line.36744"></a>
<span class="sourceLineNo">36745</span> ox = (ix);<a name="line.36745"></a>
<span class="sourceLineNo">36746</span> oaf32data[it.oIndex] = ox;<a name="line.36746"></a>
<span class="sourceLineNo">36747</span> }<a name="line.36747"></a>
<span class="sourceLineNo">36748</span> }<a name="line.36748"></a>
<span class="sourceLineNo">36749</span> } else if (as == 1) {<a name="line.36749"></a>
<span class="sourceLineNo">36750</span> if (it.isOutputDouble()) {<a name="line.36750"></a>
<span class="sourceLineNo">36751</span> while (it.hasNext()) {<a name="line.36751"></a>
<span class="sourceLineNo">36752</span> final double ix = it.aDouble;<a name="line.36752"></a>
<span class="sourceLineNo">36753</span> float ox;<a name="line.36753"></a>
<span class="sourceLineNo">36754</span> if (Double.isNaN(ix))<a name="line.36754"></a>
<span class="sourceLineNo">36755</span> ox = (float) ((pax+pbx)/2.);<a name="line.36755"></a>
<span class="sourceLineNo">36756</span> else if (ix &lt; pax)<a name="line.36756"></a>
<span class="sourceLineNo">36757</span> ox = (float) (pax);<a name="line.36757"></a>
<span class="sourceLineNo">36758</span> else if (ix &gt; pbx)<a name="line.36758"></a>
<span class="sourceLineNo">36759</span> ox = (float) (pbx);<a name="line.36759"></a>
<span class="sourceLineNo">36760</span> else<a name="line.36760"></a>
<span class="sourceLineNo">36761</span> ox = (float) (ix);<a name="line.36761"></a>
<span class="sourceLineNo">36762</span> for (int j = 0; j &lt; is; j++) {<a name="line.36762"></a>
<span class="sourceLineNo">36763</span> oaf32data[it.oIndex + j] = ox;<a name="line.36763"></a>
<span class="sourceLineNo">36764</span> }<a name="line.36764"></a>
<span class="sourceLineNo">36765</span> }<a name="line.36765"></a>
<span class="sourceLineNo">36766</span> } else {<a name="line.36766"></a>
<span class="sourceLineNo">36767</span> while (it.hasNext()) {<a name="line.36767"></a>
<span class="sourceLineNo">36768</span> final long ix = it.aLong;<a name="line.36768"></a>
<span class="sourceLineNo">36769</span> float ox;<a name="line.36769"></a>
<span class="sourceLineNo">36770</span> if (Double.isNaN(ix))<a name="line.36770"></a>
<span class="sourceLineNo">36771</span> ox = (float) ((pax+pbx)/2.);<a name="line.36771"></a>
<span class="sourceLineNo">36772</span> else if (ix &lt; pax)<a name="line.36772"></a>
<span class="sourceLineNo">36773</span> ox = (float) (pax);<a name="line.36773"></a>
<span class="sourceLineNo">36774</span> else if (ix &gt; pbx)<a name="line.36774"></a>
<span class="sourceLineNo">36775</span> ox = (float) (pbx);<a name="line.36775"></a>
<span class="sourceLineNo">36776</span> else<a name="line.36776"></a>
<span class="sourceLineNo">36777</span> ox = (ix);<a name="line.36777"></a>
<span class="sourceLineNo">36778</span> for (int j = 0; j &lt; is; j++) {<a name="line.36778"></a>
<span class="sourceLineNo">36779</span> oaf32data[it.oIndex + j] = ox;<a name="line.36779"></a>
<span class="sourceLineNo">36780</span> }<a name="line.36780"></a>
<span class="sourceLineNo">36781</span> }<a name="line.36781"></a>
<span class="sourceLineNo">36782</span> }<a name="line.36782"></a>
<span class="sourceLineNo">36783</span> } else {<a name="line.36783"></a>
<span class="sourceLineNo">36784</span> if (it.isOutputDouble()) {<a name="line.36784"></a>
<span class="sourceLineNo">36785</span> while (it.hasNext()) {<a name="line.36785"></a>
<span class="sourceLineNo">36786</span> for (int j = 0; j &lt; is; j++) {<a name="line.36786"></a>
<span class="sourceLineNo">36787</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.36787"></a>
<span class="sourceLineNo">36788</span> float ox;<a name="line.36788"></a>
<span class="sourceLineNo">36789</span> if (Double.isNaN(ix))<a name="line.36789"></a>
<span class="sourceLineNo">36790</span> ox = (float) ((pax+pbx)/2.);<a name="line.36790"></a>
<span class="sourceLineNo">36791</span> else if (ix &lt; pax)<a name="line.36791"></a>
<span class="sourceLineNo">36792</span> ox = (float) (pax);<a name="line.36792"></a>
<span class="sourceLineNo">36793</span> else if (ix &gt; pbx)<a name="line.36793"></a>
<span class="sourceLineNo">36794</span> ox = (float) (pbx);<a name="line.36794"></a>
<span class="sourceLineNo">36795</span> else<a name="line.36795"></a>
<span class="sourceLineNo">36796</span> ox = (float) (ix);<a name="line.36796"></a>
<span class="sourceLineNo">36797</span> oaf32data[it.oIndex + j] = ox;<a name="line.36797"></a>
<span class="sourceLineNo">36798</span> }<a name="line.36798"></a>
<span class="sourceLineNo">36799</span> }<a name="line.36799"></a>
<span class="sourceLineNo">36800</span> } else {<a name="line.36800"></a>
<span class="sourceLineNo">36801</span> while (it.hasNext()) {<a name="line.36801"></a>
<span class="sourceLineNo">36802</span> for (int j = 0; j &lt; is; j++) {<a name="line.36802"></a>
<span class="sourceLineNo">36803</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.36803"></a>
<span class="sourceLineNo">36804</span> float ox;<a name="line.36804"></a>
<span class="sourceLineNo">36805</span> if (Double.isNaN(ix))<a name="line.36805"></a>
<span class="sourceLineNo">36806</span> ox = (float) ((pax+pbx)/2.);<a name="line.36806"></a>
<span class="sourceLineNo">36807</span> else if (ix &lt; pax)<a name="line.36807"></a>
<span class="sourceLineNo">36808</span> ox = (float) (pax);<a name="line.36808"></a>
<span class="sourceLineNo">36809</span> else if (ix &gt; pbx)<a name="line.36809"></a>
<span class="sourceLineNo">36810</span> ox = (float) (pbx);<a name="line.36810"></a>
<span class="sourceLineNo">36811</span> else<a name="line.36811"></a>
<span class="sourceLineNo">36812</span> ox = (ix);<a name="line.36812"></a>
<span class="sourceLineNo">36813</span> oaf32data[it.oIndex + j] = ox;<a name="line.36813"></a>
<span class="sourceLineNo">36814</span> }<a name="line.36814"></a>
<span class="sourceLineNo">36815</span> }<a name="line.36815"></a>
<span class="sourceLineNo">36816</span> }<a name="line.36816"></a>
<span class="sourceLineNo">36817</span> }<a name="line.36817"></a>
<span class="sourceLineNo">36818</span> break;<a name="line.36818"></a>
<span class="sourceLineNo">36819</span> case Dataset.ARRAYFLOAT64:<a name="line.36819"></a>
<span class="sourceLineNo">36820</span> final double[] oaf64data = ((CompoundDoubleDataset) result).getData();<a name="line.36820"></a>
<span class="sourceLineNo">36821</span> if (is == 1) {<a name="line.36821"></a>
<span class="sourceLineNo">36822</span> if (it.isOutputDouble()) {<a name="line.36822"></a>
<span class="sourceLineNo">36823</span> while (it.hasNext()) {<a name="line.36823"></a>
<span class="sourceLineNo">36824</span> final double ix = it.aDouble;<a name="line.36824"></a>
<span class="sourceLineNo">36825</span> double ox;<a name="line.36825"></a>
<span class="sourceLineNo">36826</span> if (Double.isNaN(ix))<a name="line.36826"></a>
<span class="sourceLineNo">36827</span> ox = ((pax+pbx)/2.);<a name="line.36827"></a>
<span class="sourceLineNo">36828</span> else if (ix &lt; pax)<a name="line.36828"></a>
<span class="sourceLineNo">36829</span> ox = (pax);<a name="line.36829"></a>
<span class="sourceLineNo">36830</span> else if (ix &gt; pbx)<a name="line.36830"></a>
<span class="sourceLineNo">36831</span> ox = (pbx);<a name="line.36831"></a>
<span class="sourceLineNo">36832</span> else<a name="line.36832"></a>
<span class="sourceLineNo">36833</span> ox = (ix);<a name="line.36833"></a>
<span class="sourceLineNo">36834</span> oaf64data[it.oIndex] = ox;<a name="line.36834"></a>
<span class="sourceLineNo">36835</span> }<a name="line.36835"></a>
<span class="sourceLineNo">36836</span> } else {<a name="line.36836"></a>
<span class="sourceLineNo">36837</span> while (it.hasNext()) {<a name="line.36837"></a>
<span class="sourceLineNo">36838</span> final long ix = it.aLong;<a name="line.36838"></a>
<span class="sourceLineNo">36839</span> double ox;<a name="line.36839"></a>
<span class="sourceLineNo">36840</span> if (Double.isNaN(ix))<a name="line.36840"></a>
<span class="sourceLineNo">36841</span> ox = ((pax+pbx)/2.);<a name="line.36841"></a>
<span class="sourceLineNo">36842</span> else if (ix &lt; pax)<a name="line.36842"></a>
<span class="sourceLineNo">36843</span> ox = (pax);<a name="line.36843"></a>
<span class="sourceLineNo">36844</span> else if (ix &gt; pbx)<a name="line.36844"></a>
<span class="sourceLineNo">36845</span> ox = (pbx);<a name="line.36845"></a>
<span class="sourceLineNo">36846</span> else<a name="line.36846"></a>
<span class="sourceLineNo">36847</span> ox = (ix);<a name="line.36847"></a>
<span class="sourceLineNo">36848</span> oaf64data[it.oIndex] = ox;<a name="line.36848"></a>
<span class="sourceLineNo">36849</span> }<a name="line.36849"></a>
<span class="sourceLineNo">36850</span> }<a name="line.36850"></a>
<span class="sourceLineNo">36851</span> } else if (as == 1) {<a name="line.36851"></a>
<span class="sourceLineNo">36852</span> if (it.isOutputDouble()) {<a name="line.36852"></a>
<span class="sourceLineNo">36853</span> while (it.hasNext()) {<a name="line.36853"></a>
<span class="sourceLineNo">36854</span> final double ix = it.aDouble;<a name="line.36854"></a>
<span class="sourceLineNo">36855</span> double ox;<a name="line.36855"></a>
<span class="sourceLineNo">36856</span> if (Double.isNaN(ix))<a name="line.36856"></a>
<span class="sourceLineNo">36857</span> ox = ((pax+pbx)/2.);<a name="line.36857"></a>
<span class="sourceLineNo">36858</span> else if (ix &lt; pax)<a name="line.36858"></a>
<span class="sourceLineNo">36859</span> ox = (pax);<a name="line.36859"></a>
<span class="sourceLineNo">36860</span> else if (ix &gt; pbx)<a name="line.36860"></a>
<span class="sourceLineNo">36861</span> ox = (pbx);<a name="line.36861"></a>
<span class="sourceLineNo">36862</span> else<a name="line.36862"></a>
<span class="sourceLineNo">36863</span> ox = (ix);<a name="line.36863"></a>
<span class="sourceLineNo">36864</span> for (int j = 0; j &lt; is; j++) {<a name="line.36864"></a>
<span class="sourceLineNo">36865</span> oaf64data[it.oIndex + j] = ox;<a name="line.36865"></a>
<span class="sourceLineNo">36866</span> }<a name="line.36866"></a>
<span class="sourceLineNo">36867</span> }<a name="line.36867"></a>
<span class="sourceLineNo">36868</span> } else {<a name="line.36868"></a>
<span class="sourceLineNo">36869</span> while (it.hasNext()) {<a name="line.36869"></a>
<span class="sourceLineNo">36870</span> final long ix = it.aLong;<a name="line.36870"></a>
<span class="sourceLineNo">36871</span> double ox;<a name="line.36871"></a>
<span class="sourceLineNo">36872</span> if (Double.isNaN(ix))<a name="line.36872"></a>
<span class="sourceLineNo">36873</span> ox = ((pax+pbx)/2.);<a name="line.36873"></a>
<span class="sourceLineNo">36874</span> else if (ix &lt; pax)<a name="line.36874"></a>
<span class="sourceLineNo">36875</span> ox = (pax);<a name="line.36875"></a>
<span class="sourceLineNo">36876</span> else if (ix &gt; pbx)<a name="line.36876"></a>
<span class="sourceLineNo">36877</span> ox = (pbx);<a name="line.36877"></a>
<span class="sourceLineNo">36878</span> else<a name="line.36878"></a>
<span class="sourceLineNo">36879</span> ox = (ix);<a name="line.36879"></a>
<span class="sourceLineNo">36880</span> for (int j = 0; j &lt; is; j++) {<a name="line.36880"></a>
<span class="sourceLineNo">36881</span> oaf64data[it.oIndex + j] = ox;<a name="line.36881"></a>
<span class="sourceLineNo">36882</span> }<a name="line.36882"></a>
<span class="sourceLineNo">36883</span> }<a name="line.36883"></a>
<span class="sourceLineNo">36884</span> }<a name="line.36884"></a>
<span class="sourceLineNo">36885</span> } else {<a name="line.36885"></a>
<span class="sourceLineNo">36886</span> if (it.isOutputDouble()) {<a name="line.36886"></a>
<span class="sourceLineNo">36887</span> while (it.hasNext()) {<a name="line.36887"></a>
<span class="sourceLineNo">36888</span> for (int j = 0; j &lt; is; j++) {<a name="line.36888"></a>
<span class="sourceLineNo">36889</span> final double ix = da.getElementDoubleAbs(it.aIndex + j);<a name="line.36889"></a>
<span class="sourceLineNo">36890</span> double ox;<a name="line.36890"></a>
<span class="sourceLineNo">36891</span> if (Double.isNaN(ix))<a name="line.36891"></a>
<span class="sourceLineNo">36892</span> ox = ((pax+pbx)/2.);<a name="line.36892"></a>
<span class="sourceLineNo">36893</span> else if (ix &lt; pax)<a name="line.36893"></a>
<span class="sourceLineNo">36894</span> ox = (pax);<a name="line.36894"></a>
<span class="sourceLineNo">36895</span> else if (ix &gt; pbx)<a name="line.36895"></a>
<span class="sourceLineNo">36896</span> ox = (pbx);<a name="line.36896"></a>
<span class="sourceLineNo">36897</span> else<a name="line.36897"></a>
<span class="sourceLineNo">36898</span> ox = (ix);<a name="line.36898"></a>
<span class="sourceLineNo">36899</span> oaf64data[it.oIndex + j] = ox;<a name="line.36899"></a>
<span class="sourceLineNo">36900</span> }<a name="line.36900"></a>
<span class="sourceLineNo">36901</span> }<a name="line.36901"></a>
<span class="sourceLineNo">36902</span> } else {<a name="line.36902"></a>
<span class="sourceLineNo">36903</span> while (it.hasNext()) {<a name="line.36903"></a>
<span class="sourceLineNo">36904</span> for (int j = 0; j &lt; is; j++) {<a name="line.36904"></a>
<span class="sourceLineNo">36905</span> final long ix = da.getElementLongAbs(it.aIndex + j);<a name="line.36905"></a>
<span class="sourceLineNo">36906</span> double ox;<a name="line.36906"></a>
<span class="sourceLineNo">36907</span> if (Double.isNaN(ix))<a name="line.36907"></a>
<span class="sourceLineNo">36908</span> ox = ((pax+pbx)/2.);<a name="line.36908"></a>
<span class="sourceLineNo">36909</span> else if (ix &lt; pax)<a name="line.36909"></a>
<span class="sourceLineNo">36910</span> ox = (pax);<a name="line.36910"></a>
<span class="sourceLineNo">36911</span> else if (ix &gt; pbx)<a name="line.36911"></a>
<span class="sourceLineNo">36912</span> ox = (pbx);<a name="line.36912"></a>
<span class="sourceLineNo">36913</span> else<a name="line.36913"></a>
<span class="sourceLineNo">36914</span> ox = (ix);<a name="line.36914"></a>
<span class="sourceLineNo">36915</span> oaf64data[it.oIndex + j] = ox;<a name="line.36915"></a>
<span class="sourceLineNo">36916</span> }<a name="line.36916"></a>
<span class="sourceLineNo">36917</span> }<a name="line.36917"></a>
<span class="sourceLineNo">36918</span> }<a name="line.36918"></a>
<span class="sourceLineNo">36919</span> }<a name="line.36919"></a>
<span class="sourceLineNo">36920</span> break;<a name="line.36920"></a>
<span class="sourceLineNo">36921</span> default:<a name="line.36921"></a>
<span class="sourceLineNo">36922</span> throw new IllegalArgumentException("clip supports integer, compound integer, real, compound real datasets only");<a name="line.36922"></a>
<span class="sourceLineNo">36923</span> }<a name="line.36923"></a>
<span class="sourceLineNo">36924</span><a name="line.36924"></a>
<span class="sourceLineNo">36925</span> addFunctionName(result, "clip");<a name="line.36925"></a>
<span class="sourceLineNo">36926</span> return result;<a name="line.36926"></a>
<span class="sourceLineNo">36927</span> }<a name="line.36927"></a>
<span class="sourceLineNo">36928</span><a name="line.36928"></a>
<span class="sourceLineNo">36929</span>// End of generated code<a name="line.36929"></a>
<span class="sourceLineNo">36930</span><a name="line.36930"></a>
<span class="sourceLineNo">36931</span>}<a name="line.36931"></a>
</pre>
</div>
</body>
</html>