# Tcl Library Source Code

math::rationalfunctions - Math
Bounty program for improvements to Tcl and certain Tcl packages.
Tcl 2018 Conference, Houston/TX, US, Oct 15-19
or submit via the online form by Aug 20.

# math::rationalfunctions(n) 1.0.1 tcllib "Math"

## Name

math::rationalfunctions - Polynomial functions

## Description

This package deals with rational functions of one variable:

• the basic arithmetic operations are extended to rational functions

• computing the derivatives of these functions

• evaluation through a general procedure or via specific procedures)

## PROCEDURES

The package defines the following public procedures:

::math::rationalfunctions::rationalFunction num den

Return an (encoded) list that defines the rational function. A rational function

```             1 + x^3
f(x) = ------------
1 + 2x + x^2
```

can be defined via:

```   set f [::math::rationalfunctions::rationalFunction [list 1 0 0 1]  [list 1 2 1]]
```
list num

Coefficients of the numerator of the rational function (in ascending order)

list den

Coefficients of the denominator of the rational function (in ascending order)

::math::rationalfunctions::ratioCmd num den

Create a new procedure that evaluates the rational function. The name of the function is automatically generated. Useful if you need to evaluate the function many times, as the procedure consists of a single [expr] command.

list num

Coefficients of the numerator of the rational function (in ascending order)

list den

Coefficients of the denominator of the rational function (in ascending order)

::math::rationalfunctions::evalRatio rational x

Evaluate the rational function at x.

list rational

The rational function's definition (as returned by the rationalFunction command). order)

float x

The coordinate at which to evaluate the function

Return a new rational function which is the sum of the two others.

list ratio1

The first rational function operand

list ratio2

The second rational function operand

::math::rationalfunctions::subRatio ratio1 ratio2

Return a new rational function which is the difference of the two others.

list ratio1

The first rational function operand

list ratio2

The second rational function operand

::math::rationalfunctions::multRatio ratio1 ratio2

Return a new rational function which is the product of the two others. If one of the arguments is a scalar value, the other rational function is simply scaled.

list ratio1

The first rational function operand or a scalar

list ratio2

The second rational function operand or a scalar

::math::rationalfunctions::divRatio ratio1 ratio2

Divide the first rational function by the second rational function and return the result. The remainder is dropped

list ratio1

The first rational function operand

list ratio2

The second rational function operand

::math::rationalfunctions::derivPolyn ratio

Differentiate the rational function and return the result.

list ratio

The rational function to be differentiated

::math::rationalfunctions::coeffsNumerator ratio

Return the coefficients of the numerator of the rational function.

list ratio

The rational function to be examined

::math::rationalfunctions::coeffsDenominator ratio

Return the coefficients of the denominator of the rational function.

list ratio

The rational function to be examined

## REMARKS ON THE IMPLEMENTATION

The implementation of the rational functions relies on the math::polynomials package. For further remarks see the documentation on that package.

## Bugs, Ideas, Feedback

This document, and the package it describes, will undoubtedly contain bugs and other problems. Please report such in the category math :: rationalfunctions of the Tcllib Trackers. Please also report any ideas for enhancements you may have for either package and/or documentation.

When proposing code changes, please provide unified diffs, i.e the output of diff -u.

Note further that attachments are strongly preferred over inlined patches. Attachments can be made by going to the Edit form of the ticket immediately after its creation, and then using the left-most button in the secondary navigation bar.

Mathematics