<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/1.5.1-alpha" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
>

<channel>
	<title>the other side of the firewall</title>
	<link>http://sahuguet.blogsome.com</link>
	<description>Just another WordPress weblog</description>
	<pubDate>Sat, 31 Dec 2005 16:23:30 +0000</pubDate>
	<generator>http://wordpress.org/?v=1.5.1-alpha</generator>
	<language>en</language>

		<item>
		<title>Rational geometry (cont&#8217;d)</title>
		<link>http://sahuguet.blogsome.com/2005/09/27/rational-geometry-contd/</link>
		<comments>http://sahuguet.blogsome.com/2005/09/27/rational-geometry-contd/#comments</comments>
		<pubDate>Tue, 27 Sep 2005 18:44:50 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
		
	<category>Software Development</category>
	<category>Development</category>
	<category>Java</category>
	<category>Games and Gaming</category>
		<guid>http://sahuguet.blogsome.com/2005/09/27/rational-geometry-contd/</guid>
		<description><![CDATA[	I made a recent post about rational geometry, or a way to solve geometric problems with no need for trigonometric functions.
	My intuition is that this new (apparently the Chinese invented it more than a thousand years ago) way of doing geometry can be very useful for machines.
	I ran a very simple experiment. At the end [...]]]></description>
			<content:encoded><![CDATA[	<p>I made a <a href="http://sahuguet.blogsome.com/2005/09/17/new-match-trigonometry-redefined-without-sines-and-cosines/">recent post</a> about rational geometry, or a way to solve geometric problems with no need for trigonometric functions.</p>
	<p>My intuition is that this new (apparently the Chinese invented it more than a thousand years ago) way of doing geometry can be very useful for machines.</p>
	<p>I ran a very simple experiment. At the end of Chapter 1 from the referenced book, there is a simple geometric problem with the traditional solution and the rational solution.<br />
I have implemented the solution in Java and run some measurements. The rational solution is x4 faster.<br />
Note that the code requires Java 1.5, in order to access the new nanosecond timer.</p>
	<p>The output is as follows:<br />
<code><br />
java Geometry<br />
3.313693059275397 computed in 200000ns<br />
3.3136930592753853 computed in 23000ns<br />
3.313693059275397 computed in 1046.7512ns<br />
3.3136930592753853 computed in 250.1114ns<br />
</code></p>
	<p><code><br />
public class Geometry<br />
{<br />
    public static void main(String args[])<br />
    {<br />
	long start, end;<br />
	int ITER = 5000000;</p>
	<p>	/* WARMING UP */</p>
	<p>	// traditional way<br />
	start = getTime();<br />
	double alpha = Math.acos( (float)3/4);<br />
	double beta = Math.PI - Math.PI/4 - alpha;<br />
	double d = 5 * Math.sin(alpha) / Math.sin(beta);<br />
	end = getTime();<br />
	System.out.println(d + " computed in " + (end-start) + "ns");</p>
	<p>	// rational geometry<br />
	start = getTime();<br />
	double q1 = 1400 - 525*Math.sqrt(7);<br />
	double d1 = Math.sqrt(q1);<br />
	end = getTime();<br />
	System.out.println(d1 + " computed in " + (end-start) + "ns");</p>
	<p>	/* WE ARE WARMED UP */</p>
	<p>	// traditional way<br />
	start = getTime();<br />
	for(int i=0; i<iter ; i++)<br />
	    {<br />
		alpha = Math.acos( (float)3/4);<br />
		// System.out.println("alpha: " + alpha);<br />
		beta = Math.PI - Math.PI/4 - alpha;<br />
		// System.out.println("beta: " + beta);<br />
		d = 5 * Math.sin(alpha) / Math.sin(beta);<br />
	    }<br />
	end = getTime();<br />
	System.out.println(d + " computed in " + (end-start)/(float)ITER + "ns");</p>
	<p>	// rational geometry<br />
	start = getTime();<br />
	for(int i=0; i<ITER; i++)<br />
	    {<br />
		q1 = 1400 - 525*Math.sqrt(7);<br />
		d1 = Math.sqrt(q1);<br />
	    }<br />
	end = getTime();<br />
	System.out.println(d1 + " computed in " + (end-start)/(float)ITER+ "ns");</p>
	<p>    }</p>
	<p>    public final static long getTime()<br />
    {<br />
	return System.nanoTime();<br />
    }</p>
	<p>}<br />
</code></iter></code>
</p>
]]></content:encoded>
			<wfw:commentRss>http://sahuguet.blogsome.com/2005/09/27/rational-geometry-contd/feed/</wfw:commentRss>
	</item>
	</channel>
</rss>
