1267679Sjonathan/*- 2267679Sjonathan * Copyright 2014 Jonathan Anderson. 3267679Sjonathan * All rights reserved. 4267679Sjonathan * 5267679Sjonathan * Redistribution and use in source and binary forms, with or without 6267679Sjonathan * modification, are permitted provided that the following conditions 7267679Sjonathan * are met: 8267679Sjonathan * 1. Redistributions of source code must retain the above copyright 9267679Sjonathan * notice, this list of conditions and the following disclaimer. 10267679Sjonathan * 2. Redistributions in binary form must reproduce the above copyright 11267679Sjonathan * notice, this list of conditions and the following disclaimer in the 12267679Sjonathan * documentation and/or other materials provided with the distribution. 13267679Sjonathan * 14267679Sjonathan * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 15267679Sjonathan * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 16267679Sjonathan * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 17267679Sjonathan * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 18267679Sjonathan * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 19267679Sjonathan * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 20267679Sjonathan * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 21267679Sjonathan * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22267679Sjonathan * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 23267679Sjonathan * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24267679Sjonathan * 25267679Sjonathan * $FreeBSD$ 26267679Sjonathan */ 27267679Sjonathan 28267679Sjonathan#include <errno.h> 29267679Sjonathan#include <math.h> 30267679Sjonathan 31267679Sjonathan#include "pythagoras.h" 32267679Sjonathan 33267679Sjonathandouble 34267679Sjonathanpythagorean_theorem(double a, double b) 35267679Sjonathan{ 36267679Sjonathan 37267679Sjonathan if (a <= 0 || b <= 0) { 38267679Sjonathan errno = ERANGE; 39267679Sjonathan return (-1.0); 40267679Sjonathan } 41267679Sjonathan return (sqrt(pow(a, 2) + pow(b, 2))); 42267679Sjonathan} 43