Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Thread Subject:
Error in MIN and MAX

Subject: Error in MIN and MAX

From: roya olyazadeh

Date: 29 May, 2010 17:41:06

Message: 1 of 46

This is my matrix :

X00 =

  Columns 1 through 3

                      1000 939.073645098372 814.549313652745

  Columns 4 through 6

                   878.926 912.009169278451 893.126889224274


??? Subscript indices must either be real positive integers or logicals.

Error in ==> networkadjustment at 480
min(X00)


What is the problem ? each element seems to be real positive integers.

Subject: Error in MIN and MAX

From: Bruno Luong

Date: 29 May, 2010 17:51:22

Message: 2 of 46

"roya olyazadeh" <roya2543@gmail.com> wrote in message <htrjji$34i$1@fred.mathworks.com>...

>
> What is the problem ? each element seems to be real positive integers.

Do not name your variable MIN

Bruno

Subject: Error in MIN and MAX

From: Matt Fig

Date: 29 May, 2010 17:55:21

Message: 3 of 46

You are the 1,345,657th person to name a variable after a built-in MATLAB function, then try to call the function.

Subject: Error in MIN and MAX

From: Roger Stafford

Date: 29 May, 2010 17:56:23

Message: 4 of 46

"roya olyazadeh" <roya2543@gmail.com> wrote in message <htrjji$34i$1@fred.mathworks.com>...
> This is my matrix :
>
> X00 =
>
> Columns 1 through 3
>
> 1000 939.073645098372 814.549313652745
>
> Columns 4 through 6
>
> 878.926 912.009169278451 893.126889224274
>
>
> ??? Subscript indices must either be real positive integers or logicals.
>
> Error in ==> networkadjustment at 480
> min(X00)
>
>
> What is the problem ? each element seems to be real positive integers.

  I would guess that somewhere you have an array named 'min' and matlab is objecting to the fact that the elements of X00, used as indices into 'min', are not positive integers, which in fact they are *not*.

  You should never give your variables the names of matlab functions, for precisely this reason.

Roger Stafford

Subject: Error in MIN and MAX

From: Matt Fig

Date: 29 May, 2010 18:06:08

Message: 5 of 46

Put this function in your current directory, then just before the line that errors in networkadjustment (line 480) call CHECKVARS.




function [] = checkvars()
%CHECKVARS Check the variables in current workspace for function masking.
% CHECKVARS finds out if one of the variables in the current workspace is
% masking another function or directory or javaclass. If any variables are
% masking something on the searchpath, a warning will be issued in the
% command window. If no conflicts are found, CHECKVARS returns nothing.
%
%
% Author: Matt Fig
 

who_out = evalin('caller','who'); % Get a list of variables in caller.

