= Streaming Expressions and Math Expressions
:page-children: visualization, math-start, loading, search-sample, transform, scalar-math, vector-math, variables, matrix-math, term-vectors, statistics, probability-distributions, simulations, time-series, regression, numerical-analysis, curve-fitting, dsp, machine-learning, computational-geometry

// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements.  See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License.  You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied.  See the License for the
// specific language governing permissions and limitations
// under the License.

== A Visual Guide

image::images/math-expressions/searchiris.png[]

== Table of Contents

*<<visualization.adoc#visualization,Visualizations>>*: Gallery of Streaming Expressions and Math Expressions visualizations.

*<<math-start.adoc#math-start,Getting Started>>*: Getting started with Streaming Expressions, Math Expressions and visualization.

*<<loading.adoc#data-loading,Data Loading>>*: Visualizing, transforming and loading CSV files.

*<<search-sample.adoc#search-sample,Searching, Sampling and Aggregation>>*: Searching, sampling, aggregation and visualization of result sets.

*<<transform.adoc#transform,Transforming Data>>*: Transforming and filtering result sets.

*<<scalar-math.adoc#scalar-math,Scalar Math>>*: Math functions and visualization applied to numbers.

*<<vector-math.adoc#vector-math,Vector Math>>*: Vector math, manipulation and visualization.

*<<variables.adoc#variables, Variables and Vectorization>>*: Vectorizing result sets and assigning and visualizing variables.

*<<matrix-math.adoc#matrix-math,Matrix Math>>*: Matrix math, manipulation and visualization.

*<<term-vectors.adoc#term-vectors,Text Analysis and Term Vectors>>*: Text analysis and TF-IDF term vectors.

*<<probability-distributions.adoc#probability-distributions,Probability>>*: Continuous and discrete probability distribution functions.

*<<statistics.adoc#statistics,Statistics>>*: Descriptive statistics, histograms, percentiles, correlation, inference tests and other stats functions.

*<<regression.adoc#regression,Linear Regression>>*: Simple and multivariate linear regression.

*<<curve-fitting.adoc#curve-fitting,Curve Fitting>>*: Polynomial, harmonic and Gaussian curve fitting.

*<<time-series.adoc#time-series,Time Series>>*: Time series aggregation, visualization, smoothing, differencing, anomaly detection and forecasting.

*<<numerical-analysis.adoc#numerical-analysis,Interpolation and Numerical Calculus>>*: Interpolation, derivatives and integrals.

*<<dsp.adoc#dsp,Signal Processing>>*: Convolution, cross-correlation, autocorrelation and fast Fourier transforms.

*<<simulations.adoc#simulations,Simulations>>*: Monte Carlo simulations and random walks

*<<machine-learning.adoc#machine-learning,Machine Learning>>*: Distance, KNN, KNN regression, K-means, fuzzy K-means and other ML functions.

*<<computational-geometry.adoc#computational-geometry,Computational Geometry>>*: Convex Hulls and Enclosing Disks.
