# Is "to clamp" the best term for restricting a numerical value to a range?

One of the definitions of "to clamp" is, according to wiktionary:

(transitive) To modify a numeric value so it lies within a specific range.

Is "to clamp" the best term for this?
It sounds a bit technical to me.

• Restrict comes to mind: the values for the variable are restricted between 1 and 0 inclusive. Jan 14 '16 at 11:45
• google.com/… Jan 14 '16 at 14:29
• google.com/… Jan 14 '16 at 14:31

From a technical point of view, I find that definition quite misleading.

The verb to clamp is commonly employed in electronics to denote the action of a circuit which shifts a (typically periodic) voltage so that either its minimum value or its maximum one become fixed to a certain predefined value (e.g. 0 volt). A circuit of this sort is called a clamper.

The reason for the above terminology is that that kind of circuits work, with a bit of imagination, like a clamp tool which presses the minimum or the maximum values against the predefined value.

A circuit which prevents a voltage from exceeding certain limits is instead called a clipper because its action is that of clipping any voltage that tends to pass said limits. Thus, even outside electronics, the action of modifying a numeric value so it lies within a specific range looks to me more similar to the action of clipping than that of clamping, at least in the common technical terminology.

Clipping is an action that can cause a loss of information: all the values beyond the limits are flattened within the limits. There is, however, another possibility which is lossless: you can, in fact, also scale a quantity so that it fits (smoothly) within a certain range. The verb to adapt is also frequently employed with this meaning, and it has probably a more general connotation than to scale.

Therefore, I would not use to clamp anyway, but I would choose to clip, to scale or to adapt, depending on the way the modification of the value is carried out.

• The function that does this in numpy is called `numpy.clip`
– Paul
Jan 15 '16 at 4:20
• Rcpp appears to have a sugar function `clamp`, which does what `numpy.clip` does. See also: stackoverflow.com/questions/13868963/…. Jan 15 '16 at 12:49
• Massimo, can you clarify whether "to clamp", in an electronics context, can cause a loss of information, and how? If possible, I'd appreciate if you could write the equivalent sentence to `Clipping is an action that can cause a loss of information: all the values beyond the limits are flattened within the limits.`. This would help me understand the difference between clamping and clipping. Jan 21 '16 at 11:38
• @ANeves Let me make an analogy. Imagine you have a 1-m long spring, which in this analogy represents your range of values, signal etc., and you have to mail it to a distant friend. Suppose that the mail service has only boxes with a length of 50 cm. Either you cut (clip) the spring, but your friend would not be able to recover the full spring (loss of information), or you compress (adapt, scale) it so that it fits in the box, allowing your friend to recover the full spring. Clamping, instead, means attaching one end of the spring to some specific position. Jan 24 '16 at 13:15
• That does not help, but thank you. Do I understand correctly that clipping truncates and clamping translates, both to ensure that the values land in the desired range? Jan 25 '16 at 0:41

In Mathematics, the term 'limit' is used to specify the range of values that an integer can take. Other possible words are 'scope', 'spectrum' or simply 'vary from xx to xx'. Consider the example :

• The value of 'i' can vary from 10 to 20.
• The scope of the angle is up to 270 degrees.

Additionally, 'clamp' has a definition : "maintain the voltage limits of (an electrical signal) at prescribed values.", according to Google. So I guess that it is acceptable. I've seen it being used in many places once I searched around for its usage over the internet.

• In mathematics, a limit is a single asymptotic value for real numbers Jan 14 '16 at 12:17

Bounded is the term used when a value has an upper (greatest) value and a lower (least) value.

Maintaining the boundaries of a bounded variable is done through floor and ceiling functions

where

floor(X) = Maximum of X and lower bound
ceiling(X) = Minimum of X and upper bound

By using floor and ceiling functions you are bounding the range of values a variable can have.

• The mathematical meaning of "bounded" does not include the concept of "modifying" the numeric value. "Boundedness" can just be tested (to confirm that the value lies within a specific range). Jan 14 '16 at 22:40
• @Jasper I think the OP is asking about restircting values, the definition he gives, which he thinks is inappropriate, mentions modifying Jan 15 '16 at 3:29
• No, the floor and ceil functions do not bound values: in fact, they have unbounded ranges. Jan 15 '16 at 7:24
• @MassimoOrtolano How are they unbounded? If you are thinking each function is unbounded by the opposite* range, max for floor and min for ceiling, it is the reason they are used in conjunction with each other: floor and ceiling functions. Or am I missing something? Jan 15 '16 at 10:05
• What would I use in which context? In the context of natural language, I'd use what I specified in my answer; in the context of a specific programming language, if available, I'd use whatever function does this kind of operation, whatever name the developers of that programming language had chosen (otherwise, I'd define it myself and call it clip); in the context of mathematics, afaik, there's no standard symbol for such a function, and I'd define a piecewise continuous function and I'd label it with a single letter symbol. Jan 15 '16 at 15:24

To clamp means "to attach or constrict, with something that pinches or is wrapped tightly."

A clamp is an object that clamps. There are various tools called clamps which do this, and typically they can be moved. If you put two clamps on something like a tube or pipe, and there is something in there that can move, you are indeed limiting its movement, from "pinch point" A to "pinch point" B.

If a parallel between the above and a mathematical or other process can be made, it might make sense.

If you have an existing value out of range, and have a process that brings it within range, not sure if that can be called "clamping" - the physical parallel is that you have something outside of a pipe and then attach a clamp - well, you can't capture what's already outside the pipe with the clamp.

• This helps, but does not really answer the question. Jan 15 '16 at 14:31