From 730fbfc090054e1c0dbd8d2c063a1dbfeb49e7c4 Mon Sep 17 00:00:00 2001 From: bnewbold Date: Sat, 13 Jun 2015 22:26:26 -0700 Subject: new MIT-licensed wirish_math implementation --- wirish/wirish_math.cpp | 68 +++++++++++++++++++++++++++++--------------------- 1 file changed, 39 insertions(+), 29 deletions(-) diff --git a/wirish/wirish_math.cpp b/wirish/wirish_math.cpp index 1443b3c..7853eea 100644 --- a/wirish/wirish_math.cpp +++ b/wirish/wirish_math.cpp @@ -1,24 +1,38 @@ -/* - * Modified by LeafLabs, LLC. +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2015 Bryan Newbold * - * Part of the Wiring project - http://wiring.org.co Copyright (c) - * 2004-06 Hernando Barragan Modified 13 August 2006, David A. Mellis - * for Arduino - http://www.arduino.cc/ + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + *****************************************************************************/ + +/* + * Arduino-compatible digital math implementation. * - * This library is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. + * This replaces the old copyleft wirish_math implementation of randomSeed(), + * and random(). * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA + * This file is a "clean" implementation using only the API documentation + * without directly copying from the Arduino source. It simply wraps routines + * provided in stdlib. */ #include @@ -30,20 +44,16 @@ void randomSeed(unsigned int seed) { } } -long random(long howbig) { - if (howbig == 0) { - return 0; +long random(long max) { + if (max <= 0) { + max = 1; } - - return rand() % howbig; + return map(rand(), 0, RAND_MAX, 0, max-1); } -long random(long howsmall, long howbig) { - if (howsmall >= howbig) { - return howsmall; +long random(long min, long max) { + if (max <= min) { + max = min + 1; } - - long diff = howbig - howsmall; - return random(diff) + howsmall; + return map(rand(), 0, RAND_MAX, min, max-1); } - -- cgit v1.2.3