for ind_var = 1:length(who_out)
    exist_out = exist(who_out{ind_var}); %#ok Find if other names match.
    
    switch exist_out
        case 2
            conflict_type = ' M-File function.';
        case 3
            conflict_type = ' MEX function.';
        case 4
            conflict_type = ' mdl file.';
        case 5
            conflict_type = ' built-in function.';
        case 6
            conflict_type = ' P-File function.';
        case 7
            conflict_type = ' directory.';
        case 8
            conflict_type = ' Java class.';
        otherwise
            exist_out = 0;
    end
    
    if exist_out
        fprintf(['''',who_out{ind_var},...
                 ''' may be masking a',conflict_type,'\n'])
    end
end

Subject: Error in MIN and MAX

From: Matt J

Date: 29 May, 2010 18:10:21

Message: 6 of 46

"roya olyazadeh" <roya2543@gmail.com> wrote in message <htrjji$34i$1@fred.mathworks.com>...
 
> ??? Subscript indices must either be real positive integers or logicals.
>
> Error in ==> networkadjustment at 480
> min(X00)
>
>
> What is the problem ? each element seems to be real positive integers.
==============

Another fix, if you really want a variable named 'min'. Change line 480 of networkadjustment.m to,

myMin(X00)

Then, as the first line of code in the file, add

myMin=@min;

Subject: Error in MIN and MAX

From: Matt J

Date: 29 May, 2010 18:29:08

Message: 7 of 46

"Matt J " <mattjacREMOVE@THISieee.spam> wrote in message <htrlad$im4$1@fred.mathworks.com>...

> Then, as the first line of code in the file, add
>
> myMin=@min;

Make that

myMin=eval('@min'); %a deliberately horrible use of eval

Subject: Error in MIN and MAX

From: roya olyazadeh

Date: 29 May, 2010 18:32:06

Message: 8 of 46

"Matt Fig" <spamanon@yahoo.com> wrote in message <htrke8$o1o$1@fred.mathworks.com>...
> You are the 1,345,657th person to name a variable after a built-in MATLAB function, then try to call the function.

How did you count this number??

Subject: Error in MIN and MAX

From: Walter Roberson

Date: 29 May, 2010 18:37:21

Message: 9 of 46

roya olyazadeh wrote:
> "Matt Fig" <spamanon@yahoo.com> wrote in message
> <htrke8$o1o$1@fred.mathworks.com>...
>> You are the 1,345,657th person to name a variable after a built-in
>> MATLAB function, then try to call the function.
>
> How did you count this number??

Well, you know Matt -- he prefers to understand things.

Subject: Error in MIN and MAX

From: Bruno Luong

Date: 29 May, 2010 18:39:08

Message: 10 of 46

"roya olyazadeh" <roya2543@gmail.com> wrote in message <htrmj6$8u8$1@fred.mathworks.com>...
>
>
> How did you count this number??

Perhaps with a working MIN function.

Bruno

Subject: Error in MIN and MAX

From: John D'Errico

Date: 29 May, 2010 19:37:05

Message: 11 of 46

"roya olyazadeh" <roya2543@gmail.com> wrote in message <htrmj6$8u8$1@fred.mathworks.com>...
> "Matt Fig" <spamanon@yahoo.com> wrote in message <htrke8$o1o$1@fred.mathworks.com>...
> > You are the 1,345,657th person to name a variable after a built-in MATLAB function, then try to call the function.
>
> How did you count this number??

Matt has kept a careful record of every such occurrence,
an arduous task, with very little reward. In fact, we are
quite amazed at his diligence.

Keep it up Matt!

John

Subject: Error in MIN and MAX

From: Walter Roberson

Date: 29 May, 2010 21:07:25

Message: 12 of 46

Walter Roberson wrote:
> roya olyazadeh wrote:
>> "Matt Fig" <spamanon@yahoo.com> wrote in message
>> <htrke8$o1o$1@fred.mathworks.com>...
>>> You are the 1,345,657th person to name a variable after a built-in
>>> MATLAB function, then try to call the function.
>>
>> How did you count this number??
>
> Well, you know Matt -- he prefers to understand things.

Opps, I meant "understate" not "understand".

Subject: Error in MIN and MAX

From: james bejon

Date: 29 May, 2010 21:38:22

Message: 13 of 46

> > > You are the 1,345,657th person to name a variable after a built-in MATLAB function, then try to call the function.
> >
> > How did you count this number??
>

Behind the scenes, CSSM has a static variable called 'sum' which keeps a total of such things.

Subject: Error in MIN and MAX

From: Matt Fig

Date: 29 May, 2010 21:46:03

Message: 14 of 46

Walter Roberson <roberson@hushmail.com> wrote in message
> Opps, I meant "understate" not "understand".


Now it makes sense, I couldn't figure out what you meant!

Subject: Error in MIN and MAX

From: Matt Fig

Date: 29 May, 2010 21:47:04

Message: 15 of 46

It must be a slow day when a masking variable thread stays in the top 5 for hours on end...

Subject: Error in MIN and MAX

From: Steve Amphlett

Date: 30 May, 2010 07:50:08

Message: 16 of 46

"Matt Fig" <spamanon@yahoo.com> wrote in message <hts20o$vt$1@fred.mathworks.com>...
> It must be a slow day when a masking variable thread stays in the top 5 for hours on end...

I still think it's a huge problem with the Matlab language. A massive booby-trap sitting there, waiting. A bit like Fortran's implicit declaration of miss-spelled variables or variables truncated by the 72'nd column cut-off.

Subject: Error in MIN and MAX

From: Matt J

Date: 30 May, 2010 12:38:07

Message: 17 of 46

"Steve Amphlett" <Firstname.Lastname@Where-I-Work.com> wrote in message <htt5bg$fli$1@fred.mathworks.com>...

> I still think it's a huge problem with the Matlab language. A massive booby-trap sitting there, waiting.
=============

I'm actually a bit dumbfounded by how often this occurs. If you're trying to use the same name for two different things (function and variable), I tend to think that you really don't know what's going on in your code.

Subject: Error in MIN and MAX

From: dpb

Date: 30 May, 2010 12:44:25

Message: 18 of 46

Steve Amphlett wrote:
> "Matt Fig" <spamanon@yahoo.com> wrote in message
> <hts20o$vt$1@fred.mathworks.com>...
>> It must be a slow day when a masking variable thread stays in the top
>> 5 for hours on end...
>
> I still think it's a huge problem with the Matlab language. A massive
> booby-trap sitting there, waiting. A bit like Fortran's implicit
> declaration of miss-spelled variables ...

"IMPLICIT NONE"

> ... or variables truncated by the 72'nd column cut-off.

free-form source format...

:)

--

Subject: Error in MIN and MAX

From: dpb

Date: 30 May, 2010 13:16:32

Message: 19 of 46

Matt J wrote:
> "Steve Amphlett" <Firstname.Lastname@Where-I-Work.com> wrote in message
> <htt5bg$fli$1@fred.mathworks.com>...
>
>> I still think it's a huge problem with the Matlab language. A massive
>> booby-trap sitting there, waiting.
> =============
>
> I'm actually a bit dumbfounded by how often this occurs. If you're
> trying to use the same name for two different things (function and
> variable), I tend to think that you really don't know what's going on in
> your code.

OTOH, given the size of the ML namespace, in some ways my surprise is it
doesn't happen even more often... :)

"i" and "j" are probably the two most common index variables
ubiquitously used in other code; it's essentially automatic to write
them for anybody who's ever written in any other language at all.

The min() and max() names are, while possibly could claim they always
ought to be minx or miny or somesuch amplified naming convention no
matter what seem perfectly reasonable to use as variable names. And, of
course, if one comes from Fortran (listening, Rune??? :) ) where
function names and variable names are in different name spaces, it's
perfectly permissible (altho I don't recommend it, it makes one not
consider as carefully as otherwise might) in picking names.

One could go on w/ examples... :)

--

Subject: Error in MIN and MAX

From: Matt J

Date: 30 May, 2010 16:12:05

Message: 20 of 46

dpb <none@non.net> wrote in message <httojr$f0t$1@news.eternal-september.org>...

> > I'm actually a bit dumbfounded by how often this occurs. If you're
> > trying to use the same name for two different things (function and
> > variable), I tend to think that you really don't know what's going on in
> > your code.
>
> OTOH, given the size of the ML namespace, in some ways my surprise is it
> doesn't happen even more often... :)

No, the save of the Matlab namespace is not relevant. It is perfectly harmless to use i, j, min, max, etc... as variable names as long as you don't then try to use them as functions later on in the same workspace.

The problem only occurs when people deliberately try to use the same name for 2 different things in the same mfile.

Subject: Error in MIN and MAX

From: freund@mail.biu.ac.il

Date: 30 May, 2010 17:02:56

Message: 21 of 46

Dear Mike,

Is there a way to turn on <checkvars> and have it run in the background until turned off? I tested one of my functions that I use all the time by inserting checkvars as the last line, and was amazed to find four instances of shadowing that involved three obscure Matlab functions such as Zb, and a function that I wrote years ago and had stupidly named G1. After the test I decided the shadowing was in these cases innocuous, and deleted checkvars. But it is obviously not practical to check all my functions this way. In many cases functions are deeply nested, and shadowing could have the potential to produce undetected errors. Ideally, checkvars would tell you the name of the m-file and the line number.

Thanks,

Ize

Subject: Running checkvars in the background

From: freund@mail.biu.ac.il

Date: 30 May, 2010 17:06:32

Message: 22 of 46

Dear Mike,

Is there a way to turn on <checkvars> and have it run in the background until turned off? I tested one of my functions that I use all the time by inserting checkvars as the last line, and was amazed to find four instances of shadowing that involved three obscure Matlab functions such as Zb, and a function that I wrote years ago and had stupidly named G1. After the test I decided the shadowing was in these cases innocuous, and deleted checkvars. But it is obviously not practical to check all my functions this way. In many cases functions are deeply nested, and shadowing could have the potential to produce undetected errors. Ideally, checkvars would tell you the name of the m-file and the line number.

