blob: 114115900d888b255ca0a55784233a8b80138cba [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (24) on Mon Sep 29 10:48:08 CEST 2025 -->
<title>FunctionProperty (Apache SIS 1.5 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2025-09-29">
<meta name="description" content="declaration: module: org.apache.sis.util, package: org.apache.sis.math, enum: FunctionProperty">
<meta name="generator" content="javadoc/ClassWriter">
<meta name="keywords" content="org.apache.sis.math.FunctionProperty class">
<meta name="keywords" content="values()">
<meta name="keywords" content="valueOf()">
<meta name="keywords" content="isBijective()">
<meta name="keywords" content="isMonotonic()">
<meta name="keywords" content="isConstant()">
<meta name="keywords" content="concatenate()">
<link rel="stylesheet" type="text/css" href="../../../../../resource-files/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../resource-files/stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../resource-files/sis.css" title="Style">
<script type="text/javascript" src="../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="class-use/FunctionProperty.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../new-list.html">New</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../search.html">Search</a></li>
<li><a href="../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../module-summary.html">org.apache.sis.util</a></li>
<li><a href="package-summary.html">org.apache.sis.math</a></li>
<li><a href="FunctionProperty.html" class="current-selection">FunctionProperty</a></li>
</ol>
<div class="nav-list-search">
<input type="text" id="search-input" disabled placeholder="Search" aria-label="Search in documentation" autocomplete="off">
<input type="reset" id="reset-search" disabled value="Reset">
</div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents&nbsp;
<input type="text" class="filter-input" disabled placeholder="Filter" aria-label="Filter table of contents" autocomplete="off">
<input type="reset" class="reset-filter" disabled value="Reset">
</div>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span>&#10094;</button><button class="show-sidebar">&#10095;<span>&nbsp;Show sidebar</span></button>
<ol class="toc-list">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#nested-class-summary" tabindex="0">Nested Class Summary</a></li>
<li><a href="#enum-constant-summary" tabindex="0">Enum Constant Summary</a></li>
<li><a href="#method-summary" tabindex="0">Method Summary</a></li>
<li><a href="#enum-constant-detail" tabindex="0">Enum Constant Details</a>
<ol class="toc-list">
<li><a href="#INVERTIBLE" tabindex="0">INVERTIBLE</a></li>
<li><a href="#INJECTIVE" tabindex="0">INJECTIVE</a></li>
<li><a href="#SURJECTIVE" tabindex="0">SURJECTIVE</a></li>
<li><a href="#ORDER_PRESERVING" tabindex="0">ORDER_PRESERVING</a></li>
<li><a href="#ORDER_REVERSING" tabindex="0">ORDER_REVERSING</a></li>
<li><a href="#VOLATILE" tabindex="0">VOLATILE</a></li>
</ol>
</li>
<li><a href="#method-detail" tabindex="0">Method Details</a>
<ol class="toc-list">
<li><a href="#values()" tabindex="0">values()</a></li>
<li><a href="#valueOf(java.lang.String)" tabindex="0">valueOf(String)</a></li>
<li><a href="#isBijective(java.util.Set)" tabindex="0">isBijective(Set)</a></li>
<li><a href="#isMonotonic(java.util.Set)" tabindex="0">isMonotonic(Set)</a></li>
<li><a href="#isConstant(java.util.Set)" tabindex="0">isConstant(Set)</a></li>
<li><a href="#concatenate(java.util.Set,java.util.Set)" tabindex="0">concatenate(Set, Set)</a></li>
</ol>
</li>
</ol>
</nav>
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<h1 title="Enum Class FunctionProperty" class="title">Enum Class FunctionProperty</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="FunctionProperty.html" title="enum class in org.apache.sis.math">FunctionProperty</a>&gt;
<div class="inheritance">FunctionProperty</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;<a href="FunctionProperty.html" title="enum class in org.apache.sis.math">Function­Property</a>&gt;</code>, <code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a></code></dd>
</dl>
<hr>
<div class="horizontal-scroll">
<div class="type-signature"><span class="modifiers">public enum </span><span class="element-name type-name-label">FunctionProperty</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="FunctionProperty.html" title="enum class in org.apache.sis.math">FunctionProperty</a>&gt;</span></div>
<div class="block">The manners in which the inputs of a function are mapped to the outputs.
The function doesn't need to be mathematical. For example, this enumeration
can be used with <a href="../util/ObjectConverter.html" title="interface in org.apache.sis.util"><code>Object­Converter</code></a>.
<p>Any given function can have zero, one or more properties from this enumeration.
Some properties not included in this enumeration can be expressed by a combination of
other properties:</p>
<table class="sis">
<caption>Inferred function properties</caption>
<tr><th>Property</th> <th>How to build</th></tr>
<tr><td><a href="#isBijective(java.util.Set)">Bijective</a></td>
<td><code>EnumSet.of(<a href="#INJECTIVE">INJECTIVE</a>, <a href="#SURJECTIVE">SURJECTIVE</a>)</code></td>
<tr><td><a href="#isMonotonic(java.util.Set)">Monotonic</a></td>
<td><code>EnumSet.of(<a href="#INJECTIVE">INJECTIVE</a>)</code>
or <code>Enum­Set​.of(<a href="#SURJECTIVE">SURJECTIVE</a>)</code></td>
<tr><td>Strictly increasing</td>
<td><code>EnumSet.of(<a href="#ORDER_PRESERVING">ORDER_PRESERVING</a>, <a href="#INJECTIVE">INJECTIVE</a>)</code></td>
<tr><td>Strictly decreasing</td>
<td><code>EnumSet.of(<a href="#ORDER_REVERSING">ORDER_REVERSING</a>, <a href="#INJECTIVE">INJECTIVE</a>)</code></td>
<tr><td><a href="#isConstant(java.util.Set)">Constant</a></td>
<td><code>EnumSet.of(<a href="#ORDER_PRESERVING">ORDER_PRESERVING</a>, <a href="#ORDER_REVERSING">ORDER_REVERSING</a>)</code></td>
</table>
The Javadoc in this class uses the following terms:
<ul>
<li><var>S</var> (as in <i>source</i>) is the set of all possible input values (the <i>domain</i>).
<li><var>T</var> (as in <i>target</i>) is a set containing all possible output values,
and potentially more elements (the <i>codomain</i>). For example, the set of output
values of the <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Integer.html#toString()" title="class or interface in java.lang" class="external-link"><code>Integer​.to­String()</code></a> function is included in a larger set, which is
the set of all possible <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link"><code>String</code></a> values. In this Javadoc, <var>T</var> stands for
the latter set.</li>
</ul></div>
<dl class="notes">
<dt>Since:</dt>
<dd>0.3</dd>
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="../util/ObjectConverter.html#properties()"><code>Object­Converter​.properties()</code></a></li>
</ul>
</dd>
</dl>
</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<li>
<section class="nested-class-summary" id="nested-class-summary">
<h2>Nested Class Summary</h2>
<div class="inherited-list">
<h3 id="nested-classes-inherited-from-class-java.lang.Enum">Nested classes/interfaces inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">Enum​.Enum­Desc</a>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.EnumDesc.html#type-param-E" title="class or interface in java.lang" class="external-link">E</a> extends <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.EnumDesc.html#type-param-E" title="class or interface in java.lang" class="external-link">E</a>&gt;&gt;</code></div>
</section>
</li>
<!-- =========== ENUM CONSTANT SUMMARY =========== -->
<li>
<section class="constants-summary" id="enum-constant-summary">
<h2>Enum Constant Summary</h2>
<div class="caption"><span>Enum Constants</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Enum Constant</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code><a href="#INJECTIVE" class="member-name-link">INJECTIVE</a></code></div>
<div class="col-last even-row-color">
<div class="block">A function is <i>injective</i> if each value of <var>T</var> is either unrelated
to <var>S</var>, or is the output of exactly one value of <var>S</var>.</div>
</div>
<div class="col-first odd-row-color"><code><a href="#INVERTIBLE" class="member-name-link">INVERTIBLE</a></code></div>
<div class="col-last odd-row-color">
<div class="block">A function is <i>invertible</i> if it can provide another function mapping
<var>T</var> values to <var>S</var> values.</div>
</div>
<div class="col-first even-row-color"><code><a href="#ORDER_PRESERVING" class="member-name-link">ORDER_PRESERVING</a></code></div>
<div class="col-last even-row-color">
<div class="block">A function preserves order if any sequence of increasing <var>S</var> values is mapped
to a sequence of increasing <var>T</var> values.</div>
</div>
<div class="col-first odd-row-color"><code><a href="#ORDER_REVERSING" class="member-name-link">ORDER_REVERSING</a></code></div>
<div class="col-last odd-row-color">
<div class="block">A function reverses order if any sequence of increasing <var>S</var> values is mapped
to a sequence of decreasing <var>T</var> values.</div>
</div>
<div class="col-first even-row-color"><code><a href="#SURJECTIVE" class="member-name-link">SURJECTIVE</a></code></div>
<div class="col-last even-row-color">
<div class="block">A function is <i>surjective</i> if any value of <var>T</var> can be created
from one or many values of <var>S</var>.</div>
</div>
<div class="col-first odd-row-color"><code><a href="#VOLATILE" class="member-name-link">VOLATILE</a></code></div>
<div class="col-last odd-row-color">
<div class="block">A function is volatile if the computed value changes each time that the function is evaluated.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/EnumSet.html" title="class or interface in java.util" class="external-link">Enum­Set</a><wbr>&lt;<a href="FunctionProperty.html" title="enum class in org.apache.sis.math">Function­Property</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#concatenate(java.util.Set,java.util.Set)" class="member-name-link">concatenate</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="FunctionProperty.html" title="enum class in org.apache.sis.math">Function­Property</a>&gt;&nbsp;step1,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="FunctionProperty.html" title="enum class in org.apache.sis.math">Function­Property</a>&gt;&nbsp;step2)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns the properties of a function defined as the concatenation of two other functions.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#isBijective(java.util.Set)" class="member-name-link">is­Bijective</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="FunctionProperty.html" title="enum class in org.apache.sis.math">Function­Property</a>&gt;&nbsp;properties)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns <code>true</code> if a function having the given set of properties is <i>bijective</i>.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#isConstant(java.util.Set)" class="member-name-link">is­Constant</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="FunctionProperty.html" title="enum class in org.apache.sis.math">Function­Property</a>&gt;&nbsp;properties)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns <code>true</code> if a function can only return a constant value.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#isMonotonic(java.util.Set)" class="member-name-link">is­Monotonic</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="FunctionProperty.html" title="enum class in org.apache.sis.math">Function­Property</a>&gt;&nbsp;properties)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns <code>true</code> if a function having the given set of properties is <i>monotonic</i>.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="FunctionProperty.html" title="enum class in org.apache.sis.math">Function­Property</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#valueOf(java.lang.String)" class="member-name-link">value­Of</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns the enum constant of this class with the specified name.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="FunctionProperty.html" title="enum class in org.apache.sis.math">Function­Property</a>[]</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#values()" class="member-name-link">values</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns an array containing the constants of this enum class, in
the order they are declared.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-Enum">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.html#compareTo(E)" title="class or interface in java.lang" class="external-link">compare­To</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.html#describeConstable()" title="class or interface in java.lang" class="external-link">describe­Constable</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.html#getDeclaringClass()" title="class or interface in java.lang" class="external-link">get­Declaring­Class</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.html#hashCode()" title="class or interface in java.lang" class="external-link">hash­Code</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.html#name()" title="class or interface in java.lang" class="external-link">name</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.html#ordinal()" title="class or interface in java.lang" class="external-link">ordinal</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.html#toString()" title="class or interface in java.lang" class="external-link">to­String</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.html#valueOf(java.lang.Class,java.lang.String)" title="class or interface in java.lang" class="external-link">value­Of</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-Object">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">get­Class</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notify­All</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ ENUM CONSTANT DETAIL =========== -->
<li>
<section class="constant-details" id="enum-constant-detail">
<h2>Enum Constant Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="INVERTIBLE">
<h3>INVERTIBLE</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="FunctionProperty.html" title="enum class in org.apache.sis.math">FunctionProperty</a></span>&nbsp;<span class="element-name">INVERTIBLE</span></div>
<div class="block">A function is <i>invertible</i> if it can provide another function mapping
<var>T</var> values to <var>S</var> values.
<p>While other values defined in this enumeration are more about the mathematical aspects
of functions, this particular value is more about the programmatical aspect. A function
may be conceptually invertible (all <a href="#isBijective(java.util.Set)">bijective</a> functions
should be), but the inverse operation may not be implemented. In such case, the function
properties shall not include this <code>INVERTIBLE</code> value.</p></div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="../util/ObjectConverter.html#inverse()"><code>Object­Converter​.inverse()</code></a></li>
</ul>
</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="INJECTIVE">
<h3>INJECTIVE</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="FunctionProperty.html" title="enum class in org.apache.sis.math">FunctionProperty</a></span>&nbsp;<span class="element-name">INJECTIVE</span></div>
<div class="block">A function is <i>injective</i> if each value of <var>T</var> is either unrelated
to <var>S</var>, or is the output of exactly one value of <var>S</var>.
For example, an <a href="../util/ObjectConverter.html" title="interface in org.apache.sis.util"><code>Object­Converter</code></a> doing conversions from <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link"><code>Integer</code></a>
to <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link"><code>String</code></a> is an injective function, because no pair of integers can produce the same string.
<p>A function which is both injective and <a href="#SURJECTIVE">surjective</a> is a
<i>bijective</i> function. In such functions, there is a one-to-one relationship
between all input and output values.</p></div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="#SURJECTIVE"><code>SURJECTIVE</code></a></li>
<li><a href="#isBijective(java.util.Set)"><code>is­Bijective(Set)</code></a></li>
</ul>
</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="SURJECTIVE">
<h3>SURJECTIVE</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="FunctionProperty.html" title="enum class in org.apache.sis.math">FunctionProperty</a></span>&nbsp;<span class="element-name">SURJECTIVE</span></div>
<div class="block">A function is <i>surjective</i> if any value of <var>T</var> can be created
from one or many values of <var>S</var>.
For example, an <a href="../util/ObjectConverter.html" title="interface in org.apache.sis.util"><code>Object­Converter</code></a> doing conversions from <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link"><code>String</code></a>
to <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link"><code>Integer</code></a> is a surjective function, because there is always at least one string for each integer value.
Note that such function cannot be injective since many different strings can represent the same integer value.
<p>A function which is both <a href="#INJECTIVE">injective</a> and surjective is a
<i>bijective</i> function. In such functions, there is a one-to-one relationship
between all input and output values.</p></div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="#INJECTIVE"><code>INJECTIVE</code></a></li>
<li><a href="#isBijective(java.util.Set)"><code>is­Bijective(Set)</code></a></li>
</ul>
</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="ORDER_PRESERVING">
<h3>ORDER_PRESERVING</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="FunctionProperty.html" title="enum class in org.apache.sis.math">FunctionProperty</a></span>&nbsp;<span class="element-name">ORDER_PRESERVING</span></div>
<div class="block">A function preserves order if any sequence of increasing <var>S</var> values is mapped
to a sequence of increasing <var>T</var> values. This enumeration constant can be used
only with <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link"><code>Comparable</code></a> types or primitive types having a comparable wrapper.
<p>Strictly ordered input values are not necessarily mapped to strictly ordered output values.
Strictness is preserved only if the function is also <a href="#INJECTIVE">injective</a>.</p>
<p>A function may be both order preserving and <a href="#ORDER_REVERSING">order reversing</a>
if all input values are mapped to a constant output value.</p></div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="#ORDER_REVERSING"><code>ORDER_REVERSING</code></a></li>
<li><a href="#isMonotonic(java.util.Set)"><code>is­Monotonic(Set)</code></a></li>
</ul>
</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="ORDER_REVERSING">
<h3>ORDER_REVERSING</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="FunctionProperty.html" title="enum class in org.apache.sis.math">FunctionProperty</a></span>&nbsp;<span class="element-name">ORDER_REVERSING</span></div>
<div class="block">A function reverses order if any sequence of increasing <var>S</var> values is mapped
to a sequence of decreasing <var>T</var> values. This enumeration constant can be used
only with <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link"><code>Comparable</code></a> types or primitive types having a comparable wrapper.
<p>Strictly ordered input values are not necessarily mapped to strictly ordered output values.
Strictness is preserved only if the function is also <a href="#INJECTIVE">injective</a>.</p>
<p>A function may be both <a href="#ORDER_PRESERVING">order preserving</a> and order reversing
if all input values are mapped to a constant output value.</p></div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="#ORDER_PRESERVING"><code>ORDER_PRESERVING</code></a></li>
<li><a href="#isMonotonic(java.util.Set)"><code>is­Monotonic(Set)</code></a></li>
</ul>
</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="VOLATILE">
<h3>VOLATILE</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="FunctionProperty.html" title="enum class in org.apache.sis.math">FunctionProperty</a></span>&nbsp;<span class="element-name">VOLATILE</span></div>
<div class="block">A function is volatile if the computed value changes each time that the function is evaluated.
It may be for example a random number generator, or a function returning the current date and time.</div>
<dl class="notes">
<dt>Since:</dt>
<dd>1.4</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="values()">
<h3>values</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="FunctionProperty.html" title="enum class in org.apache.sis.math">FunctionProperty</a>[]</span>&nbsp;<span class="element-name">values</span>()</div>
<div class="block">Returns an array containing the constants of this enum class, in
the order they are declared.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>an array containing the constants of this enum class, in the order they are declared</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="valueOf(java.lang.String)">
<h3>valueOf</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="FunctionProperty.html" title="enum class in org.apache.sis.math">FunctionProperty</a></span>&nbsp;<span class="element-name">valueOf</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
<div class="block">Returns the enum constant of this class with the specified name.
The string must match <i>exactly</i> an identifier used to declare an
enum constant in this class. (Extraneous whitespace characters are
not permitted.)</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>name</code> - the name of the enum constant to be returned.</dd>
<dt>Returns:</dt>
<dd>the enum constant with the specified name</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">Illegal­Argument­Exception</a></code> - if this enum class has no constant with the specified name</dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">Null­Pointer­Exception</a></code> - if the argument is null</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="isBijective(java.util.Set)">
<h3>isBijective</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isBijective</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="FunctionProperty.html" title="enum class in org.apache.sis.math">FunctionProperty</a>&gt;&nbsp;properties)</span></div>
<div class="block">Returns <code>true</code> if a function having the given set of properties is <i>bijective</i>.
Bijective functions have a one-to-one relationship between all input and output values.
This convenience method tests if the given set contains <em>all</em> following properties:
<ul>
<li><a href="#INJECTIVE"><code>INJECTIVE</code></a></li>
<li><a href="#SURJECTIVE"><code>SURJECTIVE</code></a></li>
</ul></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>properties</code> - the properties of the function to test for bijectivity.</dd>
<dt>Returns:</dt>
<dd><code>true</code> if a function having the given set of properties is bijective.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="isMonotonic(java.util.Set)">
<h3>isMonotonic</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isMonotonic</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="FunctionProperty.html" title="enum class in org.apache.sis.math">FunctionProperty</a>&gt;&nbsp;properties)</span></div>
<div class="block">Returns <code>true</code> if a function having the given set of properties is <i>monotonic</i>.
This convenience method tests if the given set contains <em>at least one</em> of the following
properties:
<ul>
<li><a href="#ORDER_PRESERVING"><code>ORDER_PRESERVING</code></a></li>
<li><a href="#ORDER_REVERSING"><code>ORDER_REVERSING</code></a></li>
</ul></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>properties</code> - the properties of the function to test for monotonicity.</dd>
<dt>Returns:</dt>
<dd><code>true</code> if a function having the given set of properties is monotonic.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="isConstant(java.util.Set)">
<h3>isConstant</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isConstant</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="FunctionProperty.html" title="enum class in org.apache.sis.math">FunctionProperty</a>&gt;&nbsp;properties)</span></div>
<div class="block">Returns <code>true</code> if a function can only return a constant value.
This convenience method tests if the given set contains <em>all</em>
of the following properties:
<ul>
<li><a href="#ORDER_PRESERVING"><code>ORDER_PRESERVING</code></a></li>
<li><a href="#ORDER_REVERSING"><code>ORDER_REVERSING</code></a></li>
</ul></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>properties</code> - the properties of the function to test.</dd>
<dt>Returns:</dt>
<dd><code>true</code> if the function can only return a constant value.</dd>
<dt>Since:</dt>
<dd>1.4</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="concatenate(java.util.Set,java.util.Set)">
<h3>concatenate</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/EnumSet.html" title="class or interface in java.util" class="external-link">EnumSet</a>&lt;<a href="FunctionProperty.html" title="enum class in org.apache.sis.math">FunctionProperty</a>&gt;</span>&nbsp;<span class="element-name">concatenate</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="FunctionProperty.html" title="enum class in org.apache.sis.math">FunctionProperty</a>&gt;&nbsp;step1,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="FunctionProperty.html" title="enum class in org.apache.sis.math">FunctionProperty</a>&gt;&nbsp;step2)</span></div>
<div class="block">Returns the properties of a function defined as the concatenation of two other functions.
The presence of a property in the returned set is determined by combining the presence of
the same property in the two steps using the following logical operations:
<ul>
<li><a href="#INVERTIBLE"><code>INVERTIBLE</code></a>, <a href="#INJECTIVE"><code>INJECTIVE</code></a>, <a href="#SURJECTIVE"><code>SURJECTIVE</code></a>, <a href="#ORDER_PRESERVING"><code>ORDER_PRESERVING</code></a>:
logical <code>AND</code> operation.</li>
<li><a href="#ORDER_REVERSING"><code>ORDER_REVERSING</code></a>:
Logical <code>XOR</code> operation if the other step is also ordered.</li>
<li><a href="#VOLATILE"><code>VOLATILE</code></a>:
logical <code>OR</code> operation.</li>
</ul>
The returned set is always a new instance and is modifiable,
thus allowing the caller to customize the property set.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>step1</code> - properties of the first function.</dd>
<dd><code>step2</code> - properties of the second function.</dd>
<dt>Returns:</dt>
<dd>properties of the concatenated function as a new and modifiable set.</dd>
<dt>Since:</dt>
<dd>1.4</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</body>
</html>