Maple für Professional
Maple für Akademiker
Maple für Studenten
Maple Personal Edition
Maple Player
Maple Player für iPad
MapleSim für Professional
MapleSim für Akademiker
Maple T.A. - Testen & beurteilen
Maple T.A. MAA Placement Test Suite
Möbius - Online-Courseware
Machine Design / Industrial Automation
Luft- und Raumfahrt
Fahrzeugtechnik
Robotics
Energiebranche
System Simulation and Analysis
Model development for HIL
Anlagenmodelle für den Regelungsentwurf
Robotics/Motion Control/Mechatronics
Other Application Areas
Mathematikausbildung
Technik
Allgemein- und berufsbildende Schulen
Testen und beurteilen
Studierende
Finanzmodelle
Betriebsforschung
Hochleistungsrechnen
Physik
Live-Webinare
Aufgezeichnete Webinare
Geplante Veranstaltungen
MaplePrimes
Maplesoft-Blog
Maplesoft-Mitgliedschaft
Maple Ambassador Program
MapleCloud
Technische Whitepapers
E-Mail Newsletters
Maple-Bücher
Math Matters
Anwendungs-Center
MapleSim Modell-Galerie
Anwenderberichte
Exploring Engineering Fundamentals
Lehrkonzepte mit Maple
Maplesoft Welcome-Center
Resource-Center für Lehrer
Help-Center für Studierende
define_external(...,WRAPPER,...) - generate and compile a C translation wrapper used by define_external
Calling Sequence
define_external(...,WRAPPER,...)
Description
When the WRAPPER option is used with define_external, a C file is created, compiled and linked into Maple. This new library, called a wrapper library, contains the code necessary to translate Maple data types into data types recognized by C programs.
A C compiler is required to use this feature. See COMPILE_OPTIONS for a description of the various settings available for configuring Maple to automatically compile the generated wrappers.
In addition to the data structures supported by wrapperless external call, generated wrappers support procedures (callbacks), structures, and unions.
A structure is a non-homogeneous collection of members, corresponding to a struct in C.
STRUCT( member1::descriptor1, ..., memberN::descriptorN, options);
A union is similar to a structure, except that all the members start at the same memory address, hence only one member of the union is valid at any given time.
UNION( member1::descriptor1, ..., memberN::descriptorN, options);
Each member::descriptor pair describes one member of the structure or union. The descriptor is any of the basic external types recognized by define_external.
The options are used to specify what kind of data type the wrapper should expect for conversion purposes. Valid options are TABLE and LIST. Only one of these options can be specified, and once the wrapper has been generated only the declared type is accepted. When tables are used, the member names correspond to table indices. When lists are used, the member ordering is used to determine which element is accessed. Lists are considered read-only.
A Maple procedure can be passed as an argument to an external function.
PROC( arg1::descriptor1, ..., argN::descriptorN, RETURN::descriptor, options);
Examples
The following example shows how to declare an external function that takes callback parameters. The external function is an implementation of Newton's method for finding a root of the given function, . The derivative of , fprime must also be provided. The initial guess is continuously improved until the absolute value of is less than or equal to the given tolerance. If a good solution cannot be found in 100 iterations, the computation aborts and 0 is returned, otherwise the improved guess is returned. The external C function is defined as follows.
#include <stdio.h>
#include <math.h>
double newton(
double ( f ) (double),
double ( fprime ) (double),
double guess,
double tolerance )
{
int count = 0;
while( fabs(f(guess)) > tolerance && count++ < 100 )
guess = guess - f(guess)/fprime(guess);
return( count>=100 ? 0 : guess );
}
The Maple definition is:
Pick an equation and find its derivative.
The external function expects procedure arguments, so turn the above polynomials into procedures.
Call the external function to find the root.
Verify that this is a root.
See Also
COMPILE_OPTIONS, CustomWrapper, define_external, define_external/types, SharedLibrary
Download Help Document