Thanks,

Ize

Subject: Error in MIN and MAX

From: Rune Allnor

Date: 30 May, 2010 20:38:19

Message: 23 of 46

On 30 Mai, 15:16, dpb <n...@non.net> wrote:
> Matt J wrote:
> > "Steve Amphlett" <Firstname.Lastn...@Where-I-Work.com> wrote in message
> > <htt5bg$fl...@fred.mathworks.com>...
>
> >> I still think it's a huge problem with the Matlab language.  A massive
> >> booby-trap sitting there, waiting.  
> > =============
>
> > I'm actually a bit dumbfounded by how often this occurs. If you're
> > trying to use the same name for two different things (function and
> > variable), I tend to think that you really don't know what's going on in
> > your code.
>
> OTOH, given the size of the ML namespace, in some ways my surprise is it
> doesn't happen even more often... :)
>
> "i" and "j" are probably the two most common index variables
> ubiquitously used in other code; it's essentially automatic to write
> them for anybody who's ever written in any other language at all.
>
> The min() and max() names are, while possibly could claim they always
> ought to be minx or miny or somesuch amplified naming convention no
> matter what seem perfectly reasonable to use as variable names.  And, of
> course, if one comes from Fortran (listening, Rune??? :) ) where
> function names and variable names are in different name spaces, it's
> perfectly permissible

So you are saying that it is not the programming language
but the programmer's experience that determinec what features
he will be allowed to use in his programs...?

> (altho I don't recommend it, it makes one not
> consider as carefully as otherwise might) in picking names.

This is the strength that C++ offers, which I am not aware
if exists in other languages: Use the types of the arguments
in the function call and allow the *compiler* to determine
exactly what version of the function to link with. Works both
internally in classes and for free functions.

It is an incredibly powerful feature. Once one have tried it,
one will never go back.

Rune

Subject: Error in MIN and MAX

From: dpb

Date: 30 May, 2010 21:00:07

Message: 24 of 46

Rune Allnor wrote:
> On 30 Mai, 15:16, dpb <n...@non.net> wrote:
...
>> The min() and max() names are, while possibly could claim they always
>> ought to be minx or miny or somesuch amplified naming convention no
>> matter what seem perfectly reasonable to use as variable names. And, of
>> course, if one comes from Fortran (listening, Rune??? :) ) where
>> function names and variable names are in different name spaces, it's
>> perfectly permissible
>
> So you are saying that it is not the programming language
> but the programmer's experience that determinec what features
> he will be allowed to use in his programs...?

How do you get that from what I wrote? I simply contrasted the syntax
of Fortran that can from context determine whether MIN() is a function
or array reference and allows both in the same compilation unit whereas,
Matlab, otoh, can't.

Hence, in Matlab it's the programmer's responsibility to either not use
an existing function name or know that they have aliased it. The
language doesn't do much (as in anything) to help other than if the
particular function is in the syntax-coloring list; otherwise it's
completely silent.
...

> This is the strength that C++ offers, which I am not aware
> if exists in other languages: Use the types of the arguments
> in the function call and allow the *compiler* to determine
> exactly what version of the function to link with. Works both
> internally in classes and for free functions.
>
> It is an incredibly powerful feature. Once one have tried it,
> one will never go back.
...

Yes, that is essentially the rule in resolution of Fortran generic
function prototypes to the specific function call (believe it or not...
:) ). And, yes, it is quite a nice feature, agreed.

--

Subject: Error in MIN and MAX

From: dpb

Date: 31 May, 2010 02:16:36

Message: 25 of 46

Matt J wrote:
> dpb <none@non.net> wrote in message
> <httojr$f0t$1@news.eternal-september.org>...
>
>> > I'm actually a bit dumbfounded by how often this occurs. If you're >
>> trying to use the same name for two different things (function and >
>> variable), I tend to think that you really don't know what's going on
>> in > your code.
>>
>> OTOH, given the size of the ML namespace, in some ways my surprise is
>> it doesn't happen even more often... :)
>
> No, the save of the Matlab namespace is not relevant. It is perfectly
> harmless to use i, j, min, max, etc... as variable names as long as you
> don't then try to use them as functions later on in the same workspace.
> The problem only occurs when people deliberately try to use the same
> name for 2 different things in the same mfile.

Well, I think the namespace size _does_ have quite a lot to do with it
myself just from the likelihood standpoint of a name collision.

That aliasing is ok from Matlab syntax standpoint just makes the error
more difficult to catch when it happens.

--

Subject: Error in MIN and MAX

From: Rune Allnor

Date: 31 May, 2010 07:12:49

Message: 26 of 46

On 30 Mai, 23:00, dpb <n...@non.net> wrote:
> Rune Allnor wrote:
> > On 30 Mai, 15:16, dpb <n...@non.net> wrote:
> ...
> >> The min() and max() names are, while possibly could claim they always
> >> ought to be minx or miny or somesuch amplified naming convention no
> >> matter what seem perfectly reasonable to use as variable names.  And, of
> >> course, if one comes from Fortran (listening, Rune??? :) ) where
> >> function names and variable names are in different name spaces, it's
> >> perfectly permissible
>
> > So you are saying that it is not the programming language
> > but the programmer's experience that determinec what features
> > he will be allowed to use in his programs...?
>
> How do you get that from what I wrote?

Because you said "if one comes from Fortran [...] it permissible..."
but without stating what language you ara discussing. You have worked
with fortran, I have not. Indicating that you could use these
techniques in any other language, wheras I can not.

It's a ridiculous statement, so I wonder if you really mean it.

...
> > It is an incredibly powerful feature. Once one have tried it,
> > one will never go back.
>
> ...
>
> Yes, that is essentially the rule in resolution of Fortran generic
> function prototypes to the specific function call (believe it or not...
> :) ).  And, yes, it is quite a nice feature, agreed.

