[{"name":"Interval","comment":"\n\n@docs Interval\n\n\n# Constructors\n\n@docs singleton, fromEndpoints, from, containingValues, aggregate, hull, intersection\n\n\n# Properties\n\n@docs endpoints, minValue, maxValue, midpoint, width\n\n\n# Interpolation\n\n@docs interpolate\n\n\n# Arithmetic\n\n@docs sin, cos\n\n\n# Queries\n\n@docs contains, intersects, isContainedIn\n\n","unions":[{"name":"Interval","comment":" Represents a finite, closed interval with a minimum and maximum value, for\nexample the interval from 3 to 5. An `Interval Int` represents a range of\nintegers and an `Interval Float` represents a range of floating-point values.\n","args":["number"],"cases":[]}],"aliases":[],"values":[{"name":"aggregate","comment":" Construct an interval containing all of the intervals in the given list. If\nthe list is empty, returns `Nothing`.\n\n    Interval.aggregate\n        [ Interval.singleton 2\n        , Interval.from 3 4\n        ]\n    --> Just (Interval.from 2 4)\n\n    Interval.aggregate []\n    --> Nothing\n\n","type":"List.List (Interval.Interval number) -> Maybe.Maybe (Interval.Interval number)"},{"name":"containingValues","comment":" Construct an interval containing all values in the given list. If the list\nis empty, returns `Nothing`.\n\n    Interval.containingValues [ 2, 1, 3 ]\n    --> Just (Interval.from 1 3)\n\n    Interval.containingValues [ -3 ]\n    --> Just (Interval.singleton -3)\n\n    Interval.containingValues []\n    --> Nothing\n\n","type":"List.List number -> Maybe.Maybe (Interval.Interval number)"},{"name":"contains","comment":" Check if an interval contains a given value.\n\n    Interval.contains 0 (Interval.from -1 3)\n    --> True\n\n    Interval.contains 5 (Interval.from -1 3)\n    --> False\n\nThe minimum and maximum values of an interval are considered to be contained in\nthe interval:\n\n    Interval.contains 3 (Interval.from -1 3)\n    --> True\n\n","type":"number -> Interval.Interval number -> Basics.Bool"},{"name":"cos","comment":" Get the image of cos(x) applied on the interval.\n\n    Interval.cos (Interval.from 0 (degrees 45))\n    --> Interval.from 0.7071 1\n\n    Interval.cos (Interval.from 0 pi)\n    --> Interval.from -1 1\n\n","type":"Interval.Interval Basics.Float -> Interval.Interval Basics.Float"},{"name":"endpoints","comment":" Get the endpoints of an interval (its minimum and maximum values) as a\ntuple. The first value will always be less than or equal to the second.\n\n    ( minValue, maxValue ) =\n        Interval.endpoints someInterval\n\nFor any interval,\n\n    Interval.endpoints interval\n\nis equivalent to (but more efficient than)\n\n    ( Interval.minValue interval\n    , Interval.maxValue interval\n    )\n\n","type":"Interval.Interval number -> ( number, number )"},{"name":"from","comment":" Construct an interval containing the two given values (which can be provided\nin either order).\n\n    Interval.endpoints (Interval.from 2 5)\n    --> ( 2, 5 )\n\n    Interval.endpoints (Interval.from 5 2)\n    --> ( 2, 5 )\n\n","type":"number -> number -> Interval.Interval number"},{"name":"fromEndpoints","comment":" Construct an interval from its endpoints (the minimum and maximum values of\nthe interval).\n\n    rgbRange =\n        Interval.fromEndpoints ( 0, 255 )\n\n    alphaRange =\n        Interval.fromEndpoints ( 0, 1 )\n\nThe two values should be given in order but will be swapped if\nnecessary to ensure a valid interval is returned:\n\n    Interval.endpoints (Interval.fromEndpoints ( 3, 2 ))\n    --> ( 2, 3 )\n\n","type":"( number, number ) -> Interval.Interval number"},{"name":"hull","comment":" Construct an interval containing both of the given intervals.\n\n    firstInterval =\n        Interval.from 1 2\n\n    secondInterval =\n        Interval.from 3 6\n\n    Interval.hull firstInterval secondInterval\n    --> Interval.from 1 6\n\n","type":"Interval.Interval number -> Interval.Interval number -> Interval.Interval number"},{"name":"interpolate","comment":" Interpolate between an interval's endpoints; a value of 0.0 corresponds to\nthe minimum value of the interval, a value of 0.5 corresponds to its midpoint\nand a value of 1.0 corresponds to its maximum value. Values less than 0.0 or\ngreater than 1.0 can be used to extrapolate.\n\n    Interval.interpolate (Interval.from -1 5) 0\n    --> -1\n\n    Interval.interpolate (Interval.from -1 5) 0.75\n    --> 3.5\n\n    Interval.interpolate (Interval.from -1 5) -0.5\n    --> -4\n\nNote that the interpolation is in fact from the minimum value to the maximum,\n_not_ \"from the first `Interval.from` argument to the second\":\n\n    Interval.interpolate (Interval.from 0 10) 0.2\n    --> 2\n\n    Interval.interpolate (Interval.from 10 0) 0.2\n    --> 2 -- not 8!\n\n","type":"Interval.Interval Basics.Float -> Basics.Float -> Basics.Float"},{"name":"intersection","comment":" Attempt to construct an interval containing all the values common to both\ngiven intervals. If the intervals do not intersect, returns `Nothing`.\n\n    Interval.intersection\n        (Interval.from 1 3)\n        (Interval.from 2 5)\n    --> Just (Interval.from 2 3)\n\n    Interval.intersection\n        (Interval.from 1 3)\n        (Interval.from 4 7)\n    --> Nothing\n\nIf the two intervals just touch, a singleton interval will be returned:\n\n    Interval.intersection\n        (Interval.from 1 3)\n        (Interval.from 3 5)\n    --> Just (Interval.singleton 3)\n\n","type":"Interval.Interval number -> Interval.Interval number -> Maybe.Maybe (Interval.Interval number)"},{"name":"intersects","comment":" Check if two intervals touch or overlap (have any values in common).\n\n    Interval.from -5 5\n        |> Interval.intersects (Interval.from 0 10)\n    --> True\n\n    Interval.from -5 5\n        |> Interval.intersects (Interval.from 10 20)\n    --> False\n\nIntervals that just touch each other are considered to intersect (this is\nconsistent with `intersection` which will return a zero-width interval for the\nintersection of two just-touching intervals):\n\n    Interval.from -5 5\n        |> Interval.intersects (Interval.from 5 10)\n    --> True\n\n","type":"Interval.Interval number -> Interval.Interval number -> Basics.Bool"},{"name":"isContainedIn","comment":" Check if the second interval is fully contained in the first.\n\n    Interval.from -5 5\n        |> Interval.isContainedIn (Interval.from 0 10)\n    --> False\n\n    Interval.from -5 5\n        |> Interval.isContainedIn (Interval.from -10 10)\n    --> True\n\nBe careful with the argument order! If not using the `|>` operator, the second\nexample would be written as:\n\n    Interval.isContainedIn (Interval.from -10 10)\n        (Interval.from -5 5)\n    --> True\n\n","type":"Interval.Interval number -> Interval.Interval number -> Basics.Bool"},{"name":"maxValue","comment":" Get the maximum value of an interval.\n\n    Interval.maxValue (Interval.from 1 3)\n    --> 3\n\n","type":"Interval.Interval number -> number"},{"name":"midpoint","comment":" Get the midpoint of an interval.\n\n    Interval.midpoint (Interval.from 1 4)\n    --> 2.5\n\n","type":"Interval.Interval Basics.Float -> Basics.Float"},{"name":"minValue","comment":" Get the minimum value of an interval.\n\n    Interval.minValue (Interval.from 1 3)\n    --> 1\n\n","type":"Interval.Interval number -> number"},{"name":"sin","comment":" Get the image of sin(x) applied on the interval.\n\n    Interval.sin (Interval.from 0 (degrees 45))\n    --> Interval.from 0 0.7071\n\n    Interval.sin (Interval.from 0 pi)\n    --> Interval.from 0 1\n\n","type":"Interval.Interval Basics.Float -> Interval.Interval Basics.Float"},{"name":"singleton","comment":" Construct a zero-width interval containing a single value.\n\n    Interval.singleton 3\n    --> Interval.fromEndpoints ( 3, 3 )\n\n","type":"number -> Interval.Interval number"},{"name":"width","comment":" Get the width of an interval.\n\n    Interval.width (Interval.from 1 5)\n    --> 4\n\n","type":"Interval.Interval number -> number"}],"binops":[]}]