Xcas is a user interface to Giac, which is an open source computer algebra system (CAS) for Windows, macOS and Linux among many other platforms. Xcas is written in C++. Giac can be used directly inside software written in C++. Xcas has compatibility modes with many popular algebra systems like WolframAlpha, Mathematica, Maple, or MuPAD. Users can use Giac/Xcas to develop formal algorithms or use it in other software. Giac is used in SageMath for calculus operations. Among other things, Xcas can solve equations (Figure 3) and differential equations (Figure 4) and draw graphs. There is a forum for questions about Xcas. CmathOOoCAS, an OpenOffice.org plugin which allows formal calculation in Calc spreadsheet and Writer word processing, uses Giac to perform calculations. Here is a brief overview of what Xcas is able to do: Xcas has the ability of a scientific calculator that provides show input and writes pretty print Xcas works also as a spreadsheet; computer algebra; 2D geometry in the plane; 3D geometry in space; spreadsheet; statistics; regression (exponential, linear, logarithmic, logistic, polynomial, power) programming; solve equations even with complex roots (Figure 2); solving trigonometric equations solve differential equations (Figure 3); draw graphs; calculate differential (or derivative) of functions (Figure 2); calculate antiderivative of functions (Figure 2); calculate area and integral calculus; linear algebra Example Xcas commands: Produce mixed fractions: propfrac(42/15) gives 2 + 4/5 Calculate square root: sqrt(4) = 2 Draw a vertical line in coordinate system: line(x=1) draws the vertical line in the output window Draw graph: plot(function) (for example, plot(3 * x^2 - 5) produces a plot of y = 3x2 − 5 Calculate average: mean([3, 4, 2]) is 3 Calculate variance: variance([3, 4, 2]) is 2/3 Calculate standard deviation: stddev([3, 4, 2]) is /3 Calculate determinant of a matrix: is -2 Calculate local extrema of a function: extrema(-2cos(x)-cos(x)^2,x) is [0, π] Calculate cross product of two vectors: cross([1, 2, 3], [4, 3, 2]) is [-5, 10, -5] Calculate permutations: nPr() Calculate combinations: nCr() Solve equation: solve(equation,x) Factoring Polynomials: factor(polynomial,x) or cfactor(polynomial,x) Differentiation of function: diff(function,x) Calculate indefinite integrals/antiderivatives: int(function,x) Calculate definite integrals/area under the curve of a function: int(function,x,lowerlimit,upperlimit) Calculate definite integral aka solid of revolution - finding volume by rotation (around the x-axis): int(pifunction^2,x,lowerlimit,upperlimit) Calculate definite integral aka solid of revolution - finding volume by rotation (around the y-axis) for a decreasing function: int(2pixfunction,x,lowerlimit,upperlimit) Separation of variables: split((x+1)(y-2),[x,y]) produces [x+1,y-2] desolve differential equation (the derivatives are written as y or y): desolve(differential equation,y) Microsoft Windows Apple macOS Linux/Unix FreeBSD Android iOS (paid version) Online.