So they got one thing right. (When did that happen? From the outset
in the early '50s? Some time afterwards? Maybe after C++ demonstrated
the technique's power?

Too bad, then, that fortran sufferes from just about every other
weakness, flaw and blunder in the book.

Rune

Subject: Error in MIN and MAX

From: dpb

Date: 31 May, 2010 12:31:45

Message: 27 of 46

Rune Allnor wrote:
> On 30 Mai, 23:00, dpb <n...@non.net> wrote:
>> Rune Allnor wrote:
>>> On 30 Mai, 15:16, dpb <n...@non.net> wrote:
>> ...
>>>> The min() and max() names are, while possibly could claim they always
>>>> ought to be minx or miny or somesuch amplified naming convention no
>>>> matter what seem perfectly reasonable to use as variable names. And, of
>>>> course, if one comes from Fortran (listening, Rune??? :) ) where
>>>> function names and variable names are in different name spaces, it's
>>>> perfectly permissible
>>> So you are saying that it is not the programming language
>>> but the programmer's experience that determinec what features
>>> he will be allowed to use in his programs...?
>> How do you get that from what I wrote?
>
> Because you said "if one comes from Fortran [...] it permissible..."
> but without stating what language you ara discussing. You have worked
> with fortran, I have not. Indicating that you could use these
> techniques in any other language, wheras I can not.
>
> It's a ridiculous statement, so I wonder if you really mean it.

_WHAT_??? How else could one think of anything except Matlab as that
was what the subject was about and simply a reference to a user who had
Fortran experience?

And, what statement is ridiculous in your view and why is it so? I
meant (and still mean) everything I said; there may be a
misunderstanding here, I expect there is.

  ...
>>> It is an incredibly powerful feature. Once one have tried it,
>>> one will never go back.
>> ...
>>
>> Yes, that is essentially the rule in resolution of Fortran generic
>> function prototypes to the specific function call (believe it or not...
>> :) ). And, yes, it is quite a nice feature, agreed.
>
> So they got one thing right. (When did that happen? From the outset
> in the early '50s? Some time afterwards? Maybe after C++ demonstrated
> the technique's power?

Well, at that point, did C++ have generic procedures, either? Of course
not.

It became part of the Standard in the F90 Standard cycle (which is about
20 years ago if you hadn't noticed, so it isn't exactly brand new)...

> Too bad, then, that fortran sufferes from just about every other
> weakness, flaw and blunder in the book.

Excepting, of course, that for the most part for scientific computing
higher level programming languages, Fortran wrote the book... :)

Again, if you didn't know that Fortran has had generic procedures for 20
years you're demonstrating that your complaints are still 40 years out
of date. At least have _some_ knowledge of that against which you rant.

--

Subject: Error in MIN and MAX

From: dpb

Date: 31 May, 2010 12:52:03

Message: 28 of 46

dpb wrote:
...

>> Because you said "if one comes from Fortran [...] it permissible..."
>> but without stating what language you ara discussing. You have worked
>> with fortran, I have not. Indicating that you could use these
>> techniques in any other language, wheras I can not.
>>
>> It's a ridiculous statement, so I wonder if you really mean it.
>
> _WHAT_??? How else could one think of anything except Matlab as that
> was what the subject was about and simply a reference to a user who had
> Fortran experience?
>
> And, what statement is ridiculous in your view and why is it so? I
> meant (and still mean) everything I said; there may be a
> misunderstanding here, I expect there is.

...

OK, it dawned on me where the problem lies...it's in the snipping that's
the clue.

First, it seemed clear to me that by saying "if one comes from Fortran"
that the implication is that the "where" something is permissible refers
to Fortran syntax/rules. What you snipped was (and is) pertinent in
that it states that Fortran parsing is such that a function reference
and array reference of the same spelling (name) in the same compilation
unit (program/subroutine/function) are discernible from each other
(don't occupy same name space). That was contrasted to the problem
under discussion of Matlab where specifically min() and max() were
aliased by being used a variables hence aliasing the Matlab functions of
the same name. That aliasing wouldn't happen in Fortran even if one
made an array named one of these to hold the column-wise minimums
(although I went on to say I wouldn't consider it good practice to do so).

That help???

--

Subject: Error in MIN and MAX

From: Rune Allnor

Date: 31 May, 2010 13:05:04

Message: 29 of 46

On 31 Mai, 14:52, dpb <n...@non.net> wrote:
> dpb wrote:
>
> ...
>
> >> Because you said "if one comes from Fortran [...] it permissible..."
> >> but without stating what language you ara discussing. You have worked
> >> with fortran, I have not. Indicating that you could use these
> >> techniques in any other language, wheras I can not.
>
> >> It's a ridiculous statement, so I wonder if you really mean it.
>
> > _WHAT_???  How else could one think of anything except Matlab as that
> > was what the subject was about and simply a reference to a user who had
> > Fortran experience?
>
> > And, what statement is ridiculous in your view and why is it so?  I
> > meant (and still mean) everything I said; there may be a
> > misunderstanding here, I expect there is.
>
> ...
>
> OK, it dawned on me where the problem lies...it's in the snipping that's
> the clue.

No, it isn't. It's the statement. The whole excerpt:

>> if one comes from Fortran (listening, Rune??? :) ) where
>> function names and variable names are in different name spaces, it's
>> perfectly permissible

You assign the property to the programmer: "If one comes from
fortran..." Somebody who have previous experience with fortran
is permitted to whatever; somebody who does not have that
experience ("does not come from fortran") are denied those
permissions.

You do *not* say that "In fortran it is permissible to..." which
would make sense.

Rune

Subject: Error in MIN and MAX

From: dpb

Date: 31 May, 2010 13:42:37

Message: 30 of 46

Rune Allnor wrote:
> On 31 Mai, 14:52, dpb <n...@non.net> wrote:
>> dpb wrote:
>>
>> ...
>>
>>>> Because you said "if one comes from Fortran [...] it permissible..."
>>>> but without stating what language you ara discussing. You have worked
>>>> with fortran, I have not. Indicating that you could use these
>>>> techniques in any other language, wheras I can not.
>>>> It's a ridiculous statement, so I wonder if you really mean it.
>>> _WHAT_??? How else could one think of anything except Matlab as that
>>> was what the subject was about and simply a reference to a user who had
>>> Fortran experience?
>>> And, what statement is ridiculous in your view and why is it so? I
>>> meant (and still mean) everything I said; there may be a
>>> misunderstanding here, I expect there is.
>> ...
>>
>> OK, it dawned on me where the problem lies...it's in the snipping that's
>> the clue.
>
> No, it isn't. It's the statement. The whole excerpt:
>
>>> if one comes from Fortran (listening, Rune??? :) ) where
>>> function names and variable names are in different name spaces, it's
>>> perfectly permissible
>
> You assign the property to the programmer: "If one comes from
> fortran..." Somebody who have previous experience with fortran
> is permitted to whatever; somebody who does not have that
> experience ("does not come from fortran") are denied those
> permissions.
>
> You do *not* say that "In fortran it is permissible to..." which
> would make sense.

