<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">-- Copyright 2016 TensorFlow authors.</span><span> </span><a name="line-2"></a><span class="hs-comment">--</span><span> </span><a name="line-3"></a><span class="hs-comment">-- Licensed under the Apache License, Version 2.0 (the "License");</span><span> </span><a name="line-4"></a><span class="hs-comment">-- you may not use this file except in compliance with the License.</span><span> </span><a name="line-5"></a><span class="hs-comment">-- You may obtain a copy of the License at</span><span> </span><a name="line-6"></a><span class="hs-comment">--</span><span> </span><a name="line-7"></a><span class="hs-comment">-- http://www.apache.org/licenses/LICENSE-2.0</span><span> </span><a name="line-8"></a><span class="hs-comment">--</span><span> </span><a name="line-9"></a><span class="hs-comment">-- Unless required by applicable law or agreed to in writing, software</span><span> </span><a name="line-10"></a><span class="hs-comment">-- distributed under the License is distributed on an "AS IS" BASIS,</span><span> </span><a name="line-11"></a><span class="hs-comment">-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span><span> </span><a name="line-12"></a><span class="hs-comment">-- See the License for the specific language governing permissions and</span><span> </span><a name="line-13"></a><span class="hs-comment">-- limitations under the License.</span><span> </span><a name="line-14"></a><span> </span><a name="line-15"></a><span class="hs-pragma">{-# LANGUAGE OverloadedStrings #-}</span><span> </span><a name="line-16"></a><span> </span><a name="line-17"></a><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">TensorFlow</span><span class="hs-operator">.</span><span class="hs-identifier">Test</span><span> </span><a name="line-18"></a><span> </span><span class="hs-special">(</span><span> </span><a href="TensorFlow.Test.html#assertAllClose"><span class="hs-identifier hs-var">assertAllClose</span></a><span> </span><a name="line-19"></a><span> </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span> </span><a name="line-20"></a><span> </span><a name="line-21"></a><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-identifier">Data</span><span class="hs-operator">.</span><span class="hs-identifier">Vector</span><span> </span><span class="hs-keyword">as</span><span> </span><span class="hs-identifier">V</span><span> </span><a name="line-22"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Test</span><span class="hs-operator">.</span><span class="hs-identifier">HUnit</span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="hs-operator hs-var">@?</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><a name="line-23"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Test</span><span class="hs-operator">.</span><span class="hs-identifier">HUnit</span><span class="hs-operator">.</span><span class="hs-identifier">Lang</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Assertion</span><span class="hs-special">)</span><span> </span><a name="line-24"></a><span class="hs-comment">-- | Compares that the vectors are element-by-element equal within the given</span><span> </span><a name="line-25"></a><span class="hs-comment">-- tolerance. Raises an assertion and prints some information if not.</span><span> </span><a name="line-26"></a><span class="hs-identifier">assertAllClose</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">V</span><span class="hs-operator hs-type">.</span><span class="hs-identifier hs-type">Vector</span><span> </span><span class="hs-identifier hs-type">Float</span><span> </span><span class="hs-glyph">-></span><span> </span><span class="hs-identifier hs-type">V</span><span class="hs-operator hs-type">.</span><span class="hs-identifier hs-type">Vector</span><span> </span><span class="hs-identifier hs-type">Float</span><span> </span><span class="hs-glyph">-></span><span> </span><span class="hs-identifier hs-type">Assertion</span><span> </span><a name="line-27"></a><a name="assertAllClose"><a href="TensorFlow.Test.html#assertAllClose"><span class="hs-identifier">assertAllClose</span></a></a><span> </span><a name="local-6989586621679035438"><a href="#local-6989586621679035438"><span class="hs-identifier">xs</span></a></a><span> </span><a name="local-6989586621679035439"><a href="#local-6989586621679035439"><span class="hs-identifier">ys</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">all</span><span> </span><span class="hs-special">(</span><span class="hs-operator hs-var"><=</span><span> </span><a href="#local-6989586621679035441"><span class="hs-identifier hs-var">tol</span></a><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">V</span><span class="hs-operator hs-var">.</span><span class="hs-identifier hs-var">zipWith</span><span> </span><a href="#local-6989586621679035440"><span class="hs-identifier hs-var">absDiff</span></a><span> </span><a href="#local-6989586621679035438"><span class="hs-identifier hs-var">xs</span></a><span> </span><a href="#local-6989586621679035439"><span class="hs-identifier hs-var">ys</span></a><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">@?</span><span> </span><a name="line-28"></a><span> </span><span class="hs-string">"Difference > tolerance: \nxs: "</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-identifier hs-var">show</span><span> </span><a href="#local-6989586621679035438"><span class="hs-identifier hs-var">xs</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">"\nys: "</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-identifier hs-var">show</span><span> </span><a href="#local-6989586621679035439"><span class="hs-identifier hs-var">ys</span></a><span> </span><a name="line-29"></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">"\ntolerance: "</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-identifier hs-var">show</span><span> </span><a href="#local-6989586621679035441"><span class="hs-identifier hs-var">tol</span></a><span> </span><a name="line-30"></a><span> </span><span class="hs-keyword">where</span><span> </span><a name="line-31"></a><span> </span><a name="local-6989586621679035440"><a href="#local-6989586621679035440"><span class="hs-identifier">absDiff</span></a></a><span> </span><a name="local-6989586621679035442"><a href="#local-6989586621679035442"><span class="hs-identifier">x</span></a></a><span> </span><a name="local-6989586621679035443"><a href="#local-6989586621679035443"><span class="hs-identifier">y</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">abs</span><span> </span><span class="hs-special">(</span><a href="#local-6989586621679035442"><span class="hs-identifier hs-var">x</span></a><span> </span><span class="hs-glyph">-</span><span> </span><a href="#local-6989586621679035443"><span class="hs-identifier hs-var">y</span></a><span class="hs-special">)</span><span> </span><a name="line-32"></a><span> </span><a name="local-6989586621679035441"><a href="#local-6989586621679035441"><span class="hs-identifier">tol</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-number">0.001</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">Float</span><span> </span><a name="line-33"></a></pre></body></html>