No, _again_ you judiciously snipped to make your context...

I said (w/o the aside) "if one comes from Fortran where...". The
"where" immediately follows Fortran so it is clearly referring to the
language and simply it is that one has that as a background that is implied.

And, of course, even if one were to take your stretched connotation of
it being the programmer, what, pray tell, would set the Fortran
programmer apart from any other if it weren't the syntax rules of the
language from whence his/her experience came? Hence, the same
conclusion must be drawn even under that parsing.

And, w/ that semantic nit-picking, I'm outta' here on this thread.

I would simply ask that you just hold the vitriol on Fortran though; it
is clearly simply a visceral knee-jerk reaction you were taught at some
point and has no bearing on the current language which you have stated
you know nothing about. There's no point in continuing a feud against a
no-longer-pertinent 40-yr old target.

I only respond to set the record straight on what is current as opposed
to the impression you try to leave that all FORTRAN must look like F66
or perhaps some F77 as that simply is not true.

--

Subject: Running checkvars in the background

From: Bjorn Gustavsson

Date: 31 May, 2010 14:26:03

Message: 31 of 46

"freund@mail.biu.ac.il" <freund@mail.biu.ac.il> wrote in message <2019061764.250670.1275239223055.JavaMail.root@gallium.mathforum.org>...
> Dear Mike,
>
> Is there a way to turn on <checkvars> and have it run in the background until turned off? I
> tested one of my functions that I use all the time by inserting checkvars as the last line,
> and was amazed to find four instances of shadowing that involved three obscure Matlab
> functions such as Zb, and a function that I wrote years ago and had stupidly named G1.
> After the test I decided the shadowing was in these cases innocuous, and deleted
> checkvars. But it is obviously not practical to check all my functions this way. In many
> cases functions are deeply nested, and shadowing could have the potential to produce
> undetected errors. Ideally, checkvars would tell you the name of the m-file and the line
> number.
>
Mmaybe you can build something along these lines:

% At the top of your function:
persistent Checked_for_var_shadowing_yet

% Then at the end:
if ~exist('Checked_for_var_shadowing_yet')
  % want to test for two different calling variants
  Checked_for_var_shadowing_yet = [0,0];
end
if ~all(Checked_for_var_shadowing_yet)
  
  checkvars
  % Something based on the input arguments:
  if nargin == 3
    Checked_for_var_shadowing_yet(1) = 1;
  else
    Checked_for_var_shadowing_yet(2) = 1;
  end
end

HTH,
Bjeorn

Subject: Error in MIN and MAX

From: Rune Allnor

Date: 31 May, 2010 15:06:31

Message: 32 of 46

On 31 Mai, 15:42, dpb <n...@non.net> wrote:

> I would simply ask that you just hold the vitriol on Fortran though;

So why are you picking the fight in the first place?

Rune

Subject: Running checkvars in the background

From: freund@mail.biu.ac.il

Date: 31 May, 2010 15:29:31

Message: 33 of 46

Dear Bjeorn,

Thanks for the suggestion, which might be OK for new functions, but still leaves the problem of a very large number of old functions that need to be checked.

Ize

Subject: Running checkvars in the background

From: Bjorn Gustavsson

Date: 31 May, 2010 16:18:05

Message: 34 of 46

"freund@mail.biu.ac.il" <freund@mail.biu.ac.il> wrote in message <1738720352.255215.1275319801817.JavaMail.root@gallium.mathforum.org>...
> Dear Bjeorn,
>
> Thanks for the suggestion, which might be OK for new functions, but still leaves the
> problem of a very large number of old functions that need to be checked.
>
Well, maybe they aren't _that_ very many? If they are in the 50-s you could do it manually. If you have someone skilled in perl or awk or some similar tools I guess you could get that kind of snippet inserted automatically. To cat the "usage" part onto the end of all functions you could do in matlab I'm sure. Take a look at the fex for files that does automatic modifications of m-files. Should be something for insertion of for example copyright notices or the like.

HTH,
Bjeorn

Subject: Error in MIN and MAX

From: Steve Amphlett

Date: 31 May, 2010 16:29:07

Message: 35 of 46

dpb <none@non.net> wrote in message <httmnf$76r$1@news.eternal-september.org>...
> Steve Amphlett wrote:
> > "Matt Fig" <spamanon@yahoo.com> wrote in message
> > <hts20o$vt$1@fred.mathworks.com>...
> >> It must be a slow day when a masking variable thread stays in the top
> >> 5 for hours on end...
> >
> > I still think it's a huge problem with the Matlab language. A massive
> > booby-trap sitting there, waiting. A bit like Fortran's implicit
> > declaration of miss-spelled variables ...
>
> "IMPLICIT NONE"
>
> > ... or variables truncated by the 72'nd column cut-off.
>
> free-form source format...

Ah yes, the "complicit nun". Something many hackers don't initially bother about and stick it in later, having been burned.

Free-form source format is probably OK if you only have one compiler to worry about. When you have 7 (5 UNIXes, Linux and Windows), you need to code to the lowest common denominator. As recently as 1995, IBM's xlf had no abilty to go beyond the 72'nd column - we had to use a line-splitter to build our free-form source on that platform. Worse, most Fortran compilers don't warn if you forget the switches to allow "extended source", they just truncate.

I'm with Rune on C++. It is so strongly typed that in general, if it will compile, it will work as planned. The compiler tells you where your mistakes are; you fix them; it works.

Subject: Error in MIN and MAX

From: dpb

Date: 31 May, 2010 17:51:48

Message: 36 of 46

Rune Allnor wrote:
> On 31 Mai, 15:42, dpb <n...@non.net> wrote:
>
>> I would simply ask that you just hold the vitriol on Fortran though;
>
> So why are you picking the fight in the first place?
>

I'm only responding when you go off on the diatribe -- there was a
little chuckle aside earlier in the thread just for grins but as the
smiley showed, that's all it was.

You made a response that was reasoned to which I pointed out that
Fortran also has generic procedures. In your response to that you then
went off on the rant. It would have been find w/o that, I can take the
misunderstandings of reading/interpretation but I don't see it as being
fruitful to make such mindless assertions of the shortcomings of FORTRAN
as of 30-40 years ago and I'll continue to refute those when made.

If you'd just stop doing that, I'd be content. If you want to have a
real discussion on the merits of Fortran vis a vis any other language
and the difficulties in implementation of new features while retaining
as much compatibility with prior Standards (or even argue that there's
no place for evolutionary improvement but that every advance has to be
from a totally new design standpoint w/o consideration of existing
codebase), that discussion belongs somewhere else than cssm.

Certainly there are known issues with implementing new features in
Fortran and I doubt that there is any present or former member of J3
that thinks that the choices made are universally the best way to have
proceeded even to this point. That some features would have been added
differently if not for that constraint is also true. But, there are
enough people that see the value in existing code and in maintaining
compatibility to that code base that there has been and continues to be
sufficient interest to have released two major Standards (F90 and F03)
and a smaller revision F95 while F2008 is nearing completion/acceptance
voting (or it may already been approved, I'm not exactly sure where in
the cycle it is at the moment). And, obviously, it would be of little
point in doing that if vendors weren't producing compilers implementing
those revised Standards. And vendors are doing so.

The point being, as I (and some others) have made before, the FORTRAN of
your criticism is NOT the current state of Fortran and by making such
blatantly uninformed pronouncements you're not helping anybody.

--

Subject: Error in MIN and MAX

From: Rune Allnor

Date: 31 May, 2010 18:49:32

Message: 37 of 46

On 31 Mai, 19:51, dpb <n...@non.net> wrote:
> Rune Allnor wrote:
> > On 31 Mai, 15:42, dpb <n...@non.net> wrote:
>
> >> I would simply ask that you just hold the vitriol on Fortran though;
>
> > So why are you picking the fight in the first place?
>
> I'm only responding when you go off on the diatribe -- there was a
> little chuckle aside earlier in the thread just for grins but as the
> smiley showed, that's all it was.

Was it?

> You made a response that was reasoned to which I pointed out that
> Fortran also has generic procedures.  In your response to that you then
> went off on the rant.

What rant? You made a ridiculous statement and I called you on it.
I don't know why you don't post under your own name, so I can only
guess that your native language is English.

I can only imagine how it might feel to be taught linguistic
subtleties of your native language by a foreigner half your age.
Is *that* what's bothering you?

If so, take it up with the guy you see in the mirror. Not me.

> It would have been find w/o that, I can take the
> misunderstandings of reading/interpretation but I don't see it as being
> fruitful to make such mindless assertions of the shortcomings of FORTRAN
> as of 30-40 years ago and I'll continue to refute those when made.

Who have said anything about fortran as of 40 years ago?

> If you'd just stop doing that, I'd be content.

Who have said anything about fortran as of 40 years ago?

> If you want to have a
> real discussion on the merits of Fortran vis a vis any other language
> and the difficulties in implementation of new features while retaining
> as much compatibility with prior Standards (or even argue that there's
> no place for evolutionary improvement but that every advance has to be
> from a totally new design standpoint w/o consideration of existing
> codebase), that discussion belongs somewhere else than cssm.

Sure. I have stated very clearly in other threads what
my position on fortran is: Fortran is an obsolete language
that, while of significant hoistorical importance, is
only interesting for its considerable legacy code base.
Youngsters and novices who ask questions here about fortran
ought to be made aware of that fact, and not tricked into
wasting time and effort on long since obsolete languages.

> Certainly there are known issues with implementing new features in
> Fortran and I doubt that there is any present or former member of J3
> that thinks that the choices made are universally the best way to have
> proceeded even to this point.  That some features would have been added
> differently if not for that constraint is also true.  But, there are
> enough people that see the value in existing code and in maintaining
> compatibility to that code base that there has been and continues to be
> sufficient interest to have released two major Standards (F90 and F03)
> and a smaller revision F95 while F2008 is nearing completion/acceptance
> voting (or it may already been approved, I'm not exactly sure where in
> the cycle it is at the moment).  And, obviously, it would be of little
> point in doing that if vendors weren't producing compilers implementing
> those revised Standards.  And vendors are doing so.
>
> The point being, as I (and some others) have made before, the FORTRAN of
> your criticism is NOT the current state of Fortran and by making such
> blatantly uninformed pronouncements you're not helping anybody.

Sure. I have stated very clearly in other threads what
my position on fortran is: Fortran is an obsolete language
that, while of significant hoistorical importance, is
only interesting for its considerable legacy code base.
Youngsters and novices who ask questions here about fortran
ought to be made aware of that fact, and not tricked into
wasting time and effort on long since obsolete languages.

Others have explained their hands-on experiences with fortran,
experiences that pretty much coincide with what I observed
with my colleagues who used fortran. The presence of a standard
does not mean much if it is not respected. The presence of a
standard does not mean much if it only rubber-stamps everything
that has been done so far. The presence of a standard does not
mean much without a clear philosophy about how to proceed in the
future.

In case you haven't noticed, I have stated very clearly in
other threads what my position on fortran is: Fortran is an
obsolete language that, while of significant hoistorical
importance, is only interesting for its considerable legacy
code base. Youngsters and novices who ask questions here about
fortran ought to be made aware of that fact, and not tricked
into wasting time and effort on long since obsolete languages.

Rune

Subject: Error in MIN and MAX

From: Walter Roberson

Date: 31 May, 2010 19:34:54

Message: 38 of 46

Rune Allnor wrote:

> Sure. I have stated very clearly in other threads what
> my position on fortran is: Fortran is an obsolete language
> that, while of significant hoistorical importance, is
> only interesting for its considerable legacy code base.
> Youngsters and novices who ask questions here about fortran
> ought to be made aware of that fact, and not tricked into
> wasting time and effort on long since obsolete languages.

You have indicated that you do not know Fortran, and what you do describe of
it reflects at best the state of Fortran up to 1977 (33 years ago). What
_have_ you studied in this matter that might give people reason to believe
that you are competent to judge this matter?


 > I can only imagine how it might feel to be taught linguistic
 > subtleties of your native language by a foreigner half your age.
 > Is *that* what's bothering you?

One of the aspects of English is that a comma can indicate a pause to catch
one's breath (mentally or physically), which is the way that dpb used in in
his sentence. Using the comma that way is not encouraged in written work, but
it is recognized (especially in connection with transcription of verbal material.)

English has very few rules that have no accepted exceptions. English was not
"designed": it evolved through a number of cultural clashes, with Latin (Roman
official language), Vulgar Latin (the language of the Roman people), Greek,
Scot, Angle, Saxon, Old Norse, French and German all making marked
contributions to the structure and vocabulary of the language. There is no
standardization body for it, and very few people consciously learn all the
known "rules" (though they may employ the rules without knowing the reasons).
English has been referred to as one of the hardest languages in the world to
learn.

Subject: Error in MIN and MAX

From: Rune Allnor

Date: 31 May, 2010 20:22:37

Message: 39 of 46

On 31 Mai, 21:34, Walter Roberson <rober...@hushmail.com> wrote:
> Rune Allnor wrote:
> > Sure. I have stated very clearly in other threads what
> > my position on fortran is: Fortran is an obsolete language
> > that, while of significant hoistorical importance, is
> > only interesting for its considerable legacy code base.
> > Youngsters and novices who ask questions here about fortran
> > ought to be made aware of that fact, and not tricked into
> > wasting time and effort on long since obsolete languages.
>
> You have indicated that you do not know Fortran, and what you do describe of
> it reflects at best the state of Fortran up to 1977 (33 years ago). What
> _have_ you studied in this matter that might give people reason to believe
> that you are competent to judge this matter?

I have compared fortran's role as a programming language
with the steam engine: Of significant historical importance
but obsolete by today. Would you accept such a claim about
steam engines from somebody who does not have hands-on
experience with them?

If 'yes' - on what grounds?

>  > I can only imagine how it might feel to be taught linguistic
>  > subtleties of your native language by a foreigner half your age.
>  > Is *that* what's bothering you?
>
> One of the aspects of English is that a comma can indicate a pause to catch
> one's breath (mentally or physically), which is the way that dpb used in in
> his sentence. Using the comma that way is not encouraged in written work, but
> it is recognized (especially in connection with transcription of verbal material.)

Do I have to educate *two* native English-speakers on the matter?
Do you comment on my criticism, which from your writings I have no
reason to believe you have read? Or do you catch on to dpb's
misunderstanding of what I criticized him of?

Commas are irrelevant towhat I criticized in dpb's post. *Read* his
post; contemplate the semantics. Selection of words. Phrasings.

Again, I have commented extensively on what I reacted on in a
different post, so I won't repeat it here. All it takes is that
you *read* it.

Rune

Subject: Error in MIN and MAX

From: dpb

Date: 31 May, 2010 20:50:35

Message: 40 of 46

Rune Allnor wrote:
> On 31 Mai, 19:51, dpb <n...@non.net> wrote:
>> Rune Allnor wrote:
>>> On 31 Mai, 15:42, dpb <n...@non.net> wrote:
>>>> I would simply ask that you just hold the vitriol on Fortran though;
>>> So why are you picking the fight in the first place?
>> I'm only responding when you go off on the diatribe -- there was a
>> little chuckle aside earlier in the thread just for grins but as the
>> smiley showed, that's all it was.
>
> Was it?

You're saying it wasn't? A :) indicated a certain amount of levity
intended afaik...

>> You made a response that was reasoned to which I pointed out that
>> Fortran also has generic procedures. In your response to that you then
>> went off on the rant.
>
> What rant? ...
...

_WHAT_ rant....???? [Book-long rantings elided...]

Whoa, chill, dood!!!

Sorry if pointing out the interpretation of the sentence bugs you, but
that's a little over the top methinks.

--

Subject: Error in MIN and MAX

From: Rune Allnor

Date: 31 May, 2010 21:03:46

Message: 41 of 46

On 31 Mai, 22:50, dpb <n...@non.net> wrote:
> Rune Allnor wrote:
> > On 31 Mai, 19:51, dpb <n...@non.net> wrote:
> >> Rune Allnor wrote:
> >>> On 31 Mai, 15:42, dpb <n...@non.net> wrote:
> >>>> I would simply ask that you just hold the vitriol on Fortran though;
> >>> So why are you picking the fight in the first place?
> >> I'm only responding when you go off on the diatribe -- there was a
> >> little chuckle aside earlier in the thread just for grins but as the
> >> smiley showed, that's all it was.
>
> > Was it?
>
> You're saying it wasn't?  A :) indicated a certain amount of levity
> intended afaik...

...about as much as a five-year-old thinks "it was a joke!"
alleviates him after yanking somebody's chain.

Rune

Subject: Error in MIN and MAX

From: Roger Stafford

Date: 31 May, 2010 21:32:04

Message: 42 of 46

Rune Allnor <allnor@tele.ntnu.no> wrote in message <cada408f-977b-4a0b-aa14-a8127eaab547@v18g2000vbc.googlegroups.com>...
> On 31 Mai, 22:50, dpb <n...@non.net> wrote:
> > Rune Allnor wrote:
> > > On 31 Mai, 19:51, dpb <n...@non.net> wrote:
> > >> Rune Allnor wrote:
> > >>> On 31 Mai, 15:42, dpb <n...@non.net> wrote:
> > >>>> I would simply ask that you just hold the vitriol on Fortran though;
> > >>> So why are you picking the fight in the first place?
> > >> I'm only responding when you go off on the diatribe -- there was a
> > >> little chuckle aside earlier in the thread just for grins but as the
> > >> smiley showed, that's all it was.
> >
> > > Was it?
> >
> > You're saying it wasn't?  A :) indicated a certain amount of levity
> > intended afaik...
>
> ...about as much as a five-year-old thinks "it was a joke!"
> alleviates him after yanking somebody's chain.
>
> Rune

  Hey, Rune and dpb, how about declaring a truce? You are both great guys and it seems a shame that two such experienced individuals as yourselves who have each contributed so much to people asking for help on this newsgroup should waste so much energy engaging in this particular disagreement. I predict that if you do, by tomorrow after the ruffled feathers have been smoothed out, it will all seem like a waste of time to each of you.

  I admit there have been times when I managed to get riled up over issues in this and other groups, but in the long run it is surely self-defeating to carry disagreements beyond a certain point. Remember the warning that is posted above each post entry which reads, "Your message will be read by thousands of MATLAB users worldwide." I would add that these CSSM threads are also read by quite a few other people throughout the world who are not CSSM subscribers.

Roger Stafford

Subject: Error in MIN and MAX

From: Walter Roberson

Date: 31 May, 2010 22:00:42

Message: 43 of 46

Rune Allnor wrote:

> I have compared fortran's role as a programming language
> with the steam engine: Of significant historical importance
> but obsolete by today. Would you accept such a claim about
> steam engines from somebody who does not have hands-on
> experience with them?
>
> If 'yes' - on what grounds?

I would only consider accepting such a claim from someone who had studied
steam engines enough to know their strengths and weaknesses. Especially as
steam engines are not obsolete today, though they are not as common as they
once were. Different applications have different needs.

You have not even claimed to have studied programming language design or
computing theory.


I work in scientific research, currently on building experimental programs for
which efficiency and generality and extendability and maintainability is not
as important as the practical matter of getting something working. We do the
infrastructure development in Matlab because it is a decent prototyping
language. The parts where speed are important get done in C or C++ or Fortran.

The process of development of scientific ideas does not consider ability of
the average human to understand the source to be overly important, at least
not for the work of small teams -- after all, the average human (and average
programmer) would not understand the math or science anyhow. Get an idea
implemented and test it out: when the 95% of ideas that don't work or don't
work better enough to bother have been weeded out, *then* it is time to worry
about longer term goals. That doesn't mean that we write needlessly messy code
-- but it does mean that we recognize the value of multiple tools and use
whatever is best suited at the time for getting something accomplished.


> Do I have to educate *two* native English-speakers on the matter?
> Do you comment on my criticism, which from your writings I have no
> reason to believe you have read? Or do you catch on to dpb's
> misunderstanding of what I criticized him of?
>
> Commas are irrelevant towhat I criticized in dpb's post. *Read* his
> post; contemplate the semantics. Selection of words. Phrasings.

I read his posts; I read your posts. You assume words that are not present. I
understood his meaning immediately, the first time I read his words.

Subject: Error in MIN and MAX

From: us

Date: 31 May, 2010 22:25:19

Message: 44 of 46

"Roger Stafford" <ellieandrogerxyzzy@mindspring.com.invalid> wrote in message <hu19sj$e4b$1@fred.mathworks.com>...
> Rune Allnor <allnor@tele.ntnu.no> wrote in message <cada408f-977b-4a0b-aa14-a8127eaab547@v18g2000vbc.googlegroups.com>...
> > On 31 Mai, 22:50, dpb <n...@non.net> wrote:
> > > Rune Allnor wrote:
> > > > On 31 Mai, 19:51, dpb <n...@non.net> wrote:
> > > >> Rune Allnor wrote:
> > > >>> On 31 Mai, 15:42, dpb <n...@non.net> wrote:
> > > >>>> I would simply ask that you just hold the vitriol on Fortran though;
> > > >>> So why are you picking the fight in the first place?
> > > >> I'm only responding when you go off on the diatribe -- there was a
> > > >> little chuckle aside earlier in the thread just for grins but as the
> > > >> smiley showed, that's all it was.
> > >
> > > > Was it?
> > >
> > > You're saying it wasn't?  A :) indicated a certain amount of levity
> > > intended afaik...
> >
> > ...about as much as a five-year-old thinks "it was a joke!"
> > alleviates him after yanking somebody's chain.
> >
> > Rune
>
> Hey, Rune and dpb, how about declaring a truce? You are both great guys and it seems a shame that two such experienced individuals as yourselves who have each contributed so much to people asking for help on this newsgroup should waste so much energy engaging in this particular disagreement. I predict that if you do, by tomorrow after the ruffled feathers have been smoothed out, it will all seem like a waste of time to each of you.
>
> I admit there have been times when I managed to get riled up over issues in this and other groups, but in the long run it is surely self-defeating to carry disagreements beyond a certain point. Remember the warning that is posted above each post entry which reads, "Your message will be read by thousands of MATLAB users worldwide." I would add that these CSSM threads are also read by quite a few other people throughout the world who are not CSSM subscribers.
>
> Roger Stafford

i fully second roger's reply...

most seasoned senior CSSMers duane bozarth and rune allnor:
PLEASE(!!!!!)...
shake hands and go on with a smile...

urs

Subject: Error in MIN and MAX

From: Steven Lord

Date: 1 Jun, 2010 18:06:12

Message: 45 of 46


"Matt J " <mattjacREMOVE@THISieee.spam> wrote in message
news:htrmdk$rcn$1@fred.mathworks.com...
> "Matt J " <mattjacREMOVE@THISieee.spam> wrote in message
> <htrlad$im4$1@fred.mathworks.com>...
>
>> Then, as the first line of code in the file, add
>>
>> myMin=@min;
>
> Make that
>
> myMin=eval('@min'); %a deliberately horrible use of eval

Or you can avoid EVAL:

myMin = str2func('min');

Or you can force MATLAB to invoke the built-in MIN function:

myMin = @(x) builtin('min', x);

But the easiest way to avoid this problem is not to try to use an identifier
as both a function and a variable. I understand it can be difficult to
remember in a very long program whether you've used a particular identifier
already. One solution to that is to avoid writing very long programs and
instead to write functions that fit on one or two pages and invoke each
function in turn.

--
Steve Lord
slord@mathworks.com
comp.soft-sys.matlab (CSSM) FAQ: http://matlabwiki.mathworks.com/MATLAB_FAQ
To contact Technical Support use the Contact Us link on
http://www.mathworks.com

Subject: Error in MIN and MAX

From: Steven Lord

Date: 1 Jun, 2010 18:18:06

Message: 46 of 46


"Matt Fig" <spamanon@yahoo.com> wrote in message
news:hts20o$vt$1@fred.mathworks.com...
> It must be a slow day when a masking variable thread stays in the top 5
> for hours on end...

Well, the fact that the original post in this thread was posted on the
Saturday of a three-day holiday weekend in both the US (Memorial Day; see
http://en.wikipedia.org/wiki/Memorial_Day) and the UK (Spring Bank Holiday;
see http://en.wikipedia.org/wiki/Bank_holiday) may have something to do with
that.

--
Steve Lord
slord@mathworks.com
comp.soft-sys.matlab (CSSM) FAQ: http://matlabwiki.mathworks.com/MATLAB_FAQ
To contact Technical Support use the Contact Us link on
http://www.mathworks.com

Tags for this Thread

What are tags?

A tag is like a keyword or category label associated with each thread. Tags make it easier for you to find threads of interest.

Anyone can tag a thread. Tags are public and visible to everyone.

Contact us